我正在写一个JS lexer以获得乐趣,而且只有一件缺失:可以咀嚼正则表达式的部分。
例如,以下有效的JS代码:/ab+c/;
JS lexer如何知道它是在处理正则表达式还是用于处理正则表达式
[Operator('/'), Identifier('ab'), Operator('+'), Identifier('c'), Operator('/'), Semicolon]
?
答案 0 :(得分:3)
好吧,词法分析者不能。这是解析器应该做的事情。JS lexer如何知道它是处理正则表达式还是[内部带有
operator /
的某个表达式]?
答案 1 :(得分:0)
你需要实现一个包含解析正则表达式的词法语法。根据{{3}},“ECMA Script documenation”中给出了ECMAScript的RegExp语法:
"The form and functionality of regular expressions is modeled
after the regular expression facility in the Perl 5 programming language."
另请参阅:15.10