私は楽しみのために JS lexer を書いていますが、欠けている部分が 1 つだけあります。正規表現を噛むことができる部分です。
たとえば、次の有効な JS コードを見てみましょう。/ab+c/;
JS 字句解析器は、正規表現を扱っているのか、
[Operator('/'), Identifier('ab'), Operator('+'), Identifier('c'), Operator('/'), Semicolon]
.
私は楽しみのために JS lexer を書いていますが、欠けている部分が 1 つだけあります。正規表現を噛むことができる部分です。
たとえば、次の有効な JS コードを見てみましょう。/ab+c/;
JS 字句解析器は、正規表現を扱っているのか、
[Operator('/'), Identifier('ab'), Operator('+'), Identifier('c'), Operator('/'), Semicolon]
.
JS 字句解析器は、正規表現を扱っているのか、[
operator /
内部のある式] を扱っているのかをどのように知ることができますか?
まあ、レクサーはできません。これは、パーサーが行うべきことです。
正規表現の解析を含む字句文法を実装する必要があります。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 字句規則