从JavaScript代码

时间:2016-03-25 11:27:39

标签: javascript regex compiler-construction

我想在JavaScript / Node中编写一个简单的internpreter。在生成令牌时我遇到了障碍。

var code = 'if (a > 2 && b<4) c = 10;';

code.match(/\W+/g)
// [" (", " > ", " && ", "<", ") ", ";"]

code.match(/\w+/g)
// ["if", "a", "2", "b", "4", "elo"]

如图所示,W+让我获得特殊字符,w+让我得到文字。我想知道如何将它们放在一个数组中,如下所示:

// ["if", "(", "a", ">", "2", "&&", "b", "<", "4", ")", "c", "=", "10", ";"]

1 个答案:

答案 0 :(得分:1)

  

如图所示,W +让我获得特殊字符,w +让我得到文字。   我想知道如何将它们放在一个数组中,如下所示:

只需尝试这个

code.match(/\w+|\W+/g)

将输出显示为

["if", " (", "a", " > ", "2", " && ", "b", "<", "4", ") ", "c", " = ", "10", ";"]

这也将削减代币

var tokens = code.match(/\w+|\W+/g).map(function(value){return value.trim()});