如何使用JavaScript/jQuery解释textarea中的字符串?
我正在尝试用JavaScript/jQuery制作一个小的解释程序。所以我想要的是,当用户在文本区域中输入一些文本时,程序应该解释该文本并在另一个文本区域中打印输出。 到目前为止,我已经做到了: 有了它,我能够捕捉到用户在文本区域中输入的每个字符串。但现在我希望,当用户例如输入:如何使用JavaScript/jQuery解释textarea中的字符串?,javascript,jquery,interpreter,Javascript,Jquery,Interpreter,我正在尝试用JavaScript/jQuery制作一个小的解释程序。所以我想要的是,当用户在文本区域中输入一些文本时,程序应该解释该文本并在另一个文本区域中打印输出。 到目前为止,我已经做到了: 有了它,我能够捕捉到用户在文本区域中输入的每个字符串。但现在我希望,当用户例如输入: number a =1 number b=2 number sum=0 sum =a +b print sum 在这种情况下,程序应对此进行解释,输出应为3。 谁能告诉我怎么做?我正在考虑构建一个二维数组,并将每一
number a =1
number b=2
number sum=0
sum =a +b
print sum
在这种情况下,程序应对此进行解释,输出应为3
。
谁能告诉我怎么做?我正在考虑构建一个二维数组,并将每一行保存在那里(每一行都有类型、名称和值),然后使用该数组进行计算。
我将感谢任何帮助。先谢谢你
更新
我使用了我的示例,特别是print语句。我可以打印多个字符串或变量(与+)连接),如果缺少+,则可以打印错误消息。
我现在有两个问题:
#errors
text区域中显示该消息):
a=240
b=120
打印a+c
输出为240未定义
\iri
代替“\n”,以便print语句转到新行。我已经做了这件事
var result2=result1.replace('\iri','\n')代码>但它不起作用
我解决了第二个问题。这是你的电话号码。你能帮我做第一个吗?这不是编译器/解释器的编写方式,但对于一种简单的语言来说应该是这样的:
print "Euclidean algorithm"
a = 240
print "a = " a
b = 360
print "b = " b
if a > 0
while b
if a > b
a = a - b
else
b = b - a
end if
end while
print "gcd: " a
else
print "gcd: " b
end if
/^print([a-z]+)$/
)$(“#output”).append(variablename+”
);
,数学公式根本不需要翻译,只需验证即可)\'
)中转义'
),并用
和
以及可能的其他限制替换
)正确关闭,则不检查)和有意义的错误消息
myProgram=function(){var variables=[];var pOut='';pOut+='Euclidean algorithm\n';variables['a']=240;pOut+='a = '+variables['a']+'\n';variables['b']=360;pOut+='b = '+variables['b']+'\n';if(variables['a']>0){while(variables['b']){if(variables['a']>variables['b']){variables['a']=variables['a']-variables['b'];}else{variables['b']=variables['b']-variables['a'];}}pOut+='gcd: '+variables['a']+'\n';}else{pOut+='gcd: '+variables['b']+'\n';}$('#output').html(pOut);};myProgram();
你为什么要重新发明轮子-这项任务并没有听起来那么简单。
eval
可能会让你有所收获。另一方面:堆栈溢出不是为您创建代码,而是帮助您解决错误或特定问题。请向我们展示您的尝试,我们将看看是否可以改进。另外,看看Matei,这可能意味着已经有一个图书馆在做这件事了。如果你想自己做,那么你需要解析表达式(构建树)并自下而上计算结果。我知道这并不简单,但我正在尝试用自己的语言制作一个简单的解释器,但为了简单起见,我已经用英语写了说明和关键字。你能给我一些提示吗?实现解释器不是一件容易的事。。此外,它对于大型语句也不有效。你为什么要这么做?另外,您没有使用变量的javascript语义,您需要将指令映射到JS指令,这本身就是一项繁琐的工作:)谢谢maraca。我正在尝试这样来构造我的代码。我可以问你一些建议材料,我可以在哪里提高我对JavaScript正则表达式的知识?一个可以玩和学习正则表达式的好网站:事实上,我对正则表达式没有什么好的经验,只是做了一些小任务。谢谢,我会努力做到的this@orsina添加了更多信息,感谢您的接受,我不能强调您必须多么小心,否则有人会做坏事,如果可以的话。@maraca非常感谢。你真的帮了我。我现在正在定义语法,然后构建一个可执行示例……再次非常感谢:)
myProgram=function(){var variables=[];var pOut='';pOut+='Euclidean algorithm\n';variables['a']=240;pOut+='a = '+variables['a']+'\n';variables['b']=360;pOut+='b = '+variables['b']+'\n';if(variables['a']>0){while(variables['b']){if(variables['a']>variables['b']){variables['a']=variables['a']-variables['b'];}else{variables['b']=variables['b']-variables['a'];}}pOut+='gcd: '+variables['a']+'\n';}else{pOut+='gcd: '+variables['b']+'\n';}$('#output').html(pOut);};myProgram();