以下は、正常に動作する ANTLR 文法のスニペットです。
これは、tex パーサーになることを目的としています。
everywhere
コメントを外してルールを変更する| text
と、ANTLR はルールの左再帰を報告しますが、escSeq
これは面白いと思います。
左再帰を見つけることができません。目が見えないか、左再帰とは何かを誤解しています。
助言がありますか?
afterNewline : (everywhere | par );
par : EoL {System.out.println("<PAR>");} afterNewline ;
everywhere : (Esc escSeq //| text
);
escSeq : (
EoL {System.out.println("<cmd:''>");} afterNewline |
Space {System.out.println("<cmd:' '>");} skipSpace |
name=Letter+ {System.out.println("<cmd:"+$name.text+">");} skipSpace |
Other {System.out.println("<cmd:Other>");} inLine // **** Other is too restrictive.
);
text : (Letter | Other) inLine;
skipSpace : (everywhere | (Space|EoL) {System.out.println("<SKIP>");});
inLine : (everywhere | Space | EolInLine);
EolInLine : EoL {System.out.println("<text:' '>");};
texDocument : afterNewline EOF;