私はANTLRのJavaScript文法(インターネットからのものです)を持っています。これは正規表現のリテラルを除いてすべてをサポートしているようです。ANTLRでJavaScript正規表現を解析する
リテラル正規表現での問題は、あなたが基本的に2つのルール、持っていることです:。
multiplicativeExpression
: unaryExpression (LT!* ('*' | '/' | '%')^ LT!* unaryExpression)*
とルールRegexLiteralCharが通常の表現とは異なるレクサールールを使用しています
regexLiteral
: '/' RegexLiteralChar* '/'
を(例えばA二重引用符はそれを終了しません)。
これは、何らかの形で、パーサーからある種のレクサー状態を変更する必要があることを意味します。これどうやってするの?それも可能ですか?
通信とレクサールールは不可能です。おそらく正規表現リテラルを扱うように見えるこの文法を見てください:http://research.xebic.com/es3/(ZIPファイルをチェックしてください)。 –