字句解析:curLexState
PARSER_BEGIN(Test) public class Test { public static void main(String args[]) throws ParseException { Test parser = new Test(System.in); parser.Input(); } } PARSER_END(Test) SKIP : { <SPACE: " " | "\t" | "\n" | "\r"> } TOKEN : { <A: "a"> { System.out.print("curLexState: "); System.out.println(curLexState); } } MORE : { <B: "b"> { System.out.print("curLexState: "); System.out.println(curLexState); } : S1 } <S1> MORE : { <C: "c"> { System.out.print("curLexState: "); System.out.println(curLexState); } } <S1> TOKEN : { <D: "d"> { System.out.print("curLexState: "); System.out.println(curLexState); } : S2 } <S2> TOKEN : { <E: "e"> { System.out.print("curLexState: "); System.out.println(curLexState); } : DEFAULT } void Input() : { Token t; } { ((t = <A> | t = <D> | t = <E> ))+ <EOF> }
で、
abcde curLexState: 0 curLexState: 0 curLexState: 1 curLexState: 1 curLexState: 2