字句解析:input_stream.get*()
SKIP 内では、matchedToken が使えないから、input_stream.get*() を使うらしい(使う機会は余りなさそうな気もするけど)
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"> { System.out.println("*" + ":" + input_stream.getBeginLine() + ":" + input_stream.getEndLine() + ":" + input_stream.getBeginColumn() + ":" + input_stream.getEndColumn() + ":" + input_stream.GetImage() + "*");; } } TOKEN : { <A: "a"> { System.out.println("*" + matchedToken.kind + ":" + input_stream.getBeginLine() + ":" + input_stream.getEndLine() + ":" + input_stream.getBeginColumn() + ":" + input_stream.getEndColumn() + ":" + matchedToken.image + "*");; } | <B: "b"> { System.out.println("*" + matchedToken.kind + ":" + matchedToken.beginLine + ":" + matchedToken.beginColumn + ":" + matchedToken.endLine + ":" + matchedToken.endColumn + ":" + matchedToken.image + "*");; } } void Input() : {} { ( <A> | <B> )+ <EOF> }
で、
a *2:1:1:1:1:a* *:1:1:2:2: * a b *2:2:2:1:1:a* *:2:2:2:2: * *3:2:3:2:3:b* *:2:2:4:4: *