// $ANTLR 3.2 Sep 23, 2009 12:02:23 F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g 2011-01-08 18:26:11 import org.antlr.runtime.*; import java.util.Stack; import java.util.List; import java.util.ArrayList; import org.antlr.runtime.tree.*; public class PolyParser extends Parser { public static final String[] tokenNames = new String[] { "<invalid>", "<EOR>", "<DOWN>", "<UP>", "MULT", "INT", "ID", "WS", "'+'", "'^'" }; public static final int WS=7; public static final int INT=5; public static final int MULT=4; public static final int ID=6; public static final int EOF=-1; public static final int T__9=9; public static final int T__8=8; // delegates // delegators public PolyParser(TokenStream input) { this(input, new RecognizerSharedState()); } public PolyParser(TokenStream input, RecognizerSharedState state) { super(input, state); } protected TreeAdaptor adaptor = new CommonTreeAdaptor(); public void setTreeAdaptor(TreeAdaptor adaptor) { this.adaptor = adaptor; } public TreeAdaptor getTreeAdaptor() { return adaptor; } public String[] getTokenNames() { return PolyParser.tokenNames; } public String getGrammarFileName() { return "F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g"; } public static class poly_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "poly" // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:5:1: poly : term ( '+' term )* ; public final PolyParser.poly_return poly() throws RecognitionException { PolyParser.poly_return retval = new PolyParser.poly_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal2=null; PolyParser.term_return term1 = null; PolyParser.term_return term3 = null; Object char_literal2_tree=null; try { // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:5:5: ( term ( '+' term )* ) // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:5:7: term ( '+' term )* { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_term_in_poly24); term1=term(); state._fsp--; adaptor.addChild(root_0, term1.getTree()); // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:5:12: ( '+' term )* loop1: do { int alt1=2; int LA1_0 = input.LA(1); if ( (LA1_0==8) ) { alt1=1; } switch (alt1) { case 1 : // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:5:13: '+' term { char_literal2=(Token)match(input,8,FOLLOW_8_in_poly27); char_literal2_tree = (Object)adaptor.create(char_literal2); root_0 = (Object)adaptor.becomeRoot(char_literal2_tree, root_0); pushFollow(FOLLOW_term_in_poly30); term3=term(); state._fsp--; adaptor.addChild(root_0, term3.getTree()); } break; default : break loop1; } } while (true); } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "poly" public static class term_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "term" // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:8:1: term : ( INT ID -> ^( MULT[\"*\"] INT ID ) | INT exp -> ^( MULT[\"*\"] INT exp ) | exp | INT | ID ); public final PolyParser.term_return term() throws RecognitionException { PolyParser.term_return retval = new PolyParser.term_return(); retval.start = input.LT(1); Object root_0 = null; Token INT4=null; Token ID5=null; Token INT6=null; Token INT9=null; Token ID10=null; PolyParser.exp_return exp7 = null; PolyParser.exp_return exp8 = null; Object INT4_tree=null; Object ID5_tree=null; Object INT6_tree=null; Object INT9_tree=null; Object ID10_tree=null; RewriteRuleTokenStream stream_INT=new RewriteRuleTokenStream(adaptor,"token INT"); RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); RewriteRuleSubtreeStream stream_exp=new RewriteRuleSubtreeStream(adaptor,"rule exp"); try { // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:8:5: ( INT ID -> ^( MULT[\"*\"] INT ID ) | INT exp -> ^( MULT[\"*\"] INT exp ) | exp | INT | ID ) int alt2=5; int LA2_0 = input.LA(1); if ( (LA2_0==INT) ) { int LA2_1 = input.LA(2); if ( (LA2_1==ID) ) { int LA2_3 = input.LA(3); if ( (LA2_3==9) ) { alt2=2; } else if ( (LA2_3==EOF||LA2_3==8) ) { alt2=1; } else { NoViableAltException nvae = new NoViableAltException("", 2, 3, input); throw nvae; } } else if ( (LA2_1==EOF||LA2_1==8) ) { alt2=4; } else { NoViableAltException nvae = new NoViableAltException("", 2, 1, input); throw nvae; } } else if ( (LA2_0==ID) ) { int LA2_2 = input.LA(2); if ( (LA2_2==9) ) { alt2=3; } else if ( (LA2_2==EOF||LA2_2==8) ) { alt2=5; } else { NoViableAltException nvae = new NoViableAltException("", 2, 2, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 2, 0, input); throw nvae; } switch (alt2) { case 1 : // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:8:7: INT ID { INT4=(Token)match(input,INT,FOLLOW_INT_in_term44); stream_INT.add(INT4); ID5=(Token)match(input,ID,FOLLOW_ID_in_term46); stream_ID.add(ID5); // AST REWRITE // elements: INT, ID // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 8:15: -> ^( MULT[\"*\"] INT ID ) { // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:8:18: ^( MULT[\"*\"] INT ID ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(MULT, "*"), root_1); adaptor.addChild(root_1, stream_INT.nextNode()); adaptor.addChild(root_1, stream_ID.nextNode()); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } break; case 2 : // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:9:7: INT exp { INT6=(Token)match(input,INT,FOLLOW_INT_in_term66); stream_INT.add(INT6); pushFollow(FOLLOW_exp_in_term68); exp7=exp(); state._fsp--; stream_exp.add(exp7.getTree()); // AST REWRITE // elements: exp, INT // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 9:15: -> ^( MULT[\"*\"] INT exp ) { // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:9:18: ^( MULT[\"*\"] INT exp ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(MULT, "*"), root_1); adaptor.addChild(root_1, stream_INT.nextNode()); adaptor.addChild(root_1, stream_exp.nextTree()); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } break; case 3 : // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:10:7: exp { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_exp_in_term87); exp8=exp(); state._fsp--; adaptor.addChild(root_0, exp8.getTree()); } break; case 4 : // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:11:7: INT { root_0 = (Object)adaptor.nil(); INT9=(Token)match(input,INT,FOLLOW_INT_in_term95); INT9_tree = (Object)adaptor.create(INT9); adaptor.addChild(root_0, INT9_tree); } break; case 5 : // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:12:4: ID { root_0 = (Object)adaptor.nil(); ID10=(Token)match(input,ID,FOLLOW_ID_in_term100); ID10_tree = (Object)adaptor.create(ID10); adaptor.addChild(root_0, ID10_tree); } break; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "term" public static class exp_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "exp" // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:15:1: exp : ID '^' INT ; public final PolyParser.exp_return exp() throws RecognitionException { PolyParser.exp_return retval = new PolyParser.exp_return(); retval.start = input.LT(1); Object root_0 = null; Token ID11=null; Token char_literal12=null; Token INT13=null; Object ID11_tree=null; Object char_literal12_tree=null; Object INT13_tree=null; try { // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:15:5: ( ID '^' INT ) // F:\\tmp\\antlr3-task - Kopie\\examples\\polydiff-netbeans\\polydiff\\grammar\\Poly.g:15:7: ID '^' INT { root_0 = (Object)adaptor.nil(); ID11=(Token)match(input,ID,FOLLOW_ID_in_exp113); ID11_tree = (Object)adaptor.create(ID11); adaptor.addChild(root_0, ID11_tree); char_literal12=(Token)match(input,9,FOLLOW_9_in_exp115); char_literal12_tree = (Object)adaptor.create(char_literal12); root_0 = (Object)adaptor.becomeRoot(char_literal12_tree, root_0); INT13=(Token)match(input,INT,FOLLOW_INT_in_exp118); INT13_tree = (Object)adaptor.create(INT13); adaptor.addChild(root_0, INT13_tree); } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "exp" // Delegated rules public static final BitSet FOLLOW_term_in_poly24 = new BitSet(new long[]{0x0000000000000102L}); public static final BitSet FOLLOW_8_in_poly27 = new BitSet(new long[]{0x0000000000000060L}); public static final BitSet FOLLOW_term_in_poly30 = new BitSet(new long[]{0x0000000000000102L}); public static final BitSet FOLLOW_INT_in_term44 = new BitSet(new long[]{0x0000000000000040L}); public static final BitSet FOLLOW_ID_in_term46 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_INT_in_term66 = new BitSet(new long[]{0x0000000000000040L}); public static final BitSet FOLLOW_exp_in_term68 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_exp_in_term87 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_INT_in_term95 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ID_in_term100 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ID_in_exp113 = new BitSet(new long[]{0x0000000000000200L}); public static final BitSet FOLLOW_9_in_exp115 = new BitSet(new long[]{0x0000000000000020L}); public static final BitSet FOLLOW_INT_in_exp118 = new BitSet(new long[]{0x0000000000000002L}); }