Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作;“打印”;语句打印多个字符串Javascript?_Javascript_Jquery_Regex_Interpreter - Fatal编程技术网

如何制作;“打印”;语句打印多个字符串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+“是我的号码”
到目前为止,我已经尝试了一些东西并构建了一些东西,但我有两个问题:

  • 首先,我尝试构建一个新的print regexp:

    /^*打印+(?:“([^”]*)”|([a-zA-Z]\w*)*(*)$/

  • 因此,这将与print语句匹配,第一个参数可以是字符串(“”)或变量名。然后使用
    (.*)
    我试图捕获所有其他变量或字符串,并在以后使用它们。(我想构建一个while循环)。 但我的问题是,当我进行匹配时,它会输出一个空值。因此,当我进行
    alert(t)
    时,
    t[2]
    值为空(,)

  • 第二个问题是,我无法测试print的第一个参数是变量还是字符串。我尝试了以下方法:
    t1=t[1]。匹配(rxString);
    但它输出空值(因为实际上它搜索
    “”
    ,但当保存在
    (t)
    中时,它们将从字符串中删除)
  • 这是我的


    请你帮我解决这个问题好吗?提前谢谢

    构建只有正则表达式的解释器既困难又不可能。你可能更愿意标记你的输入(例如,在空格处分割+在某些选定的特殊字符之前/之后),然后分别检测和处理每个标记

    如果你想变得更复杂,你当然应该为你的语言定义一个语法,并使用像PEG.js这样的库来匹配它,正如@peter schneider指出的那样

    通过标记是以
    还是以
    开头,您应该能够非常轻松地检测字符串文字:

    if (token[0] == '"' || token[1] == '\'') { /* ... */ }
    

    我建议你使用Javascript解析器生成器来实现你想要的…谢谢@opatut。事实上,我试图用正则表达式来构建它。但是你能给我推荐一些好的文档和实用的例子吗?我从哪里开始学习peg.js?尽管我在它的网站上找到了文件?