可能的重复:
在标记 Javascript 时出现除法/正则表达式冲突
我正在编写一个 JS 词法分析器来取乐,并且只缺少一件:可以在正则表达式中咀嚼的部分。
以以下有效的 JS 代码为例:/ab+c/;
JS 词法分析器如何知道它是在处理正则表达式还是处理
[Operator('/'), Identifier('ab'), Operator('+'), Identifier('c'), Operator('/'), Semicolon]
?
可能的重复:
在标记 Javascript 时出现除法/正则表达式冲突
我正在编写一个 JS 词法分析器来取乐,并且只缺少一件:可以在正则表达式中咀嚼的部分。
以以下有效的 JS 代码为例:/ab+c/;
JS 词法分析器如何知道它是在处理正则表达式还是处理
[Operator('/'), Identifier('ab'), Operator('+'), Identifier('c'), Operator('/'), Semicolon]
?
JS 词法分析器如何知道它是在处理正则表达式还是 [some expression with
operator /
inside]?
好吧,词法分析器不能。这是解析器应该做的事情。
您需要实现包括解析正则表达式的词汇语法。根据 ECMA Script 文档,“ECMAScript 的 RegExp 语法在15.10
”中给出:
"The form and functionality of regular expressions is modeled
after the regular expression facility in the Perl 5 programming language."
另请参阅:ECMAScript 词汇约定