如何制作;“打印”;语句打印多个字符串Javascript?
我正在尝试为打印语句制作一个小型翻译程序。以下是我迄今为止所做工作的演示: 我现在想要达到的是打印与如何制作;“打印”;语句打印多个字符串Javascript?,javascript,jquery,regex,interpreter,Javascript,Jquery,Regex,Interpreter,我正在尝试为打印语句制作一个小型翻译程序。以下是我迄今为止所做工作的演示: 我现在想要达到的是打印与+连接的多个字符串,如: 打印“我的书”+“是”+“xx” 打印a(其中a是可变名称) 打印a+“是我的号码” 到目前为止,我已经尝试了一些东西并构建了一些东西,但我有两个问题: 首先,我尝试构建一个新的print regexp: /^*打印+(?:“([^”]*)”|([a-zA-Z]\w*)*(*)$/ 因此,这将与print语句匹配,第一个参数可以是字符串(“”)或变量名。然后使用(.
+
连接的多个字符串,如:
- 打印“我的书”+“是”+“xx”
- 打印a(其中a是可变名称)
- 打印a+“是我的号码”
/^*打印+(?:“([^”]*)”|([a-zA-Z]\w*)*(*)$/
(.*)
我试图捕获所有其他变量或字符串,并在以后使用它们。(我想构建一个while循环)。
但我的问题是,当我进行匹配时,它会输出一个空值。因此,当我进行alert(t)
时,t[2]
值为空(,)
t1=t[1]。匹配(rxString);
但它输出空值(因为实际上它搜索“”
,但当保存在(t)
中时,它们将从字符串中删除)请你帮我解决这个问题好吗?提前谢谢构建只有正则表达式的解释器既困难又不可能。你可能更愿意标记你的输入(例如,在空格处分割+在某些选定的特殊字符之前/之后),然后分别检测和处理每个标记 如果你想变得更复杂,你当然应该为你的语言定义一个语法,并使用像PEG.js这样的库来匹配它,正如@peter schneider指出的那样 通过标记是以
“
还是以开头,您应该能够非常轻松地检测字符串文字:
if (token[0] == '"' || token[1] == '\'') { /* ... */ }
我建议你使用Javascript解析器生成器来实现你想要的…谢谢@opatut。事实上,我试图用正则表达式来构建它。但是你能给我推荐一些好的文档和实用的例子吗?我从哪里开始学习peg.js?尽管我在它的网站上找到了文件?