Hey Jim, Thanks for taking a look. I can see what you are saying, but as far as I can see those productions will never be used in the test-case I am having, so those are irrelevant for the problem at hand.
Thanks, Ashutosh On Fri, Sep 23, 2011 at 12:30, Jim Idle <[email protected]> wrote: > Try the following: > > 1) You have things like: > > : KW_RESTRICT > -> ^(TOK_RESTRICT) > > Which are a little pointless - you could just use the existing parser > token: > > : KW_RESTRICT > > But writing a single token will not produce a node anyway. > > Next, you have things like this: > > : > keyValueProperty (COMMA keyValueProperty)* -> ^(TOK_DBPROPLIST > keyValueProperty+) > ; > > Which I think will need to be: > > : > k+=keyValueProperty (COMMA k+=keyValueProperty)* -> ^(TOK_DBPROPLIST > $k+) > ; > > Start with that and let's see where you get to. > > Jim > >> -----Original Message----- >> From: [email protected] [mailto:antlr-interest- >> [email protected]] On Behalf Of Ashutosh Chauhan >> Sent: Friday, September 23, 2011 10:59 AM >> To: [email protected] >> Subject: [antlr-interest] Different parse tree in 3.1 Vs 3.4 >> >> Hey, >> >> I work on Apache Hive project which was using Antlr 3.0.1 till now and >> its working great. Thank you guys. Now I am trying to port it to 3.4 >> and I see antlr returning incorrect parse tree in 3.4 which used to be >> correct in 3.0.1. I tested with 3.1 and thats returning correct parse >> tree too. Grammar is defined here: >> >> https://svn.apache.org/repos/asf/hive/trunk/ql/src/java/org/apache/hado >> op/hive/ql/parse/Hive.g >> >> and test program is: >> >> insert overwrite table alter3 partition (pCol1='test_part:', >> pcol2='test_part:') select col1 from alter3_src ; >> >> In 3.0.1 and 3.1 I get following parse tree which is correct >> (nil(TOK_QUERY (TOK_FROM(TOK_TABREF >> (TOK_TABNAME(alter3_src))))(TOK_INSERT >> (TOK_DESTINATION(TOK_TAB(TOK_TABNAME(alter3))(TOK_PARTSPEC(TOK_PARTVAL( >> pCol1)('test_part:'))(TOK_PARTVAL(pcol2)('test_part:')))))(TOK_SELECT(T >> OK_SELEXPR(TOK_TABLE_OR_COL(col1))))))(null)) >> >> whereas in 3.4 I get following parse tree which is incomplete and thus >> incorrect (nil(TOK_QUERY (TOK_FROM (TOK_TABREF >> (TOK_TABNAME(alter3_src))))(TOK_INSERT >> (TOK_DESTINATION(TOK_TAB))(TOK_SELECT (TOK_SELEXPR >> (TOK_TABLE_OR_COL(col1))))))(<EOF>)) >> >> Is there something I should keep in mind while trying to upgrade to >> 3.4. I was not able to test with 3.2 or 3.3 because of a different >> problem in ant plugin of antlr because of which I was not able to >> build. It was failing following stacktrace: >> >> Exception in thread "main" java.lang.NoClassDefFoundError: >> antlr/RecognitionException >> [java] at org.antlr.Tool.getRootGrammar(Tool.java:551) >> [java] at org.antlr.Tool.process(Tool.java:422) >> [java] at org.antlr.Tool.main(Tool.java:91) >> [java] Caused by: java.lang.ClassNotFoundException: >> antlr.RecognitionException >> >> I will be happy to provide any more information which will help figure >> out this issue. >> >> Thanks for your help, >> Ashutosh >> >> List: http://www.antlr.org/mailman/listinfo/antlr-interest >> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your- >> email-address > > List: http://www.antlr.org/mailman/listinfo/antlr-interest > Unsubscribe: > http://www.antlr.org/mailman/options/antlr-interest/your-email-address > List: http://www.antlr.org/mailman/listinfo/antlr-interest Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address -- You received this message because you are subscribed to the Google Groups "il-antlr-interest" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.
