JavaScript 词法分析器:处理 “/”

JavaScript lexer: dealing with "/"

本文关键字:处理 词法分析器 JavaScript      更新时间:2023-09-26

可能的重复项:
标记化Javascript时的除法/正则表达式冲突

我正在编写一个 JS 词法分析器是为了好玩,只缺少一块:可以在正则表达式中咀嚼的部分。

以以下有效的JS代码段为例:/ab+c/;

JS词法分析器如何知道它是在处理正则表达式还是
[Operator('/'), Identifier('ab'), Operator('+'), Identifier('c'), Operator('/'), Semicolon]

JS词法分析器如何知道它是在处理正则表达式还是[一些内部有operator /的表达式]?

好吧,词法分析器不能。这是解析器应该做的事情。

您需要实现一个包括解析正则表达式的词汇语法。根据 ECMA 脚本文档,"ECMAScript 的正则表达式语法以 15.10 给出":

"The form and functionality of regular expressions is modeled 
after the regular expression facility in the Perl 5 programming language."

参见:ECMAScript Lexical Convention(英语:ECMAScript Lexical Convention)