私は ANTLR で遊んでいて、JavaScript を解析してみることにしました。しかし、オプションの ';' の処理で壁にぶつかりました。その中で、ステートメントの終わりは代わりに改行でマークされています。それはいくつかの簡単な方法で行うことができますか?
うまくいかない簡単な文法の例
grammar optional_newline;
def : statements ;
statements : statement (statement)* ;
statement : expression (';' | '\n') ;
expression : ID | INT | 'var' ID '=' INT ;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
INT : '0'..'9'+ ;
WS : ( ' ' | '\t' | '\r' | '\n') {$channel=HIDDEN;} ;
これを解析できるようにしたい (JavaScript パーサーで解析できる)
var i =
10
10;
PS: パーサー規則を入れたくありませんWS
。レクサーがそれらを取り除くだけであれば、私はもっと幸せになるでしょう。