I know the AST I want to make (I think), which is:
^( STATEMENT alias ( FOREACH rel ( FOREACH_PLAN_SIMPLE ( GENERATE STAR ) ) ) )
so I added the following rule:
realias_statement : alias EQUAL rel SEMI_COLON
-> ^( STATEMENT alias ( FOREACH rel ( FOREACH_PLAN_SIMPLE ( GENERATE STAR ) ) ) )
;
However, when I try to compile this, I get the following errors…
[java] error(100): src//org/apache/pig/parser/QueryParser.g:174:49: syntax error: antlr: MismatchedTokenException(73!=69)
[java] error(100): src//org/apache/pig/parser/QueryParser.g:174:51: syntax error: antlr: NoViableAltException(75@[])
[java] error(100): src//org/apache/pig/parser/QueryParser.g:174:95: syntax error: antlr: NoViableAltException(69@[])
[java] error(100): src//org/apache/pig/parser/QueryParser.g:174:97: syntax error: antlr: NoViableAltException(69@[])
[java] error(100): src//org/apache/pig/parser/QueryParser.g:174:99: syntax error: antlr: NoViableAltException(69@[])
[java] error(100): src//org/apache/pig/parser/QueryParser.g:0:1: syntax error: assign.types: MismatchedTreeNodeException(0!=18)
[java] error(10): internal error: src//org/apache/pig/parser/QueryParser.g : java.lang.NullPointerException
[java] org.antlr.grammar.v3.DefineGrammarItemsWalker.countAltsForRule(DefineGrammarItemsWalker.java:153)
[java] org.antlr.grammar.v3.DefineGrammarItemsWalker.rule(DefineGrammarItemsWalker.java:1546)
[java] org.antlr.grammar.v3.DefineGrammarItemsWalker.rules(DefineGrammarItemsWalker.java:1190)
[java] org.antlr.grammar.v3.DefineGrammarItemsWalker.grammarSpec(DefineGrammarItemsWalker.java:623)
[java] org.antlr.grammar.v3.DefineGrammarItemsWalker.grammar_(DefineGrammarItemsWalker.java:275)
[java] org.antlr.tool.Grammar.defineGrammarSymbols(Grammar.java:748)
[java] org.antlr.tool.CompositeGrammar.defineGrammarSymbols(CompositeGrammar.java:369)
[java] org.antlr.Tool.process(Tool.java:465)
[java] org.antlr.Tool.main(Tool.java:93)
I will of course continue to dig into what these errors mean, but I was wondering more general if this sort of thing can be done? IE I know exactly how I want it to look, but am not sure how to get it to look like that.
Thanks
Assuming
STATEMENT,FOREACH,FOREACH_PLAN_SIMPLEandGENERATE STARare defined in thetokens { ... }section, this should work:Note the
^before the opening parenthesis.