// $ANTLR 3.1.3 Mar 17, 2009 19:23:44 /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g 2009-05-29 03:54:54 package ru.msu.cmc.sp.oberon2; import java.math.BigDecimal; import java.util.Hashtable; import java.util.List; import java.util.Set; import java.util.HashSet; import java.util.ArrayList; import java.util.Map.Entry; import ru.msu.cmc.sp.oberon2.*; import ru.msu.cmc.sp.oberon2.exceptions.*; import ru.msu.cmc.sp.oberon2.types.*; import ru.msu.cmc.sp.oberon2.values.*; import ru.msu.cmc.sp.oberon2.values.TypeValue.TypeTag; import ru.msu.cmc.sp.oberon2.lvalues.*; import ru.msu.cmc.sp.oberon2.lvalueexpressions.*; import org.antlr.runtime.*; import java.util.Stack; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.util.HashMap; import org.antlr.runtime.tree.*; public class Oberon2Parser extends Parser { public static final String[] tokenNames = new String[] { "", "", "", "", "STAR", "DOT", "EQUAL", "COMMA", "SEMICOLON", "LPAREN", "RPAREN", "COLON", "DOTDOT", "LBR", "RBR", "REF", "LBRACE", "RBRACE", "NEQUAL", "LESS", "LEQ", "GREATER", "GEQ", "PLUS", "MINUS", "SLASH", "AMP", "TILDE", "STROKE", "ASSIGN", "QUOTE", "DQUOTE", "QUALIDENT", "MODULENAME", "ID", "IDENTDEF", "CONSTDECL", "CONSTEXPR", "TYPEDECL", "STATEMENTS", "ARRAY", "LENGTH", "OPENARRAY", "PROCEDURE", "VARDECL", "IDENTLIST", "ARRAYDESIGNATOR", "SIMPLEDESIGNATOR", "EXPRLIST", "UPLUS", "UMINUS", "PROCCALL", "ACTPARAMS", "STATSEQ", "IF", "IFPART", "IFCOND", "IFTHEN", "IFELSE", "DIGIT", "LETTER", "HEXLETTER", "HEXDIGIT", "IDENT", "INTEGER", "REAL", "LONGREAL", "CHARCONST", "STRING", "SPACE", "COMMENT", "'ARRAY'", "'OF'", "'PROCEDURE'", "'NIL'", "'OR'", "'DIV'", "'MOD'", "'EXIT'", "'RETURN'", "'IF'", "'THEN'", "'ELSIF'", "'ELSE'", "'END'", "'CASE'", "'WHILE'", "'DO'", "'REPEAT'", "'UNTIL'", "'FOR'", "'TO'", "'BY'", "'LOOP'", "'BEGIN'", "'CONST'", "'TYPE'", "'VAR'", "'MODULE'", "'IMPORT'" }; public static final int STAR=4; public static final int IFELSE=58; public static final int LETTER=60; public static final int DQUOTE=31; public static final int QUALIDENT=32; public static final int EOF=-1; public static final int T__93=93; public static final int OPENARRAY=42; public static final int T__94=94; public static final int RPAREN=10; public static final int T__91=91; public static final int QUOTE=30; public static final int T__92=92; public static final int GREATER=21; public static final int T__90=90; public static final int CONSTEXPR=37; public static final int IFCOND=56; public static final int LESS=19; public static final int GEQ=22; public static final int COMMENT=70; public static final int T__99=99; public static final int T__98=98; public static final int ARRAY=40; public static final int T__97=97; public static final int T__96=96; public static final int T__95=95; public static final int NEQUAL=18; public static final int T__80=80; public static final int T__81=81; public static final int T__82=82; public static final int RBRACE=17; public static final int T__83=83; public static final int STROKE=28; public static final int ARRAYDESIGNATOR=46; public static final int SEMICOLON=8; public static final int T__85=85; public static final int T__84=84; public static final int T__87=87; public static final int MODULENAME=33; public static final int T__86=86; public static final int T__89=89; public static final int T__88=88; public static final int REAL=65; public static final int ACTPARAMS=52; public static final int T__71=71; public static final int T__72=72; public static final int IFPART=55; public static final int STATEMENTS=39; public static final int T__76=76; public static final int T__75=75; public static final int T__74=74; public static final int T__73=73; public static final int T__79=79; public static final int T__78=78; public static final int T__77=77; public static final int CONSTDECL=36; public static final int RBR=14; public static final int AMP=26; public static final int LBRACE=16; public static final int SIMPLEDESIGNATOR=47; public static final int DOTDOT=12; public static final int VARDECL=44; public static final int ID=34; public static final int SPACE=69; public static final int LBR=13; public static final int LPAREN=9; public static final int LENGTH=41; public static final int IF=54; public static final int SLASH=25; public static final int IDENTLIST=45; public static final int COMMA=7; public static final int EQUAL=6; public static final int TILDE=27; public static final int IDENT=63; public static final int PLUS=23; public static final int TYPEDECL=38; public static final int DIGIT=59; public static final int DOT=5; public static final int IDENTDEF=35; public static final int INTEGER=64; public static final int LONGREAL=66; public static final int UPLUS=49; public static final int EXPRLIST=48; public static final int STATSEQ=53; public static final int HEXLETTER=61; public static final int UMINUS=50; public static final int MINUS=24; public static final int PROCEDURE=43; public static final int REF=15; public static final int COLON=11; public static final int PROCCALL=51; public static final int ASSIGN=29; public static final int IFTHEN=57; public static final int STRING=68; public static final int CHARCONST=67; public static final int LEQ=20; public static final int HEXDIGIT=62; // delegates // delegators public Oberon2Parser(TokenStream input) { this(input, new RecognizerSharedState()); } public Oberon2Parser(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 Oberon2Parser.tokenNames; } public String getGrammarFileName() { return "/home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g"; } public ParseContext pc; public String inputFileName = new String(); public void displayRecognitionError( String[] tokenNames, RecognitionException e ) { //String hdr = getErrorHeader( e ); String msg = getErrorMessage( e, tokenNames ); //System.out.println( inputFileName + ":" + hdr.substring( 5 ) + ":" + msg ); System.err.println(inputFileName + ":" + e.line + ":" + e.charPositionInLine + ":" + msg); System.exit(Oberon2.ERROR_CODE); } public static Oberon2Exception transformException(Oberon2Exception ex, Token start){ if(ex.pt.line == -1){ ex.pt.line = start.getLine(); ex.pt.col = start.getCharPositionInLine(); return new Oberon2Exception(ex.pt, ex.getMessage()); }else{ return ex; } } //@Override //public void recover (IntStream input, RecognitionException re) {} //@Override //public void reportError (RecognitionException re){} public static class ident_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "ident" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:185:1: ident : IDENT ; public final Oberon2Parser.ident_return ident() throws RecognitionException { Oberon2Parser.ident_return retval = new Oberon2Parser.ident_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token IDENT1=null; CommonTree IDENT1_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:185:7: ( IDENT ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:186:9: IDENT { root_0 = (CommonTree)adaptor.nil(); IDENT1=(Token)match(input,IDENT,FOLLOW_IDENT_in_ident789); if (state.failed) return retval; if ( state.backtracking==0 ) { IDENT1_tree = (CommonTree)adaptor.create(IDENT1); adaptor.addChild(root_0, IDENT1_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "ident" public static class constant_return extends ParserRuleReturnScope { public Value val; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "constant" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:223:1: constant returns [Value val] : (str= STRING | chr= CHARCONST | integ= INTEGER | real= REAL | longreal= LONGREAL ); public final Oberon2Parser.constant_return constant() throws RecognitionException { Oberon2Parser.constant_return retval = new Oberon2Parser.constant_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token str=null; Token chr=null; Token integ=null; Token real=null; Token longreal=null; CommonTree str_tree=null; CommonTree chr_tree=null; CommonTree integ_tree=null; CommonTree real_tree=null; CommonTree longreal_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:224:2: (str= STRING | chr= CHARCONST | integ= INTEGER | real= REAL | longreal= LONGREAL ) int alt1=5; switch ( input.LA(1) ) { case STRING: { alt1=1; } break; case CHARCONST: { alt1=2; } break; case INTEGER: { alt1=3; } break; case REAL: { alt1=4; } break; case LONGREAL: { alt1=5; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 1, 0, input); throw nvae; } switch (alt1) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:224:4: str= STRING { root_0 = (CommonTree)adaptor.nil(); str=(Token)match(input,STRING,FOLLOW_STRING_in_constant1096); if (state.failed) return retval; if ( state.backtracking==0 ) { str_tree = (CommonTree)adaptor.create(str); adaptor.addChild(root_0, str_tree); } if ( state.backtracking==0 ) { try{ retval.val = StringConstantValue.parseStringConstantValue((str!=null?str.getText():null)); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } } } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:232:4: chr= CHARCONST { root_0 = (CommonTree)adaptor.nil(); chr=(Token)match(input,CHARCONST,FOLLOW_CHARCONST_in_constant1109); if (state.failed) return retval; if ( state.backtracking==0 ) { chr_tree = (CommonTree)adaptor.create(chr); adaptor.addChild(root_0, chr_tree); } if ( state.backtracking==0 ) { try{ retval.val = StringConstantValue.parseStringConstantValue((chr!=null?chr.getText():null)); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } } } break; case 3 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:240:4: integ= INTEGER { root_0 = (CommonTree)adaptor.nil(); integ=(Token)match(input,INTEGER,FOLLOW_INTEGER_in_constant1122); if (state.failed) return retval; if ( state.backtracking==0 ) { integ_tree = (CommonTree)adaptor.create(integ); adaptor.addChild(root_0, integ_tree); } if ( state.backtracking==0 ) { try{ retval.val = NumericValue.parseAnyIntegerValue((integ!=null?integ.getText():null)); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } } } break; case 4 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:248:4: real= REAL { root_0 = (CommonTree)adaptor.nil(); real=(Token)match(input,REAL,FOLLOW_REAL_in_constant1135); if (state.failed) return retval; if ( state.backtracking==0 ) { real_tree = (CommonTree)adaptor.create(real); adaptor.addChild(root_0, real_tree); } if ( state.backtracking==0 ) { try{ retval.val = NumericValue.parseRealValue((real!=null?real.getText():null)); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } } } break; case 5 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:256:4: longreal= LONGREAL { root_0 = (CommonTree)adaptor.nil(); longreal=(Token)match(input,LONGREAL,FOLLOW_LONGREAL_in_constant1148); if (state.failed) return retval; if ( state.backtracking==0 ) { longreal_tree = (CommonTree)adaptor.create(longreal); adaptor.addChild(root_0, longreal_tree); } if ( state.backtracking==0 ) { try{ retval.val = NumericValue.parseLongRealValue((longreal!=null?longreal.getText():null)); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } } } break; } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "constant" public static class qualIdent_return extends ParserRuleReturnScope { public IdentifierAccessor idAccessor; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "qualIdent" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:266:1: qualIdent returns [IdentifierAccessor idAccessor] : (modulename= ident DOT )? id= ident ; public final Oberon2Parser.qualIdent_return qualIdent() throws RecognitionException { Oberon2Parser.qualIdent_return retval = new Oberon2Parser.qualIdent_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token DOT2=null; Oberon2Parser.ident_return modulename = null; Oberon2Parser.ident_return id = null; CommonTree DOT2_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:267:2: ( (modulename= ident DOT )? id= ident ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:267:4: (modulename= ident DOT )? id= ident { root_0 = (CommonTree)adaptor.nil(); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:267:4: (modulename= ident DOT )? int alt2=2; int LA2_0 = input.LA(1); if ( (LA2_0==IDENT) ) { int LA2_1 = input.LA(2); if ( (LA2_1==DOT) ) { alt2=1; } } switch (alt2) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:267:6: modulename= ident DOT { pushFollow(FOLLOW_ident_in_qualIdent1170); modulename=ident(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, modulename.getTree()); DOT2=(Token)match(input,DOT,FOLLOW_DOT_in_qualIdent1172); if (state.failed) return retval; if ( state.backtracking==0 ) { DOT2_tree = (CommonTree)adaptor.create(DOT2); adaptor.addChild(root_0, DOT2_tree); } } break; } pushFollow(FOLLOW_ident_in_qualIdent1179); id=ident(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, id.getTree()); if ( state.backtracking==0 ) { try{ retval.idAccessor = new IdentifierAccessor(pc.scope, (id!=null?input.toString(id.start,id.stop):null), (modulename!=null?input.toString(modulename.start,modulename.stop):null)); retval.idAccessor.declarationPoint = new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()); retval.idAccessor.getLValue().usages.add(retval.idAccessor.declarationPoint); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "qualIdent" public static class identDef_return extends ParserRuleReturnScope { public boolean needReplace; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "identDef" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:283:1: identDef[Hashtable thisListDeclarations] returns [boolean needReplace] : id= ident ; public final Oberon2Parser.identDef_return identDef(Hashtable thisListDeclarations) throws RecognitionException { Oberon2Parser.identDef_return retval = new Oberon2Parser.identDef_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.ident_return id = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:284:2: (id= ident ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:284:4: id= ident { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_ident_in_identDef1205); id=ident(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, id.getTree()); if ( state.backtracking==0 ) { retval.needReplace = false; if(pc.scope.contains((id!=null?input.toString(id.start,id.stop):null), false)){ LValue lv = pc.scope.get((id!=null?input.toString(id.start,id.stop):null)); retval.needReplace = true; // throw exception only if it is not forward declared procedure if(!(lv.getType().getTypeTag() == TypeTag.PROCEDURE && lv.evaluate() == NilValue.NIL)) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Identifier '" + (id!=null?input.toString(id.start,id.stop):null) + "' is already declared in this scope"); } if(StdLibrary.stdScope.contains((id!=null?input.toString(id.start,id.stop):null), false)) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Identifier '" + (id!=null?input.toString(id.start,id.stop):null) + "' is already declared in the standart scope"); if(StdLibrary.keywords.contains((id!=null?input.toString(id.start,id.stop):null))) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Identifier '" + (id!=null?input.toString(id.start,id.stop):null) + "' is a keyword. Cannot declare"); if(thisListDeclarations != null){ if(thisListDeclarations.containsKey((id!=null?input.toString(id.start,id.stop):null))) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Identifier '" + (id!=null?input.toString(id.start,id.stop):null) + "' is already declared in this list"); thisListDeclarations.put((id!=null?input.toString(id.start,id.stop):null), new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine())); } //Oberon2.definedIds.add(new Oberon2.DefinitionInfo((id!=null?input.toString(id.start,id.stop):null), new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()))); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "identDef" public static class constantDeclaration_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "constantDeclaration" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:311:1: constantDeclaration : id= identDef[null] EQUAL expr= constExpression ; public final Oberon2Parser.constantDeclaration_return constantDeclaration() throws RecognitionException { Oberon2Parser.constantDeclaration_return retval = new Oberon2Parser.constantDeclaration_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token EQUAL3=null; Oberon2Parser.identDef_return id = null; Oberon2Parser.constExpression_return expr = null; CommonTree EQUAL3_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:312:2: (id= identDef[null] EQUAL expr= constExpression ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:312:4: id= identDef[null] EQUAL expr= constExpression { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_identDef_in_constantDeclaration1232); id=identDef(null); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, id.getTree()); EQUAL3=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_constantDeclaration1236); if (state.failed) return retval; if ( state.backtracking==0 ) { EQUAL3_tree = (CommonTree)adaptor.create(EQUAL3); adaptor.addChild(root_0, EQUAL3_tree); } pushFollow(FOLLOW_constExpression_in_constantDeclaration1240); expr=constExpression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expr.getTree()); if ( state.backtracking==0 ) { SimpleLValue lValue = new SimpleLValue((expr!=null?expr.constExpr:null).getType(), (expr!=null?expr.constExpr:null).evaluate(), true); lValue.declarationPoint = new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()); pc.scope.declare((id!=null?input.toString(id.start,id.stop):null), lValue); //Oberon2.definedIds.add(new Oberon2.DefinitionInfo((id!=null?input.toString(id.start,id.stop):null), lValue)); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "constantDeclaration" public static class constExpression_return extends ParserRuleReturnScope { public Expression constExpr; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "constExpression" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:324:1: constExpression returns [Expression constExpr] : expr= expression ; public final Oberon2Parser.constExpression_return constExpression() throws RecognitionException { Oberon2Parser.constExpression_return retval = new Oberon2Parser.constExpression_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.expression_return expr = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:325:2: (expr= expression ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:325:4: expr= expression { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_expression_in_constExpression1264); expr=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expr.getTree()); if ( state.backtracking==0 ) { if(!(expr!=null?expr.expr:null).isConstant()) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Expression is not constant"); retval.constExpr = (expr!=null?expr.expr:null); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "constExpression" public static class typeDeclaration_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "typeDeclaration" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:337:1: typeDeclaration : id= identDef[null] EQUAL typ= type ; public final Oberon2Parser.typeDeclaration_return typeDeclaration() throws RecognitionException { Oberon2Parser.typeDeclaration_return retval = new Oberon2Parser.typeDeclaration_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token EQUAL4=null; Oberon2Parser.identDef_return id = null; Oberon2Parser.type_return typ = null; CommonTree EQUAL4_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:338:2: (id= identDef[null] EQUAL typ= type ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:338:4: id= identDef[null] EQUAL typ= type { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_identDef_in_typeDeclaration1293); id=identDef(null); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, id.getTree()); EQUAL4=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_typeDeclaration1297); if (state.failed) return retval; if ( state.backtracking==0 ) { EQUAL4_tree = (CommonTree)adaptor.create(EQUAL4); adaptor.addChild(root_0, EQUAL4_tree); } pushFollow(FOLLOW_type_in_typeDeclaration1301); typ=type(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, typ.getTree()); if ( state.backtracking==0 ) { SimpleLValue lValue = new SimpleLValue(TypeValue.TYPE, (typ!=null?typ.typ:null), true); lValue.declarationPoint = new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()); pc.scope.declare((id!=null?input.toString(id.start,id.stop):null), lValue); //Oberon2.definedIds.add(new Oberon2.DefinitionInfo((id!=null?input.toString(id.start,id.stop):null), lValue)); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "typeDeclaration" public static class type_return extends ParserRuleReturnScope { public TypeValue typ; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "type" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:350:1: type returns [TypeValue typ] : (qi= qualIdent | at= arrayType | pt= procedureType ); public final Oberon2Parser.type_return type() throws RecognitionException { Oberon2Parser.type_return retval = new Oberon2Parser.type_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.qualIdent_return qi = null; Oberon2Parser.arrayType_return at = null; Oberon2Parser.procedureType_return pt = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:351:8: (qi= qualIdent | at= arrayType | pt= procedureType ) int alt3=3; switch ( input.LA(1) ) { case IDENT: { alt3=1; } break; case 71: { alt3=2; } break; case 73: { alt3=3; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 3, 0, input); throw nvae; } switch (alt3) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:351:10: qi= qualIdent { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_qualIdent_in_type1331); qi=qualIdent(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, qi.getTree()); if ( state.backtracking==0 ) { Value tmp = (qi!=null?qi.idAccessor:null).evaluate(); if(tmp.getType() != TypeValue.TYPE) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Identifier '" + (qi!=null?input.toString(qi.start,qi.stop):null) + "' does not represent a type"); retval.typ = (TypeValue)tmp; } } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:358:11: at= arrayType { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_arrayType_in_type1355); at=arrayType(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, at.getTree()); if ( state.backtracking==0 ) { retval.typ = (at!=null?at.typ:null); } } break; case 3 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:362:11: pt= procedureType { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_procedureType_in_type1380); pt=procedureType(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, pt.getTree()); if ( state.backtracking==0 ) { retval.typ = (pt!=null?pt.typ:null); } } break; } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "type" public static class formalType_return extends ParserRuleReturnScope { public TypeValue typ; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "formalType" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:369:1: formalType returns [TypeValue typ] : (qi= qualIdent | at= arrayType | oat= openArrayType | pt= procedureType ); public final Oberon2Parser.formalType_return formalType() throws RecognitionException { Oberon2Parser.formalType_return retval = new Oberon2Parser.formalType_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.qualIdent_return qi = null; Oberon2Parser.arrayType_return at = null; Oberon2Parser.openArrayType_return oat = null; Oberon2Parser.procedureType_return pt = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:370:8: (qi= qualIdent | at= arrayType | oat= openArrayType | pt= procedureType ) int alt4=4; switch ( input.LA(1) ) { case IDENT: { alt4=1; } break; case 71: { int LA4_2 = input.LA(2); if ( (LA4_2==72) ) { alt4=3; } else if ( (LA4_2==LPAREN||(LA4_2>=PLUS && LA4_2<=MINUS)||LA4_2==TILDE||(LA4_2>=IDENT && LA4_2<=STRING)||LA4_2==74) ) { alt4=2; } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 4, 2, input); throw nvae; } } break; case 73: { alt4=4; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 4, 0, input); throw nvae; } switch (alt4) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:370:10: qi= qualIdent { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_qualIdent_in_formalType1422); qi=qualIdent(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, qi.getTree()); if ( state.backtracking==0 ) { Value tmp = (qi!=null?qi.idAccessor:null).evaluate(); if(tmp.getType() != TypeValue.TYPE) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Identifier '" + (qi!=null?input.toString(qi.start,qi.stop):null) + "' does not represent a type"); retval.typ = (TypeValue)tmp; } } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:377:11: at= arrayType { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_arrayType_in_formalType1446); at=arrayType(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, at.getTree()); if ( state.backtracking==0 ) { retval.typ = (at!=null?at.typ:null); } } break; case 3 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:381:11: oat= openArrayType { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_openArrayType_in_formalType1471); oat=openArrayType(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, oat.getTree()); if ( state.backtracking==0 ) { retval.typ = (oat!=null?oat.typ:null); } } break; case 4 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:385:11: pt= procedureType { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_procedureType_in_formalType1496); pt=procedureType(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, pt.getTree()); if ( state.backtracking==0 ) { retval.typ = (pt!=null?pt.typ:null); } } break; } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "formalType" public static class arrayType_return extends ParserRuleReturnScope { public ArrayType typ; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "arrayType" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:392:1: arrayType returns [ArrayType typ] : 'ARRAY' len= length 'OF' (qi= qualIdent | pt= procedureType ) ; public final Oberon2Parser.arrayType_return arrayType() throws RecognitionException { Oberon2Parser.arrayType_return retval = new Oberon2Parser.arrayType_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal5=null; Token string_literal6=null; Oberon2Parser.length_return len = null; Oberon2Parser.qualIdent_return qi = null; Oberon2Parser.procedureType_return pt = null; CommonTree string_literal5_tree=null; CommonTree string_literal6_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:409:2: ( 'ARRAY' len= length 'OF' (qi= qualIdent | pt= procedureType ) ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:409:4: 'ARRAY' len= length 'OF' (qi= qualIdent | pt= procedureType ) { root_0 = (CommonTree)adaptor.nil(); string_literal5=(Token)match(input,71,FOLLOW_71_in_arrayType1535); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal5_tree = (CommonTree)adaptor.create(string_literal5); adaptor.addChild(root_0, string_literal5_tree); } pushFollow(FOLLOW_length_in_arrayType1539); len=length(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, len.getTree()); string_literal6=(Token)match(input,72,FOLLOW_72_in_arrayType1541); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal6_tree = (CommonTree)adaptor.create(string_literal6); adaptor.addChild(root_0, string_literal6_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:409:28: (qi= qualIdent | pt= procedureType ) int alt5=2; int LA5_0 = input.LA(1); if ( (LA5_0==IDENT) ) { alt5=1; } else if ( (LA5_0==73) ) { alt5=2; } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 5, 0, input); throw nvae; } switch (alt5) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:409:30: qi= qualIdent { pushFollow(FOLLOW_qualIdent_in_arrayType1547); qi=qualIdent(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, qi.getTree()); } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:409:45: pt= procedureType { pushFollow(FOLLOW_procedureType_in_arrayType1553); pt=procedureType(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, pt.getTree()); } break; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } if ( state.backtracking==0 ) { try{ TypeValue elType=null; if((qi!=null?input.toString(qi.start,qi.stop):null) != null){ Value tmp = (qi!=null?qi.idAccessor:null).evaluate(); if(tmp.getType() != TypeValue.TYPE) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Identifier '" + (qi!=null?input.toString(qi.start,qi.stop):null) + "' does not represent a type"); elType = (TypeValue)tmp; }else if((pt!=null?input.toString(pt.start,pt.stop):null) != null){ elType = (pt!=null?pt.typ:null); } retval.typ = new ArrayType((len!=null?len.len:0), elType); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "arrayType" public static class openArrayType_return extends ParserRuleReturnScope { public ArrayType typ; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "openArrayType" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:415:1: openArrayType returns [ArrayType typ] : 'ARRAY' 'OF' (qi= qualIdent | pt= procedureType ) ; public final Oberon2Parser.openArrayType_return openArrayType() throws RecognitionException { Oberon2Parser.openArrayType_return retval = new Oberon2Parser.openArrayType_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal7=null; Token string_literal8=null; Oberon2Parser.qualIdent_return qi = null; Oberon2Parser.procedureType_return pt = null; CommonTree string_literal7_tree=null; CommonTree string_literal8_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:432:2: ( 'ARRAY' 'OF' (qi= qualIdent | pt= procedureType ) ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:432:4: 'ARRAY' 'OF' (qi= qualIdent | pt= procedureType ) { root_0 = (CommonTree)adaptor.nil(); string_literal7=(Token)match(input,71,FOLLOW_71_in_openArrayType1585); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal7_tree = (CommonTree)adaptor.create(string_literal7); adaptor.addChild(root_0, string_literal7_tree); } string_literal8=(Token)match(input,72,FOLLOW_72_in_openArrayType1587); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal8_tree = (CommonTree)adaptor.create(string_literal8); adaptor.addChild(root_0, string_literal8_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:432:17: (qi= qualIdent | pt= procedureType ) int alt6=2; int LA6_0 = input.LA(1); if ( (LA6_0==IDENT) ) { alt6=1; } else if ( (LA6_0==73) ) { alt6=2; } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 6, 0, input); throw nvae; } switch (alt6) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:432:19: qi= qualIdent { pushFollow(FOLLOW_qualIdent_in_openArrayType1593); qi=qualIdent(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, qi.getTree()); } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:432:34: pt= procedureType { pushFollow(FOLLOW_procedureType_in_openArrayType1599); pt=procedureType(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, pt.getTree()); } break; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } if ( state.backtracking==0 ) { try{ TypeValue elType=null; if((qi!=null?input.toString(qi.start,qi.stop):null) != null){ Value tmp = (qi!=null?qi.idAccessor:null).evaluate(); if(tmp.getType() != TypeValue.TYPE) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Identifier '" + (qi!=null?input.toString(qi.start,qi.stop):null) + "' does not represent a type"); elType = (TypeValue)tmp; }else if((pt!=null?input.toString(pt.start,pt.stop):null) != null){ elType = (pt!=null?pt.typ:null); } retval.typ = new ArrayType(ArrayType.OPEN_ARRAY_LENGTH, elType); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "openArrayType" public static class length_return extends ParserRuleReturnScope { public int len; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "length" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:439:1: length returns [int len] : expr= constExpression ; public final Oberon2Parser.length_return length() throws RecognitionException { Oberon2Parser.length_return retval = new Oberon2Parser.length_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.constExpression_return expr = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:440:2: (expr= constExpression ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:440:4: expr= constExpression { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_constExpression_in_length1629); expr=constExpression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expr.getTree()); if ( state.backtracking==0 ) { Value v = (expr!=null?expr.constExpr:null).evaluate(); if(v.getType().getTypeTag() != TypeTag.BASE || !((BaseType)v.getType()).isInteger() || (retval.len = (int)((NumericValue)v).toCaseValue()) <= 0 // open arrays are not here ){ throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Incorrect length value: "+v.toString()); } } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "length" public static class procedureType_return extends ParserRuleReturnScope { public ProcedureType typ; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "procedureType" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:452:1: procedureType returns [ProcedureType typ] : 'PROCEDURE' (fp= formalParameters )? ; public final Oberon2Parser.procedureType_return procedureType() throws RecognitionException { Oberon2Parser.procedureType_return retval = new Oberon2Parser.procedureType_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal9=null; Oberon2Parser.formalParameters_return fp = null; CommonTree string_literal9_tree=null; Scope scopeBackup = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:456:2: ( 'PROCEDURE' (fp= formalParameters )? ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:456:4: 'PROCEDURE' (fp= formalParameters )? { root_0 = (CommonTree)adaptor.nil(); string_literal9=(Token)match(input,73,FOLLOW_73_in_procedureType1653); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal9_tree = (CommonTree)adaptor.create(string_literal9); adaptor.addChild(root_0, string_literal9_tree); } if ( state.backtracking==0 ) { // new scope for formalParameters parser scopeBackup = pc.scope; pc.scope = new Scope(scopeBackup); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:462:5: (fp= formalParameters )? int alt7=2; int LA7_0 = input.LA(1); if ( (LA7_0==LPAREN) ) { alt7=1; } switch (alt7) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:0:0: fp= formalParameters { pushFollow(FOLLOW_formalParameters_in_procedureType1662); fp=formalParameters(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, fp.getTree()); } break; } if ( state.backtracking==0 ) { if((fp!=null?input.toString(fp.start,fp.stop):null) != null){ retval.typ = new ProcedureType((fp!=null?fp.retType:null)); for(ProcedureType.FormalParameter fpr : (fp!=null?fp.params:null)){ retval.typ.formalParameters.add(fpr); } }else{ retval.typ = ProcedureType.COMMAND; } // we don't need that new scope, so just restore backup pc.scope = scopeBackup; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "procedureType" public static class variableDeclaration_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "variableDeclaration" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:481:1: variableDeclaration : idl= identList COLON typ= type ; public final Oberon2Parser.variableDeclaration_return variableDeclaration() throws RecognitionException { Oberon2Parser.variableDeclaration_return retval = new Oberon2Parser.variableDeclaration_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token COLON10=null; Oberon2Parser.identList_return idl = null; Oberon2Parser.type_return typ = null; CommonTree COLON10_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:482:2: (idl= identList COLON typ= type ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:482:4: idl= identList COLON typ= type { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_identList_in_variableDeclaration1685); idl=identList(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, idl.getTree()); COLON10=(Token)match(input,COLON,FOLLOW_COLON_in_variableDeclaration1687); if (state.failed) return retval; if ( state.backtracking==0 ) { COLON10_tree = (CommonTree)adaptor.create(COLON10); adaptor.addChild(root_0, COLON10_tree); } pushFollow(FOLLOW_type_in_variableDeclaration1691); typ=type(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, typ.getTree()); if ( state.backtracking==0 ) { LValue lValue = null; for(Entry s : (idl!=null?idl.list:null).entrySet()){ if((typ!=null?typ.typ:null).getTypeTag() == TypeTag.ARRAY){ lValue = new ArrayLValue((ArrayType)(typ!=null?typ.typ:null)); }else{ lValue = new SimpleLValue((typ!=null?typ.typ:null), false); } lValue.declarationPoint = s.getValue();//new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()); pc.scope.declare(s.getKey(), lValue); Oberon2.definedIds.add(new Oberon2.DefinitionInfo(s.getKey(), pc.scope)); } } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "variableDeclaration" public static class identList_return extends ParserRuleReturnScope { public Hashtable list; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "identList" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:500:1: identList returns [Hashtable list] : identDef[$list] ( COMMA identDef[$list] )* ; public final Oberon2Parser.identList_return identList() throws RecognitionException { Oberon2Parser.identList_return retval = new Oberon2Parser.identList_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token COMMA12=null; Oberon2Parser.identDef_return identDef11 = null; Oberon2Parser.identDef_return identDef13 = null; CommonTree COMMA12_tree=null; // list is autofilled while going through identDefs retval.list = new Hashtable(); try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:505:2: ( identDef[$list] ( COMMA identDef[$list] )* ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:505:4: identDef[$list] ( COMMA identDef[$list] )* { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_identDef_in_identList1715); identDef11=identDef(retval.list); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, identDef11.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:505:21: ( COMMA identDef[$list] )* loop8: do { int alt8=2; int LA8_0 = input.LA(1); if ( (LA8_0==COMMA) ) { alt8=1; } switch (alt8) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:505:23: COMMA identDef[$list] { COMMA12=(Token)match(input,COMMA,FOLLOW_COMMA_in_identList1721); if (state.failed) return retval; if ( state.backtracking==0 ) { COMMA12_tree = (CommonTree)adaptor.create(COMMA12); adaptor.addChild(root_0, COMMA12_tree); } pushFollow(FOLLOW_identDef_in_identList1723); identDef13=identDef(retval.list); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, identDef13.getTree()); } break; default : break loop8; } } while (true); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "identList" public static class designator_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "designator" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:512:1: designator : ( arrayDesignator | simpleDesignator ); public final Oberon2Parser.designator_return designator() throws RecognitionException { Oberon2Parser.designator_return retval = new Oberon2Parser.designator_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.arrayDesignator_return arrayDesignator14 = null; Oberon2Parser.simpleDesignator_return simpleDesignator15 = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:513:2: ( arrayDesignator | simpleDesignator ) int alt9=2; int LA9_0 = input.LA(1); if ( (LA9_0==IDENT) ) { switch ( input.LA(2) ) { case DOT: { int LA9_2 = input.LA(3); if ( (LA9_2==IDENT) ) { int LA9_5 = input.LA(4); if ( (LA9_5==EOF||LA9_5==STAR||(LA9_5>=EQUAL && LA9_5<=DOTDOT)||LA9_5==RBR||(LA9_5>=NEQUAL && LA9_5<=AMP)||(LA9_5>=STROKE && LA9_5<=ASSIGN)||LA9_5==72||(LA9_5>=75 && LA9_5<=77)||(LA9_5>=81 && LA9_5<=84)||LA9_5==87||LA9_5==89||(LA9_5>=91 && LA9_5<=92)) ) { alt9=2; } else if ( (LA9_5==LBR) ) { alt9=1; } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 9, 5, input); throw nvae; } } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 9, 2, input); throw nvae; } } break; case EOF: case STAR: case EQUAL: case COMMA: case SEMICOLON: case LPAREN: case RPAREN: case COLON: case DOTDOT: case RBR: case NEQUAL: case LESS: case LEQ: case GREATER: case GEQ: case PLUS: case MINUS: case SLASH: case AMP: case STROKE: case ASSIGN: case 72: case 75: case 76: case 77: case 81: case 82: case 83: case 84: case 87: case 89: case 91: case 92: { alt9=2; } break; case LBR: { alt9=1; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 9, 1, input); throw nvae; } } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 9, 0, input); throw nvae; } switch (alt9) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:514:2: arrayDesignator { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_arrayDesignator_in_designator1745); arrayDesignator14=arrayDesignator(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, arrayDesignator14.getTree()); } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:514:20: simpleDesignator { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_simpleDesignator_in_designator1749); simpleDesignator15=simpleDesignator(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, simpleDesignator15.getTree()); } break; } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "designator" public static class arrayDesignator_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "arrayDesignator" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:516:1: arrayDesignator : qualIdent LBR expression RBR ; public final Oberon2Parser.arrayDesignator_return arrayDesignator() throws RecognitionException { Oberon2Parser.arrayDesignator_return retval = new Oberon2Parser.arrayDesignator_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token LBR17=null; Token RBR19=null; Oberon2Parser.qualIdent_return qualIdent16 = null; Oberon2Parser.expression_return expression18 = null; CommonTree LBR17_tree=null; CommonTree RBR19_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:517:2: ( qualIdent LBR expression RBR ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:518:9: qualIdent LBR expression RBR { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_qualIdent_in_arrayDesignator1769); qualIdent16=qualIdent(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, qualIdent16.getTree()); LBR17=(Token)match(input,LBR,FOLLOW_LBR_in_arrayDesignator1771); if (state.failed) return retval; if ( state.backtracking==0 ) { LBR17_tree = (CommonTree)adaptor.create(LBR17); adaptor.addChild(root_0, LBR17_tree); } pushFollow(FOLLOW_expression_in_arrayDesignator1773); expression18=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression18.getTree()); RBR19=(Token)match(input,RBR,FOLLOW_RBR_in_arrayDesignator1775); if (state.failed) return retval; if ( state.backtracking==0 ) { RBR19_tree = (CommonTree)adaptor.create(RBR19); adaptor.addChild(root_0, RBR19_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "arrayDesignator" public static class simpleDesignator_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "simpleDesignator" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:522:1: simpleDesignator : qualIdent ; public final Oberon2Parser.simpleDesignator_return simpleDesignator() throws RecognitionException { Oberon2Parser.simpleDesignator_return retval = new Oberon2Parser.simpleDesignator_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.qualIdent_return qualIdent20 = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:523:2: ( qualIdent ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:524:2: qualIdent { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_qualIdent_in_simpleDesignator1796); qualIdent20=qualIdent(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, qualIdent20.getTree()); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "simpleDesignator" public static class expList_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "expList" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:528:1: expList : expression ( COMMA expression )* ; public final Oberon2Parser.expList_return expList() throws RecognitionException { Oberon2Parser.expList_return retval = new Oberon2Parser.expList_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token COMMA22=null; Oberon2Parser.expression_return expression21 = null; Oberon2Parser.expression_return expression23 = null; CommonTree COMMA22_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:529:2: ( expression ( COMMA expression )* ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:530:9: expression ( COMMA expression )* { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_expression_in_expList1816); expression21=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression21.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:530:20: ( COMMA expression )* loop10: do { int alt10=2; int LA10_0 = input.LA(1); if ( (LA10_0==COMMA) ) { alt10=1; } switch (alt10) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:530:22: COMMA expression { COMMA22=(Token)match(input,COMMA,FOLLOW_COMMA_in_expList1820); if (state.failed) return retval; if ( state.backtracking==0 ) { COMMA22_tree = (CommonTree)adaptor.create(COMMA22); adaptor.addChild(root_0, COMMA22_tree); } pushFollow(FOLLOW_expression_in_expList1822); expression23=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression23.getTree()); } break; default : break loop10; } } while (true); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "expList" public static class expression_return extends ParserRuleReturnScope { public Expression expr; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "expression" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:536:1: expression returns [Expression expr] : simpleExpression ( relation simpleExpression )? ; public final Oberon2Parser.expression_return expression() throws RecognitionException { Oberon2Parser.expression_return retval = new Oberon2Parser.expression_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.simpleExpression_return simpleExpression24 = null; Oberon2Parser.relation_return relation25 = null; Oberon2Parser.simpleExpression_return simpleExpression26 = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:537:2: ( simpleExpression ( relation simpleExpression )? ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:538:9: simpleExpression ( relation simpleExpression )? { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_simpleExpression_in_expression1850); simpleExpression24=simpleExpression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, simpleExpression24.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:538:26: ( relation simpleExpression )? int alt11=2; int LA11_0 = input.LA(1); if ( (LA11_0==EQUAL||(LA11_0>=NEQUAL && LA11_0<=GEQ)) ) { alt11=1; } switch (alt11) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:538:28: relation simpleExpression { pushFollow(FOLLOW_relation_in_expression1854); relation25=relation(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot(relation25.getTree(), root_0); pushFollow(FOLLOW_simpleExpression_in_expression1857); simpleExpression26=simpleExpression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, simpleExpression26.getTree()); } break; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "expression" public static class simpleExpression_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "simpleExpression" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:540:1: simpleExpression : unaryExpression ( addOperator term )* ; public final Oberon2Parser.simpleExpression_return simpleExpression() throws RecognitionException { Oberon2Parser.simpleExpression_return retval = new Oberon2Parser.simpleExpression_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.unaryExpression_return unaryExpression27 = null; Oberon2Parser.addOperator_return addOperator28 = null; Oberon2Parser.term_return term29 = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:541:2: ( unaryExpression ( addOperator term )* ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:542:9: unaryExpression ( addOperator term )* { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_unaryExpression_in_simpleExpression1879); unaryExpression27=unaryExpression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryExpression27.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:542:25: ( addOperator term )* loop12: do { int alt12=2; int LA12_0 = input.LA(1); if ( ((LA12_0>=PLUS && LA12_0<=MINUS)||LA12_0==75) ) { alt12=1; } switch (alt12) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:542:27: addOperator term { pushFollow(FOLLOW_addOperator_in_simpleExpression1883); addOperator28=addOperator(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot(addOperator28.getTree(), root_0); pushFollow(FOLLOW_term_in_simpleExpression1886); term29=term(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, term29.getTree()); } break; default : break loop12; } } while (true); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "simpleExpression" public static class unaryExpression_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "unaryExpression" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:544:1: unaryExpression : ( term | ( PLUS term ) | ( MINUS term ) ); public final Oberon2Parser.unaryExpression_return unaryExpression() throws RecognitionException { Oberon2Parser.unaryExpression_return retval = new Oberon2Parser.unaryExpression_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token PLUS31=null; Token MINUS33=null; Oberon2Parser.term_return term30 = null; Oberon2Parser.term_return term32 = null; Oberon2Parser.term_return term34 = null; CommonTree PLUS31_tree=null; CommonTree MINUS33_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:545:2: ( term | ( PLUS term ) | ( MINUS term ) ) int alt13=3; switch ( input.LA(1) ) { case LPAREN: case TILDE: case IDENT: case INTEGER: case REAL: case LONGREAL: case CHARCONST: case STRING: case 74: { alt13=1; } break; case PLUS: { alt13=2; } break; case MINUS: { alt13=3; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 13, 0, input); throw nvae; } switch (alt13) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:546:2: term { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_term_in_unaryExpression1909); term30=term(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, term30.getTree()); } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:547:2: ( PLUS term ) { root_0 = (CommonTree)adaptor.nil(); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:547:2: ( PLUS term ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:547:4: PLUS term { PLUS31=(Token)match(input,PLUS,FOLLOW_PLUS_in_unaryExpression1916); if (state.failed) return retval; if ( state.backtracking==0 ) { PLUS31_tree = (CommonTree)adaptor.create(PLUS31); adaptor.addChild(root_0, PLUS31_tree); } pushFollow(FOLLOW_term_in_unaryExpression1918); term32=term(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, term32.getTree()); } } break; case 3 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:548:4: ( MINUS term ) { root_0 = (CommonTree)adaptor.nil(); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:548:4: ( MINUS term ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:548:6: MINUS term { MINUS33=(Token)match(input,MINUS,FOLLOW_MINUS_in_unaryExpression1928); if (state.failed) return retval; if ( state.backtracking==0 ) { MINUS33_tree = (CommonTree)adaptor.create(MINUS33); adaptor.addChild(root_0, MINUS33_tree); } pushFollow(FOLLOW_term_in_unaryExpression1930); term34=term(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, term34.getTree()); } } break; } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "unaryExpression" public static class term_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "term" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:550:1: term : factor ( mulOperator factor )* ; public final Oberon2Parser.term_return term() throws RecognitionException { Oberon2Parser.term_return retval = new Oberon2Parser.term_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.factor_return factor35 = null; Oberon2Parser.mulOperator_return mulOperator36 = null; Oberon2Parser.factor_return factor37 = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:551:2: ( factor ( mulOperator factor )* ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:552:9: factor ( mulOperator factor )* { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_factor_in_term1951); factor35=factor(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, factor35.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:552:16: ( mulOperator factor )* loop14: do { int alt14=2; int LA14_0 = input.LA(1); if ( (LA14_0==STAR||(LA14_0>=SLASH && LA14_0<=AMP)||(LA14_0>=76 && LA14_0<=77)) ) { alt14=1; } switch (alt14) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:552:18: mulOperator factor { pushFollow(FOLLOW_mulOperator_in_term1955); mulOperator36=mulOperator(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot(mulOperator36.getTree(), root_0); pushFollow(FOLLOW_factor_in_term1958); factor37=factor(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, factor37.getTree()); } break; default : break loop14; } } while (true); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "term" public static class factor_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "factor" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:554:1: factor : ( designator ( actualParameters )? | constant | 'NIL' | LPAREN expression RPAREN | TILDE factor ); public final Oberon2Parser.factor_return factor() throws RecognitionException { Oberon2Parser.factor_return retval = new Oberon2Parser.factor_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal41=null; Token LPAREN42=null; Token RPAREN44=null; Token TILDE45=null; Oberon2Parser.designator_return designator38 = null; Oberon2Parser.actualParameters_return actualParameters39 = null; Oberon2Parser.constant_return constant40 = null; Oberon2Parser.expression_return expression43 = null; Oberon2Parser.factor_return factor46 = null; CommonTree string_literal41_tree=null; CommonTree LPAREN42_tree=null; CommonTree RPAREN44_tree=null; CommonTree TILDE45_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:555:2: ( designator ( actualParameters )? | constant | 'NIL' | LPAREN expression RPAREN | TILDE factor ) int alt16=5; switch ( input.LA(1) ) { case IDENT: { alt16=1; } break; case INTEGER: case REAL: case LONGREAL: case CHARCONST: case STRING: { alt16=2; } break; case 74: { alt16=3; } break; case LPAREN: { alt16=4; } break; case TILDE: { alt16=5; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 16, 0, input); throw nvae; } switch (alt16) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:556:9: designator ( actualParameters )? { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_designator_in_factor1980); designator38=designator(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, designator38.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:556:20: ( actualParameters )? int alt15=2; int LA15_0 = input.LA(1); if ( (LA15_0==LPAREN) ) { alt15=1; } switch (alt15) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:556:21: actualParameters { pushFollow(FOLLOW_actualParameters_in_factor1983); actualParameters39=actualParameters(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, actualParameters39.getTree()); } break; } } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:557:9: constant { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_constant_in_factor1998); constant40=constant(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, constant40.getTree()); } break; case 3 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:558:9: 'NIL' { root_0 = (CommonTree)adaptor.nil(); string_literal41=(Token)match(input,74,FOLLOW_74_in_factor2010); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal41_tree = (CommonTree)adaptor.create(string_literal41); adaptor.addChild(root_0, string_literal41_tree); } } break; case 4 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:558:17: LPAREN expression RPAREN { root_0 = (CommonTree)adaptor.nil(); LPAREN42=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_factor2014); if (state.failed) return retval; pushFollow(FOLLOW_expression_in_factor2017); expression43=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression43.getTree()); RPAREN44=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_factor2019); if (state.failed) return retval; } break; case 5 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:558:46: TILDE factor { root_0 = (CommonTree)adaptor.nil(); TILDE45=(Token)match(input,TILDE,FOLLOW_TILDE_in_factor2024); if (state.failed) return retval; if ( state.backtracking==0 ) { TILDE45_tree = (CommonTree)adaptor.create(TILDE45); root_0 = (CommonTree)adaptor.becomeRoot(TILDE45_tree, root_0); } pushFollow(FOLLOW_factor_in_factor2027); factor46=factor(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, factor46.getTree()); } break; } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "factor" public static class actualParameters_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "actualParameters" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:560:1: actualParameters : LPAREN ( expList )? RPAREN ; public final Oberon2Parser.actualParameters_return actualParameters() throws RecognitionException { Oberon2Parser.actualParameters_return retval = new Oberon2Parser.actualParameters_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token LPAREN47=null; Token RPAREN49=null; Oberon2Parser.expList_return expList48 = null; CommonTree LPAREN47_tree=null; CommonTree RPAREN49_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:560:19: ( LPAREN ( expList )? RPAREN ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:561:9: LPAREN ( expList )? RPAREN { root_0 = (CommonTree)adaptor.nil(); LPAREN47=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_actualParameters2045); if (state.failed) return retval; if ( state.backtracking==0 ) { LPAREN47_tree = (CommonTree)adaptor.create(LPAREN47); adaptor.addChild(root_0, LPAREN47_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:561:16: ( expList )? int alt17=2; int LA17_0 = input.LA(1); if ( (LA17_0==LPAREN||(LA17_0>=PLUS && LA17_0<=MINUS)||LA17_0==TILDE||(LA17_0>=IDENT && LA17_0<=STRING)||LA17_0==74) ) { alt17=1; } switch (alt17) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:561:17: expList { pushFollow(FOLLOW_expList_in_actualParameters2048); expList48=expList(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expList48.getTree()); } break; } RPAREN49=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_actualParameters2052); if (state.failed) return retval; if ( state.backtracking==0 ) { RPAREN49_tree = (CommonTree)adaptor.create(RPAREN49); adaptor.addChild(root_0, RPAREN49_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "actualParameters" public static class relation_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "relation" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:565:1: relation : ( EQUAL | NEQUAL | LESS | LEQ | GREATER | GEQ ); public final Oberon2Parser.relation_return relation() throws RecognitionException { Oberon2Parser.relation_return retval = new Oberon2Parser.relation_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token set50=null; CommonTree set50_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:565:10: ( EQUAL | NEQUAL | LESS | LEQ | GREATER | GEQ ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g: { root_0 = (CommonTree)adaptor.nil(); set50=(Token)input.LT(1); if ( input.LA(1)==EQUAL||(input.LA(1)>=NEQUAL && input.LA(1)<=GEQ) ) { input.consume(); if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set50)); state.errorRecovery=false;state.failed=false; } else { if (state.backtracking>0) {state.failed=true; return retval;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "relation" public static class addOperator_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "addOperator" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:568:1: addOperator : ( PLUS | MINUS | 'OR' ); public final Oberon2Parser.addOperator_return addOperator() throws RecognitionException { Oberon2Parser.addOperator_return retval = new Oberon2Parser.addOperator_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token set51=null; CommonTree set51_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:568:13: ( PLUS | MINUS | 'OR' ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g: { root_0 = (CommonTree)adaptor.nil(); set51=(Token)input.LT(1); if ( (input.LA(1)>=PLUS && input.LA(1)<=MINUS)||input.LA(1)==75 ) { input.consume(); if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set51)); state.errorRecovery=false;state.failed=false; } else { if (state.backtracking>0) {state.failed=true; return retval;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "addOperator" public static class mulOperator_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "mulOperator" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:571:1: mulOperator : ( STAR | SLASH | 'DIV' | 'MOD' | AMP ); public final Oberon2Parser.mulOperator_return mulOperator() throws RecognitionException { Oberon2Parser.mulOperator_return retval = new Oberon2Parser.mulOperator_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token set52=null; CommonTree set52_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:571:13: ( STAR | SLASH | 'DIV' | 'MOD' | AMP ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g: { root_0 = (CommonTree)adaptor.nil(); set52=(Token)input.LT(1); if ( input.LA(1)==STAR||(input.LA(1)>=SLASH && input.LA(1)<=AMP)||(input.LA(1)>=76 && input.LA(1)<=77) ) { input.consume(); if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set52)); state.errorRecovery=false;state.failed=false; } else { if (state.backtracking>0) {state.failed=true; return retval;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "mulOperator" public static class statement_return extends ParserRuleReturnScope { public Statement statement; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "statement" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:576:1: statement returns [Statement statement] : ( 'EXIT' | 'RETURN' ( expression )? | expression | assignment | procedureCall | ifStatement | caseStatement | whileStatement | repeatStatement | forStatement | loopStatement )? ; public final Oberon2Parser.statement_return statement() throws RecognitionException { Oberon2Parser.statement_return retval = new Oberon2Parser.statement_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal53=null; Token string_literal54=null; Oberon2Parser.expression_return expression55 = null; Oberon2Parser.expression_return expression56 = null; Oberon2Parser.assignment_return assignment57 = null; Oberon2Parser.procedureCall_return procedureCall58 = null; Oberon2Parser.ifStatement_return ifStatement59 = null; Oberon2Parser.caseStatement_return caseStatement60 = null; Oberon2Parser.whileStatement_return whileStatement61 = null; Oberon2Parser.repeatStatement_return repeatStatement62 = null; Oberon2Parser.forStatement_return forStatement63 = null; Oberon2Parser.loopStatement_return loopStatement64 = null; CommonTree string_literal53_tree=null; CommonTree string_literal54_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:577:2: ( ( 'EXIT' | 'RETURN' ( expression )? | expression | assignment | procedureCall | ifStatement | caseStatement | whileStatement | repeatStatement | forStatement | loopStatement )? ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:578:9: ( 'EXIT' | 'RETURN' ( expression )? | expression | assignment | procedureCall | ifStatement | caseStatement | whileStatement | repeatStatement | forStatement | loopStatement )? { root_0 = (CommonTree)adaptor.nil(); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:578:9: ( 'EXIT' | 'RETURN' ( expression )? | expression | assignment | procedureCall | ifStatement | caseStatement | whileStatement | repeatStatement | forStatement | loopStatement )? int alt19=12; alt19 = dfa19.predict(input); switch (alt19) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:579:13: 'EXIT' { string_literal53=(Token)match(input,78,FOLLOW_78_in_statement2187); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal53_tree = (CommonTree)adaptor.create(string_literal53); adaptor.addChild(root_0, string_literal53_tree); } } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:579:22: 'RETURN' ( expression )? { string_literal54=(Token)match(input,79,FOLLOW_79_in_statement2191); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal54_tree = (CommonTree)adaptor.create(string_literal54); adaptor.addChild(root_0, string_literal54_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:579:31: ( expression )? int alt18=2; int LA18_0 = input.LA(1); if ( (LA18_0==LPAREN||(LA18_0>=PLUS && LA18_0<=MINUS)||LA18_0==TILDE||(LA18_0>=IDENT && LA18_0<=STRING)||LA18_0==74) ) { alt18=1; } switch (alt18) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:579:32: expression { pushFollow(FOLLOW_expression_in_statement2194); expression55=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression55.getTree()); } break; } } break; case 3 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:580:13: expression { pushFollow(FOLLOW_expression_in_statement2212); expression56=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression56.getTree()); } break; case 4 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:581:13: assignment { pushFollow(FOLLOW_assignment_in_statement2228); assignment57=assignment(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, assignment57.getTree()); } break; case 5 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:581:26: procedureCall { pushFollow(FOLLOW_procedureCall_in_statement2232); procedureCall58=procedureCall(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, procedureCall58.getTree()); } break; case 6 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:582:13: ifStatement { pushFollow(FOLLOW_ifStatement_in_statement2248); ifStatement59=ifStatement(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, ifStatement59.getTree()); } break; case 7 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:582:27: caseStatement { pushFollow(FOLLOW_caseStatement_in_statement2252); caseStatement60=caseStatement(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, caseStatement60.getTree()); } break; case 8 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:583:13: whileStatement { pushFollow(FOLLOW_whileStatement_in_statement2268); whileStatement61=whileStatement(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, whileStatement61.getTree()); } break; case 9 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:583:30: repeatStatement { pushFollow(FOLLOW_repeatStatement_in_statement2272); repeatStatement62=repeatStatement(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, repeatStatement62.getTree()); } break; case 10 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:584:13: forStatement { pushFollow(FOLLOW_forStatement_in_statement2288); forStatement63=forStatement(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, forStatement63.getTree()); } break; case 11 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:584:28: loopStatement { pushFollow(FOLLOW_loopStatement_in_statement2292); loopStatement64=loopStatement(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, loopStatement64.getTree()); } break; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "statement" public static class assignment_return extends ParserRuleReturnScope { public Statement statement; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "assignment" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:588:1: assignment returns [Statement statement] : designator ASSIGN expression ; public final Oberon2Parser.assignment_return assignment() throws RecognitionException { Oberon2Parser.assignment_return retval = new Oberon2Parser.assignment_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token ASSIGN66=null; Oberon2Parser.designator_return designator65 = null; Oberon2Parser.expression_return expression67 = null; CommonTree ASSIGN66_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:589:2: ( designator ASSIGN expression ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:590:9: designator ASSIGN expression { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_designator_in_assignment2327); designator65=designator(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, designator65.getTree()); ASSIGN66=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_assignment2329); if (state.failed) return retval; if ( state.backtracking==0 ) { ASSIGN66_tree = (CommonTree)adaptor.create(ASSIGN66); root_0 = (CommonTree)adaptor.becomeRoot(ASSIGN66_tree, root_0); } pushFollow(FOLLOW_expression_in_assignment2332); expression67=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression67.getTree()); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "assignment" public static class procedureCall_return extends ParserRuleReturnScope { public Statement statement; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "procedureCall" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:594:1: procedureCall returns [Statement statement] : designator ( actualParameters )? ; public final Oberon2Parser.procedureCall_return procedureCall() throws RecognitionException { Oberon2Parser.procedureCall_return retval = new Oberon2Parser.procedureCall_return(); retval.start = input.LT(1); CommonTree root_0 = null; Oberon2Parser.designator_return designator68 = null; Oberon2Parser.actualParameters_return actualParameters69 = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:595:2: ( designator ( actualParameters )? ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:596:9: designator ( actualParameters )? { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_designator_in_procedureCall2365); designator68=designator(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, designator68.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:596:20: ( actualParameters )? int alt20=2; int LA20_0 = input.LA(1); if ( (LA20_0==LPAREN) ) { alt20=1; } switch (alt20) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:596:21: actualParameters { pushFollow(FOLLOW_actualParameters_in_procedureCall2368); actualParameters69=actualParameters(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, actualParameters69.getTree()); } break; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "procedureCall" public static class statementSequence_return extends ParserRuleReturnScope { public List statementList; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "statementSequence" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:603:1: statementSequence returns [List statementList] : s= statement ( SEMICOLON s= statement )* ; public final Oberon2Parser.statementSequence_return statementSequence() throws RecognitionException { Oberon2Parser.statementSequence_return retval = new Oberon2Parser.statementSequence_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token SEMICOLON70=null; Oberon2Parser.statement_return s = null; CommonTree SEMICOLON70_tree=null; retval.statementList = new ArrayList(); try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:607:2: (s= statement ( SEMICOLON s= statement )* ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:607:4: s= statement ( SEMICOLON s= statement )* { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_statement_in_statementSequence2403); s=statement(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, s.getTree()); if ( state.backtracking==0 ) { retval.statementList.add((s!=null?s.statement:null)); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:607:52: ( SEMICOLON s= statement )* loop21: do { int alt21=2; int LA21_0 = input.LA(1); if ( (LA21_0==SEMICOLON) ) { alt21=1; } switch (alt21) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:607:54: SEMICOLON s= statement { SEMICOLON70=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_statementSequence2409); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON70_tree = (CommonTree)adaptor.create(SEMICOLON70); adaptor.addChild(root_0, SEMICOLON70_tree); } pushFollow(FOLLOW_statement_in_statementSequence2413); s=statement(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, s.getTree()); if ( state.backtracking==0 ) { retval.statementList.add((s!=null?s.statement:null)); } } break; default : break loop21; } } while (true); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "statementSequence" public static class ifStatement_return extends ParserRuleReturnScope { public Statement statement; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "ifStatement" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:613:1: ifStatement returns [Statement statement] : 'IF' expression 'THEN' statementSequence ( 'ELSIF' expression 'THEN' statementSequence )* ( 'ELSE' statementSequence )? 'END' ; public final Oberon2Parser.ifStatement_return ifStatement() throws RecognitionException { Oberon2Parser.ifStatement_return retval = new Oberon2Parser.ifStatement_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal71=null; Token string_literal73=null; Token string_literal75=null; Token string_literal77=null; Token string_literal79=null; Token string_literal81=null; Oberon2Parser.expression_return expression72 = null; Oberon2Parser.statementSequence_return statementSequence74 = null; Oberon2Parser.expression_return expression76 = null; Oberon2Parser.statementSequence_return statementSequence78 = null; Oberon2Parser.statementSequence_return statementSequence80 = null; CommonTree string_literal71_tree=null; CommonTree string_literal73_tree=null; CommonTree string_literal75_tree=null; CommonTree string_literal77_tree=null; CommonTree string_literal79_tree=null; CommonTree string_literal81_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:614:2: ( 'IF' expression 'THEN' statementSequence ( 'ELSIF' expression 'THEN' statementSequence )* ( 'ELSE' statementSequence )? 'END' ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:615:9: 'IF' expression 'THEN' statementSequence ( 'ELSIF' expression 'THEN' statementSequence )* ( 'ELSE' statementSequence )? 'END' { root_0 = (CommonTree)adaptor.nil(); string_literal71=(Token)match(input,80,FOLLOW_80_in_ifStatement2444); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal71_tree = (CommonTree)adaptor.create(string_literal71); adaptor.addChild(root_0, string_literal71_tree); } pushFollow(FOLLOW_expression_in_ifStatement2446); expression72=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression72.getTree()); string_literal73=(Token)match(input,81,FOLLOW_81_in_ifStatement2448); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal73_tree = (CommonTree)adaptor.create(string_literal73); adaptor.addChild(root_0, string_literal73_tree); } pushFollow(FOLLOW_statementSequence_in_ifStatement2450); statementSequence74=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence74.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:616:9: ( 'ELSIF' expression 'THEN' statementSequence )* loop22: do { int alt22=2; int LA22_0 = input.LA(1); if ( (LA22_0==82) ) { alt22=1; } switch (alt22) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:616:11: 'ELSIF' expression 'THEN' statementSequence { string_literal75=(Token)match(input,82,FOLLOW_82_in_ifStatement2462); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal75_tree = (CommonTree)adaptor.create(string_literal75); adaptor.addChild(root_0, string_literal75_tree); } pushFollow(FOLLOW_expression_in_ifStatement2464); expression76=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression76.getTree()); string_literal77=(Token)match(input,81,FOLLOW_81_in_ifStatement2466); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal77_tree = (CommonTree)adaptor.create(string_literal77); adaptor.addChild(root_0, string_literal77_tree); } pushFollow(FOLLOW_statementSequence_in_ifStatement2468); statementSequence78=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence78.getTree()); } break; default : break loop22; } } while (true); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:617:9: ( 'ELSE' statementSequence )? int alt23=2; int LA23_0 = input.LA(1); if ( (LA23_0==83) ) { alt23=1; } switch (alt23) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:617:11: 'ELSE' statementSequence { string_literal79=(Token)match(input,83,FOLLOW_83_in_ifStatement2483); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal79_tree = (CommonTree)adaptor.create(string_literal79); adaptor.addChild(root_0, string_literal79_tree); } pushFollow(FOLLOW_statementSequence_in_ifStatement2485); statementSequence80=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence80.getTree()); } break; } string_literal81=(Token)match(input,84,FOLLOW_84_in_ifStatement2498); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal81_tree = (CommonTree)adaptor.create(string_literal81); adaptor.addChild(root_0, string_literal81_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "ifStatement" public static class caseStatement_return extends ParserRuleReturnScope { public Statement statement; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "caseStatement" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:622:1: caseStatement returns [Statement statement] : 'CASE' expression 'OF' obcase ( STROKE obcase )* ( 'ELSE' statementSequence )? 'END' ; public final Oberon2Parser.caseStatement_return caseStatement() throws RecognitionException { Oberon2Parser.caseStatement_return retval = new Oberon2Parser.caseStatement_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal82=null; Token string_literal84=null; Token STROKE86=null; Token string_literal88=null; Token string_literal90=null; Oberon2Parser.expression_return expression83 = null; Oberon2Parser.obcase_return obcase85 = null; Oberon2Parser.obcase_return obcase87 = null; Oberon2Parser.statementSequence_return statementSequence89 = null; CommonTree string_literal82_tree=null; CommonTree string_literal84_tree=null; CommonTree STROKE86_tree=null; CommonTree string_literal88_tree=null; CommonTree string_literal90_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:623:2: ( 'CASE' expression 'OF' obcase ( STROKE obcase )* ( 'ELSE' statementSequence )? 'END' ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:624:9: 'CASE' expression 'OF' obcase ( STROKE obcase )* ( 'ELSE' statementSequence )? 'END' { root_0 = (CommonTree)adaptor.nil(); string_literal82=(Token)match(input,85,FOLLOW_85_in_caseStatement2522); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal82_tree = (CommonTree)adaptor.create(string_literal82); adaptor.addChild(root_0, string_literal82_tree); } pushFollow(FOLLOW_expression_in_caseStatement2524); expression83=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression83.getTree()); string_literal84=(Token)match(input,72,FOLLOW_72_in_caseStatement2526); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal84_tree = (CommonTree)adaptor.create(string_literal84); adaptor.addChild(root_0, string_literal84_tree); } pushFollow(FOLLOW_obcase_in_caseStatement2528); obcase85=obcase(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, obcase85.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:624:39: ( STROKE obcase )* loop24: do { int alt24=2; int LA24_0 = input.LA(1); if ( (LA24_0==STROKE) ) { alt24=1; } switch (alt24) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:624:41: STROKE obcase { STROKE86=(Token)match(input,STROKE,FOLLOW_STROKE_in_caseStatement2532); if (state.failed) return retval; if ( state.backtracking==0 ) { STROKE86_tree = (CommonTree)adaptor.create(STROKE86); adaptor.addChild(root_0, STROKE86_tree); } pushFollow(FOLLOW_obcase_in_caseStatement2534); obcase87=obcase(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, obcase87.getTree()); } break; default : break loop24; } } while (true); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:625:9: ( 'ELSE' statementSequence )? int alt25=2; int LA25_0 = input.LA(1); if ( (LA25_0==83) ) { alt25=1; } switch (alt25) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:625:11: 'ELSE' statementSequence { string_literal88=(Token)match(input,83,FOLLOW_83_in_caseStatement2549); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal88_tree = (CommonTree)adaptor.create(string_literal88); adaptor.addChild(root_0, string_literal88_tree); } pushFollow(FOLLOW_statementSequence_in_caseStatement2551); statementSequence89=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence89.getTree()); } break; } string_literal90=(Token)match(input,84,FOLLOW_84_in_caseStatement2564); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal90_tree = (CommonTree)adaptor.create(string_literal90); adaptor.addChild(root_0, string_literal90_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "caseStatement" public static class obcase_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "obcase" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:628:1: obcase : ( caseLabelList COLON statementSequence )? ; public final Oberon2Parser.obcase_return obcase() throws RecognitionException { Oberon2Parser.obcase_return retval = new Oberon2Parser.obcase_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token COLON92=null; Oberon2Parser.caseLabelList_return caseLabelList91 = null; Oberon2Parser.statementSequence_return statementSequence93 = null; CommonTree COLON92_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:629:2: ( ( caseLabelList COLON statementSequence )? ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:630:10: ( caseLabelList COLON statementSequence )? { root_0 = (CommonTree)adaptor.nil(); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:630:10: ( caseLabelList COLON statementSequence )? int alt26=2; int LA26_0 = input.LA(1); if ( (LA26_0==LPAREN||(LA26_0>=PLUS && LA26_0<=MINUS)||LA26_0==TILDE||(LA26_0>=IDENT && LA26_0<=STRING)||LA26_0==74) ) { alt26=1; } switch (alt26) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:630:12: caseLabelList COLON statementSequence { pushFollow(FOLLOW_caseLabelList_in_obcase2594); caseLabelList91=caseLabelList(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, caseLabelList91.getTree()); COLON92=(Token)match(input,COLON,FOLLOW_COLON_in_obcase2596); if (state.failed) return retval; if ( state.backtracking==0 ) { COLON92_tree = (CommonTree)adaptor.create(COLON92); adaptor.addChild(root_0, COLON92_tree); } pushFollow(FOLLOW_statementSequence_in_obcase2598); statementSequence93=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence93.getTree()); } break; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "obcase" public static class caseLabelList_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "caseLabelList" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:632:1: caseLabelList : caseLabels ( COMMA caseLabels )* ; public final Oberon2Parser.caseLabelList_return caseLabelList() throws RecognitionException { Oberon2Parser.caseLabelList_return retval = new Oberon2Parser.caseLabelList_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token COMMA95=null; Oberon2Parser.caseLabels_return caseLabels94 = null; Oberon2Parser.caseLabels_return caseLabels96 = null; CommonTree COMMA95_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:633:2: ( caseLabels ( COMMA caseLabels )* ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:634:10: caseLabels ( COMMA caseLabels )* { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_caseLabels_in_caseLabelList2621); caseLabels94=caseLabels(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, caseLabels94.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:634:21: ( COMMA caseLabels )* loop27: do { int alt27=2; int LA27_0 = input.LA(1); if ( (LA27_0==COMMA) ) { alt27=1; } switch (alt27) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:634:23: COMMA caseLabels { COMMA95=(Token)match(input,COMMA,FOLLOW_COMMA_in_caseLabelList2625); if (state.failed) return retval; if ( state.backtracking==0 ) { COMMA95_tree = (CommonTree)adaptor.create(COMMA95); adaptor.addChild(root_0, COMMA95_tree); } pushFollow(FOLLOW_caseLabels_in_caseLabelList2627); caseLabels96=caseLabels(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, caseLabels96.getTree()); } break; default : break loop27; } } while (true); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "caseLabelList" public static class caseLabels_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "caseLabels" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:636:1: caseLabels : constExpression ( DOTDOT constExpression )? ; public final Oberon2Parser.caseLabels_return caseLabels() throws RecognitionException { Oberon2Parser.caseLabels_return retval = new Oberon2Parser.caseLabels_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token DOTDOT98=null; Oberon2Parser.constExpression_return constExpression97 = null; Oberon2Parser.constExpression_return constExpression99 = null; CommonTree DOTDOT98_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:637:2: ( constExpression ( DOTDOT constExpression )? ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:638:9: constExpression ( DOTDOT constExpression )? { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_constExpression_in_caseLabels2649); constExpression97=constExpression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, constExpression97.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:638:25: ( DOTDOT constExpression )? int alt28=2; int LA28_0 = input.LA(1); if ( (LA28_0==DOTDOT) ) { alt28=1; } switch (alt28) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:638:27: DOTDOT constExpression { DOTDOT98=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_caseLabels2653); if (state.failed) return retval; if ( state.backtracking==0 ) { DOTDOT98_tree = (CommonTree)adaptor.create(DOTDOT98); adaptor.addChild(root_0, DOTDOT98_tree); } pushFollow(FOLLOW_constExpression_in_caseLabels2655); constExpression99=constExpression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, constExpression99.getTree()); } break; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "caseLabels" public static class whileStatement_return extends ParserRuleReturnScope { public Statement statement; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "whileStatement" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:641:1: whileStatement returns [Statement statement] : 'WHILE' expression 'DO' statementSequence 'END' ; public final Oberon2Parser.whileStatement_return whileStatement() throws RecognitionException { Oberon2Parser.whileStatement_return retval = new Oberon2Parser.whileStatement_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal100=null; Token string_literal102=null; Token string_literal104=null; Oberon2Parser.expression_return expression101 = null; Oberon2Parser.statementSequence_return statementSequence103 = null; CommonTree string_literal100_tree=null; CommonTree string_literal102_tree=null; CommonTree string_literal104_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:642:2: ( 'WHILE' expression 'DO' statementSequence 'END' ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:643:9: 'WHILE' expression 'DO' statementSequence 'END' { root_0 = (CommonTree)adaptor.nil(); string_literal100=(Token)match(input,86,FOLLOW_86_in_whileStatement2682); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal100_tree = (CommonTree)adaptor.create(string_literal100); adaptor.addChild(root_0, string_literal100_tree); } pushFollow(FOLLOW_expression_in_whileStatement2684); expression101=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression101.getTree()); string_literal102=(Token)match(input,87,FOLLOW_87_in_whileStatement2686); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal102_tree = (CommonTree)adaptor.create(string_literal102); adaptor.addChild(root_0, string_literal102_tree); } pushFollow(FOLLOW_statementSequence_in_whileStatement2688); statementSequence103=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence103.getTree()); string_literal104=(Token)match(input,84,FOLLOW_84_in_whileStatement2690); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal104_tree = (CommonTree)adaptor.create(string_literal104); adaptor.addChild(root_0, string_literal104_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "whileStatement" public static class repeatStatement_return extends ParserRuleReturnScope { public Statement statement; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "repeatStatement" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:646:1: repeatStatement returns [Statement statement] : 'REPEAT' statementSequence 'UNTIL' expression ; public final Oberon2Parser.repeatStatement_return repeatStatement() throws RecognitionException { Oberon2Parser.repeatStatement_return retval = new Oberon2Parser.repeatStatement_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal105=null; Token string_literal107=null; Oberon2Parser.statementSequence_return statementSequence106 = null; Oberon2Parser.expression_return expression108 = null; CommonTree string_literal105_tree=null; CommonTree string_literal107_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:647:2: ( 'REPEAT' statementSequence 'UNTIL' expression ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:648:9: 'REPEAT' statementSequence 'UNTIL' expression { root_0 = (CommonTree)adaptor.nil(); string_literal105=(Token)match(input,88,FOLLOW_88_in_repeatStatement2714); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal105_tree = (CommonTree)adaptor.create(string_literal105); adaptor.addChild(root_0, string_literal105_tree); } pushFollow(FOLLOW_statementSequence_in_repeatStatement2716); statementSequence106=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence106.getTree()); string_literal107=(Token)match(input,89,FOLLOW_89_in_repeatStatement2718); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal107_tree = (CommonTree)adaptor.create(string_literal107); adaptor.addChild(root_0, string_literal107_tree); } pushFollow(FOLLOW_expression_in_repeatStatement2720); expression108=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression108.getTree()); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "repeatStatement" public static class forStatement_return extends ParserRuleReturnScope { public Statement statement; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "forStatement" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:651:1: forStatement returns [Statement statement] : 'FOR' ident ASSIGN expression 'TO' expression ( 'BY' constExpression )? 'DO' statementSequence 'END' ; public final Oberon2Parser.forStatement_return forStatement() throws RecognitionException { Oberon2Parser.forStatement_return retval = new Oberon2Parser.forStatement_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal109=null; Token ASSIGN111=null; Token string_literal113=null; Token string_literal115=null; Token string_literal117=null; Token string_literal119=null; Oberon2Parser.ident_return ident110 = null; Oberon2Parser.expression_return expression112 = null; Oberon2Parser.expression_return expression114 = null; Oberon2Parser.constExpression_return constExpression116 = null; Oberon2Parser.statementSequence_return statementSequence118 = null; CommonTree string_literal109_tree=null; CommonTree ASSIGN111_tree=null; CommonTree string_literal113_tree=null; CommonTree string_literal115_tree=null; CommonTree string_literal117_tree=null; CommonTree string_literal119_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:652:2: ( 'FOR' ident ASSIGN expression 'TO' expression ( 'BY' constExpression )? 'DO' statementSequence 'END' ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:653:9: 'FOR' ident ASSIGN expression 'TO' expression ( 'BY' constExpression )? 'DO' statementSequence 'END' { root_0 = (CommonTree)adaptor.nil(); string_literal109=(Token)match(input,90,FOLLOW_90_in_forStatement2744); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal109_tree = (CommonTree)adaptor.create(string_literal109); adaptor.addChild(root_0, string_literal109_tree); } pushFollow(FOLLOW_ident_in_forStatement2746); ident110=ident(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, ident110.getTree()); ASSIGN111=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_forStatement2748); if (state.failed) return retval; if ( state.backtracking==0 ) { ASSIGN111_tree = (CommonTree)adaptor.create(ASSIGN111); adaptor.addChild(root_0, ASSIGN111_tree); } pushFollow(FOLLOW_expression_in_forStatement2750); expression112=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression112.getTree()); string_literal113=(Token)match(input,91,FOLLOW_91_in_forStatement2752); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal113_tree = (CommonTree)adaptor.create(string_literal113); adaptor.addChild(root_0, string_literal113_tree); } pushFollow(FOLLOW_expression_in_forStatement2754); expression114=expression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, expression114.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:654:9: ( 'BY' constExpression )? int alt29=2; int LA29_0 = input.LA(1); if ( (LA29_0==92) ) { alt29=1; } switch (alt29) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:654:11: 'BY' constExpression { string_literal115=(Token)match(input,92,FOLLOW_92_in_forStatement2766); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal115_tree = (CommonTree)adaptor.create(string_literal115); adaptor.addChild(root_0, string_literal115_tree); } pushFollow(FOLLOW_constExpression_in_forStatement2768); constExpression116=constExpression(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, constExpression116.getTree()); } break; } string_literal117=(Token)match(input,87,FOLLOW_87_in_forStatement2773); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal117_tree = (CommonTree)adaptor.create(string_literal117); adaptor.addChild(root_0, string_literal117_tree); } pushFollow(FOLLOW_statementSequence_in_forStatement2775); statementSequence118=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence118.getTree()); string_literal119=(Token)match(input,84,FOLLOW_84_in_forStatement2777); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal119_tree = (CommonTree)adaptor.create(string_literal119); adaptor.addChild(root_0, string_literal119_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "forStatement" public static class loopStatement_return extends ParserRuleReturnScope { public Statement statement; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "loopStatement" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:657:1: loopStatement returns [Statement statement] : 'LOOP' statementSequence 'END' ; public final Oberon2Parser.loopStatement_return loopStatement() throws RecognitionException { Oberon2Parser.loopStatement_return retval = new Oberon2Parser.loopStatement_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal120=null; Token string_literal122=null; Oberon2Parser.statementSequence_return statementSequence121 = null; CommonTree string_literal120_tree=null; CommonTree string_literal122_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:658:2: ( 'LOOP' statementSequence 'END' ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:659:9: 'LOOP' statementSequence 'END' { root_0 = (CommonTree)adaptor.nil(); string_literal120=(Token)match(input,93,FOLLOW_93_in_loopStatement2801); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal120_tree = (CommonTree)adaptor.create(string_literal120); adaptor.addChild(root_0, string_literal120_tree); } pushFollow(FOLLOW_statementSequence_in_loopStatement2803); statementSequence121=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence121.getTree()); string_literal122=(Token)match(input,84,FOLLOW_84_in_loopStatement2805); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal122_tree = (CommonTree)adaptor.create(string_literal122); adaptor.addChild(root_0, string_literal122_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "loopStatement" public static class procedureDeclaration_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "procedureDeclaration" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:663:1: procedureDeclaration : 'PROCEDURE' procid= identDef[null] (fp= formalParameters )? SEMICOLON pbody= procedureBody procendid= ident ; public final Oberon2Parser.procedureDeclaration_return procedureDeclaration() throws RecognitionException { Oberon2Parser.procedureDeclaration_return retval = new Oberon2Parser.procedureDeclaration_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal123=null; Token SEMICOLON124=null; Oberon2Parser.identDef_return procid = null; Oberon2Parser.formalParameters_return fp = null; Oberon2Parser.procedureBody_return pbody = null; Oberon2Parser.ident_return procendid = null; CommonTree string_literal123_tree=null; CommonTree SEMICOLON124_tree=null; Scope scopeBackup = null; ProcedureType procTypeBackup = null; //boolean inLoopBackup = false; ProcedureType typ = null; Scope procScope = null; LValue lValue = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:672:2: ( 'PROCEDURE' procid= identDef[null] (fp= formalParameters )? SEMICOLON pbody= procedureBody procendid= ident ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:672:4: 'PROCEDURE' procid= identDef[null] (fp= formalParameters )? SEMICOLON pbody= procedureBody procendid= ident { root_0 = (CommonTree)adaptor.nil(); string_literal123=(Token)match(input,73,FOLLOW_73_in_procedureDeclaration2822); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal123_tree = (CommonTree)adaptor.create(string_literal123); adaptor.addChild(root_0, string_literal123_tree); } pushFollow(FOLLOW_identDef_in_procedureDeclaration2826); procid=identDef(null); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, procid.getTree()); if ( state.backtracking==0 ) { // new scope for formalParameters and procedure body scopeBackup = pc.scope; procScope = new Scope(scopeBackup); pc.scope = procScope; } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:679:5: (fp= formalParameters )? int alt30=2; int LA30_0 = input.LA(1); if ( (LA30_0==LPAREN) ) { alt30=1; } switch (alt30) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:0:0: fp= formalParameters { pushFollow(FOLLOW_formalParameters_in_procedureDeclaration2838); fp=formalParameters(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, fp.getTree()); } break; } if ( state.backtracking==0 ) { // new procedure type for body procTypeBackup = pc.procedureType; if((fp!=null?input.toString(fp.start,fp.stop):null) != null){ typ = new ProcedureType((fp!=null?fp.retType:null)); for(ProcedureType.FormalParameter fpr : (fp!=null?fp.params:null)){ typ.formalParameters.add(fpr); } }else{ typ = ProcedureType.COMMAND; } pc.procedureType = typ; //System.out.println(typ.toString()); // if proc was not declared forwardly // do this manually if(!(procid!=null?procid.needReplace:false)){ lValue = new SimpleLValue(typ, NilValue.NIL, true); lValue.declarationPoint = new CodePoint((procid!=null?((Token)procid.start):null).getLine(), (procid!=null?((Token)procid.start):null).getCharPositionInLine()); scopeBackup.declare((procid!=null?input.toString(procid.start,procid.stop):null), lValue); Oberon2.definedIds.add(new Oberon2.DefinitionInfo((procid!=null?input.toString(procid.start,procid.stop):null), scopeBackup)); } } SEMICOLON124=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_procedureDeclaration2847); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON124_tree = (CommonTree)adaptor.create(SEMICOLON124); adaptor.addChild(root_0, SEMICOLON124_tree); } pushFollow(FOLLOW_procedureBody_in_procedureDeclaration2851); pbody=procedureBody(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, pbody.getTree()); if ( state.backtracking==0 ) { // restore BEFORE creating and declaring procedure pc.scope = scopeBackup; pc.procedureType = procTypeBackup; } pushFollow(FOLLOW_ident_in_procedureDeclaration2861); procendid=ident(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, procendid.getTree()); if ( state.backtracking==0 ) { if(!(procid!=null?input.toString(procid.start,procid.stop):null).equals((procendid!=null?input.toString(procendid.start,procendid.stop):null))) throw new Oberon2Exception(new CodePoint((procendid!=null?((Token)procendid.start):null).getLine(), (procendid!=null?((Token)procendid.start):null).getCharPositionInLine()), "Procedure names at start and end differ"); ProcedureValue v = new ProcedureValue(typ, (fp!=null?fp.paramNames:null), procScope, (pbody!=null?pbody.statementList:null)); lValue = new SimpleLValue(typ, v, true); lValue.declarationPoint = new CodePoint((procid!=null?((Token)procid.start):null).getLine(), (procid!=null?((Token)procid.start):null).getCharPositionInLine()); //if((procid!=null?procid.needReplace:false)){ // need replace always try{ pc.scope.replace((procid!=null?input.toString(procid.start,procid.stop):null), lValue); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } /*}else{ pc.scope.declare((procid!=null?input.toString(procid.start,procid.stop):null), lValue); Oberon2.definedIds.add(new Oberon2.DefinitionInfo((procid!=null?input.toString(procid.start,procid.stop):null), pc.scope)); }*/ } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "procedureDeclaration" public static class procedureBody_return extends ParserRuleReturnScope { public List statementList; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "procedureBody" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:740:1: procedureBody returns [List statementList] : declarationSequence ( 'BEGIN' statementSequence )? 'END' ; public final Oberon2Parser.procedureBody_return procedureBody() throws RecognitionException { Oberon2Parser.procedureBody_return retval = new Oberon2Parser.procedureBody_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal126=null; Token string_literal128=null; Oberon2Parser.declarationSequence_return declarationSequence125 = null; Oberon2Parser.statementSequence_return statementSequence127 = null; CommonTree string_literal126_tree=null; CommonTree string_literal128_tree=null; retval.statementList = new ArrayList(); try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:744:2: ( declarationSequence ( 'BEGIN' statementSequence )? 'END' ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:745:9: declarationSequence ( 'BEGIN' statementSequence )? 'END' { root_0 = (CommonTree)adaptor.nil(); pushFollow(FOLLOW_declarationSequence_in_procedureBody2895); declarationSequence125=declarationSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, declarationSequence125.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:745:29: ( 'BEGIN' statementSequence )? int alt31=2; int LA31_0 = input.LA(1); if ( (LA31_0==94) ) { alt31=1; } switch (alt31) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:745:31: 'BEGIN' statementSequence { string_literal126=(Token)match(input,94,FOLLOW_94_in_procedureBody2899); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal126_tree = (CommonTree)adaptor.create(string_literal126); adaptor.addChild(root_0, string_literal126_tree); } pushFollow(FOLLOW_statementSequence_in_procedureBody2901); statementSequence127=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statementSequence127.getTree()); } break; } string_literal128=(Token)match(input,84,FOLLOW_84_in_procedureBody2906); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal128_tree = (CommonTree)adaptor.create(string_literal128); adaptor.addChild(root_0, string_literal128_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "procedureBody" public static class declarationSequence_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "declarationSequence" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:748:1: declarationSequence : ( 'CONST' ( constantDeclaration SEMICOLON )* | 'TYPE' ( typeDeclaration SEMICOLON )* | 'VAR' ( variableDeclaration SEMICOLON )* )* ( procedureDeclaration SEMICOLON | forwardDeclaration SEMICOLON )* ; public final Oberon2Parser.declarationSequence_return declarationSequence() throws RecognitionException { Oberon2Parser.declarationSequence_return retval = new Oberon2Parser.declarationSequence_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal129=null; Token SEMICOLON131=null; Token string_literal132=null; Token SEMICOLON134=null; Token string_literal135=null; Token SEMICOLON137=null; Token SEMICOLON139=null; Token SEMICOLON141=null; Oberon2Parser.constantDeclaration_return constantDeclaration130 = null; Oberon2Parser.typeDeclaration_return typeDeclaration133 = null; Oberon2Parser.variableDeclaration_return variableDeclaration136 = null; Oberon2Parser.procedureDeclaration_return procedureDeclaration138 = null; Oberon2Parser.forwardDeclaration_return forwardDeclaration140 = null; CommonTree string_literal129_tree=null; CommonTree SEMICOLON131_tree=null; CommonTree string_literal132_tree=null; CommonTree SEMICOLON134_tree=null; CommonTree string_literal135_tree=null; CommonTree SEMICOLON137_tree=null; CommonTree SEMICOLON139_tree=null; CommonTree SEMICOLON141_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:749:2: ( ( 'CONST' ( constantDeclaration SEMICOLON )* | 'TYPE' ( typeDeclaration SEMICOLON )* | 'VAR' ( variableDeclaration SEMICOLON )* )* ( procedureDeclaration SEMICOLON | forwardDeclaration SEMICOLON )* ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:750:9: ( 'CONST' ( constantDeclaration SEMICOLON )* | 'TYPE' ( typeDeclaration SEMICOLON )* | 'VAR' ( variableDeclaration SEMICOLON )* )* ( procedureDeclaration SEMICOLON | forwardDeclaration SEMICOLON )* { root_0 = (CommonTree)adaptor.nil(); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:750:9: ( 'CONST' ( constantDeclaration SEMICOLON )* | 'TYPE' ( typeDeclaration SEMICOLON )* | 'VAR' ( variableDeclaration SEMICOLON )* )* loop35: do { int alt35=4; switch ( input.LA(1) ) { case 95: { alt35=1; } break; case 96: { alt35=2; } break; case 97: { alt35=3; } break; } switch (alt35) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:751:13: 'CONST' ( constantDeclaration SEMICOLON )* { string_literal129=(Token)match(input,95,FOLLOW_95_in_declarationSequence2940); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal129_tree = (CommonTree)adaptor.create(string_literal129); adaptor.addChild(root_0, string_literal129_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:751:21: ( constantDeclaration SEMICOLON )* loop32: do { int alt32=2; int LA32_0 = input.LA(1); if ( (LA32_0==IDENT) ) { alt32=1; } switch (alt32) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:751:23: constantDeclaration SEMICOLON { pushFollow(FOLLOW_constantDeclaration_in_declarationSequence2944); constantDeclaration130=constantDeclaration(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, constantDeclaration130.getTree()); SEMICOLON131=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_declarationSequence2946); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON131_tree = (CommonTree)adaptor.create(SEMICOLON131); adaptor.addChild(root_0, SEMICOLON131_tree); } } break; default : break loop32; } } while (true); } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:752:13: 'TYPE' ( typeDeclaration SEMICOLON )* { string_literal132=(Token)match(input,96,FOLLOW_96_in_declarationSequence2965); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal132_tree = (CommonTree)adaptor.create(string_literal132); adaptor.addChild(root_0, string_literal132_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:752:20: ( typeDeclaration SEMICOLON )* loop33: do { int alt33=2; int LA33_0 = input.LA(1); if ( (LA33_0==IDENT) ) { alt33=1; } switch (alt33) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:752:22: typeDeclaration SEMICOLON { pushFollow(FOLLOW_typeDeclaration_in_declarationSequence2969); typeDeclaration133=typeDeclaration(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, typeDeclaration133.getTree()); SEMICOLON134=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_declarationSequence2971); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON134_tree = (CommonTree)adaptor.create(SEMICOLON134); adaptor.addChild(root_0, SEMICOLON134_tree); } } break; default : break loop33; } } while (true); } break; case 3 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:753:13: 'VAR' ( variableDeclaration SEMICOLON )* { string_literal135=(Token)match(input,97,FOLLOW_97_in_declarationSequence2990); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal135_tree = (CommonTree)adaptor.create(string_literal135); adaptor.addChild(root_0, string_literal135_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:753:19: ( variableDeclaration SEMICOLON )* loop34: do { int alt34=2; int LA34_0 = input.LA(1); if ( (LA34_0==IDENT) ) { alt34=1; } switch (alt34) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:753:21: variableDeclaration SEMICOLON { pushFollow(FOLLOW_variableDeclaration_in_declarationSequence2994); variableDeclaration136=variableDeclaration(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, variableDeclaration136.getTree()); SEMICOLON137=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_declarationSequence2996); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON137_tree = (CommonTree)adaptor.create(SEMICOLON137); adaptor.addChild(root_0, SEMICOLON137_tree); } } break; default : break loop34; } } while (true); } break; default : break loop35; } } while (true); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:755:9: ( procedureDeclaration SEMICOLON | forwardDeclaration SEMICOLON )* loop36: do { int alt36=3; int LA36_0 = input.LA(1); if ( (LA36_0==73) ) { int LA36_2 = input.LA(2); if ( (LA36_2==REF) ) { alt36=2; } else if ( (LA36_2==IDENT) ) { alt36=1; } } switch (alt36) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:756:13: procedureDeclaration SEMICOLON { pushFollow(FOLLOW_procedureDeclaration_in_declarationSequence3034); procedureDeclaration138=procedureDeclaration(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, procedureDeclaration138.getTree()); SEMICOLON139=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_declarationSequence3036); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON139_tree = (CommonTree)adaptor.create(SEMICOLON139); adaptor.addChild(root_0, SEMICOLON139_tree); } } break; case 2 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:757:13: forwardDeclaration SEMICOLON { pushFollow(FOLLOW_forwardDeclaration_in_declarationSequence3052); forwardDeclaration140=forwardDeclaration(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, forwardDeclaration140.getTree()); SEMICOLON141=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_declarationSequence3054); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON141_tree = (CommonTree)adaptor.create(SEMICOLON141); adaptor.addChild(root_0, SEMICOLON141_tree); } } break; default : break loop36; } } while (true); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "declarationSequence" public static class forwardDeclaration_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "forwardDeclaration" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:760:1: forwardDeclaration : 'PROCEDURE' REF identDef[null] ( formalParameters )? ; public final Oberon2Parser.forwardDeclaration_return forwardDeclaration() throws RecognitionException { Oberon2Parser.forwardDeclaration_return retval = new Oberon2Parser.forwardDeclaration_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal142=null; Token REF143=null; Oberon2Parser.identDef_return identDef144 = null; Oberon2Parser.formalParameters_return formalParameters145 = null; CommonTree string_literal142_tree=null; CommonTree REF143_tree=null; Scope scopeBackup = null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:764:2: ( 'PROCEDURE' REF identDef[null] ( formalParameters )? ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:764:4: 'PROCEDURE' REF identDef[null] ( formalParameters )? { root_0 = (CommonTree)adaptor.nil(); string_literal142=(Token)match(input,73,FOLLOW_73_in_forwardDeclaration3081); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal142_tree = (CommonTree)adaptor.create(string_literal142); adaptor.addChild(root_0, string_literal142_tree); } REF143=(Token)match(input,REF,FOLLOW_REF_in_forwardDeclaration3083); if (state.failed) return retval; if ( state.backtracking==0 ) { REF143_tree = (CommonTree)adaptor.create(REF143); adaptor.addChild(root_0, REF143_tree); } pushFollow(FOLLOW_identDef_in_forwardDeclaration3085); identDef144=identDef(null); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, identDef144.getTree()); if ( state.backtracking==0 ) { // new scope for formalParameters parser scopeBackup = pc.scope; pc.scope = new Scope(scopeBackup); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:770:4: ( formalParameters )? int alt37=2; int LA37_0 = input.LA(1); if ( (LA37_0==LPAREN) ) { alt37=1; } switch (alt37) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:0:0: formalParameters { pushFollow(FOLLOW_formalParameters_in_forwardDeclaration3096); formalParameters145=formalParameters(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, formalParameters145.getTree()); } break; } if ( state.backtracking==0 ) { // we don't need that new scope, so just restore backup pc.scope = scopeBackup; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "forwardDeclaration" public static class formalParameters_return extends ParserRuleReturnScope { public TypeValue retType; public List params; public List paramNames; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "formalParameters" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:780:1: formalParameters returns [TypeValue retType, List params, List paramNames] : LPAREN ( fPSection[$params] ( SEMICOLON fPSection[$params] )* )? RPAREN ( COLON ret= qualIdent )? ; public final Oberon2Parser.formalParameters_return formalParameters() throws RecognitionException { Oberon2Parser.formalParameters_return retval = new Oberon2Parser.formalParameters_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token LPAREN146=null; Token SEMICOLON148=null; Token RPAREN150=null; Token COLON151=null; Oberon2Parser.qualIdent_return ret = null; Oberon2Parser.fPSection_return fPSection147 = null; Oberon2Parser.fPSection_return fPSection149 = null; CommonTree LPAREN146_tree=null; CommonTree SEMICOLON148_tree=null; CommonTree RPAREN150_tree=null; CommonTree COLON151_tree=null; // create params accumulator retval.params = new ArrayList(); try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:795:2: ( LPAREN ( fPSection[$params] ( SEMICOLON fPSection[$params] )* )? RPAREN ( COLON ret= qualIdent )? ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:795:5: LPAREN ( fPSection[$params] ( SEMICOLON fPSection[$params] )* )? RPAREN ( COLON ret= qualIdent )? { root_0 = (CommonTree)adaptor.nil(); LPAREN146=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_formalParameters3130); if (state.failed) return retval; if ( state.backtracking==0 ) { LPAREN146_tree = (CommonTree)adaptor.create(LPAREN146); adaptor.addChild(root_0, LPAREN146_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:795:12: ( fPSection[$params] ( SEMICOLON fPSection[$params] )* )? int alt39=2; int LA39_0 = input.LA(1); if ( (LA39_0==IDENT||LA39_0==97) ) { alt39=1; } switch (alt39) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:795:14: fPSection[$params] ( SEMICOLON fPSection[$params] )* { pushFollow(FOLLOW_fPSection_in_formalParameters3134); fPSection147=fPSection(retval.params); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, fPSection147.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:795:34: ( SEMICOLON fPSection[$params] )* loop38: do { int alt38=2; int LA38_0 = input.LA(1); if ( (LA38_0==SEMICOLON) ) { alt38=1; } switch (alt38) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:795:36: SEMICOLON fPSection[$params] { SEMICOLON148=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_formalParameters3140); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON148_tree = (CommonTree)adaptor.create(SEMICOLON148); adaptor.addChild(root_0, SEMICOLON148_tree); } pushFollow(FOLLOW_fPSection_in_formalParameters3142); fPSection149=fPSection(retval.params); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, fPSection149.getTree()); } break; default : break loop38; } } while (true); } break; } RPAREN150=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_formalParameters3152); if (state.failed) return retval; if ( state.backtracking==0 ) { RPAREN150_tree = (CommonTree)adaptor.create(RPAREN150); adaptor.addChild(root_0, RPAREN150_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:796:9: ( COLON ret= qualIdent )? int alt40=2; int LA40_0 = input.LA(1); if ( (LA40_0==COLON) ) { alt40=1; } switch (alt40) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:796:11: COLON ret= qualIdent { COLON151=(Token)match(input,COLON,FOLLOW_COLON_in_formalParameters3164); if (state.failed) return retval; if ( state.backtracking==0 ) { COLON151_tree = (CommonTree)adaptor.create(COLON151); adaptor.addChild(root_0, COLON151_tree); } pushFollow(FOLLOW_qualIdent_in_formalParameters3168); ret=qualIdent(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, ret.getTree()); } break; } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } if ( state.backtracking==0 ) { if((ret!=null?input.toString(ret.start,ret.stop):null) != null){ Value tmp = (ret!=null?ret.idAccessor:null).evaluate(); if(tmp.getType() != TypeValue.TYPE) throw new Oberon2Exception(new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()), "Identifier '" + (ret!=null?input.toString(ret.start,ret.stop):null) + "' does not represent a type"); retval.retType = (TypeValue)tmp; }else{ retval.retType = TypeValue.UNDEFINEDTYPE; } } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "formalParameters" public static class fPSection_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "fPSection" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:800:1: fPSection[List fParamsStorage] : (isVar= 'VAR' )? identDef[list] ( COMMA identDef[list] )* COLON typ= formalType ; public final Oberon2Parser.fPSection_return fPSection(List fParamsStorage) throws RecognitionException { Oberon2Parser.fPSection_return retval = new Oberon2Parser.fPSection_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token isVar=null; Token COMMA153=null; Token COLON155=null; Oberon2Parser.formalType_return typ = null; Oberon2Parser.identDef_return identDef152 = null; Oberon2Parser.identDef_return identDef154 = null; CommonTree isVar_tree=null; CommonTree COMMA153_tree=null; CommonTree COLON155_tree=null; Hashtable list = new Hashtable(); try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:819:2: ( (isVar= 'VAR' )? identDef[list] ( COMMA identDef[list] )* COLON typ= formalType ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:820:9: (isVar= 'VAR' )? identDef[list] ( COMMA identDef[list] )* COLON typ= formalType { root_0 = (CommonTree)adaptor.nil(); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:820:14: (isVar= 'VAR' )? int alt41=2; int LA41_0 = input.LA(1); if ( (LA41_0==97) ) { alt41=1; } switch (alt41) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:0:0: isVar= 'VAR' { isVar=(Token)match(input,97,FOLLOW_97_in_fPSection3213); if (state.failed) return retval; if ( state.backtracking==0 ) { isVar_tree = (CommonTree)adaptor.create(isVar); adaptor.addChild(root_0, isVar_tree); } } break; } pushFollow(FOLLOW_identDef_in_fPSection3216); identDef152=identDef(list); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, identDef152.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:820:38: ( COMMA identDef[list] )* loop42: do { int alt42=2; int LA42_0 = input.LA(1); if ( (LA42_0==COMMA) ) { alt42=1; } switch (alt42) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:820:40: COMMA identDef[list] { COMMA153=(Token)match(input,COMMA,FOLLOW_COMMA_in_fPSection3222); if (state.failed) return retval; if ( state.backtracking==0 ) { COMMA153_tree = (CommonTree)adaptor.create(COMMA153); adaptor.addChild(root_0, COMMA153_tree); } pushFollow(FOLLOW_identDef_in_fPSection3224); identDef154=identDef(list); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, identDef154.getTree()); } break; default : break loop42; } } while (true); COLON155=(Token)match(input,COLON,FOLLOW_COLON_in_fPSection3231); if (state.failed) return retval; if ( state.backtracking==0 ) { COLON155_tree = (CommonTree)adaptor.create(COLON155); adaptor.addChild(root_0, COLON155_tree); } pushFollow(FOLLOW_formalType_in_fPSection3235); typ=formalType(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, typ.getTree()); } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } if ( state.backtracking==0 ) { LValue lValue = null; boolean isVariable = (isVar!=null?isVar.getText():null) != null; for(Entry s : list.entrySet()){ if((typ!=null?typ.typ:null).getTypeTag() == TypeTag.ARRAY){ lValue = new ArrayLValue((ArrayType)(typ!=null?typ.typ:null)); }else{ lValue = new SimpleLValue((typ!=null?typ.typ:null), false); } lValue.declarationPoint = s.getValue();//new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()); pc.scope.declare(s.getKey(), lValue); Oberon2.definedIds.add(new Oberon2.DefinitionInfo(s.getKey(), pc.scope)); fParamsStorage.add(new ProcedureType.FormalParameter((typ!=null?typ.typ:null), isVariable)); } } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "fPSection" public static class module_return extends ParserRuleReturnScope { public List statementList; CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "module" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:825:1: module returns [List statementList] : 'MODULE' modname= ident SEMICOLON ( importList )? declarationSequence ( 'BEGIN' statSeq= statementSequence )? 'END' endmodname= ident DOT ; public final Oberon2Parser.module_return module() throws RecognitionException { Oberon2Parser.module_return retval = new Oberon2Parser.module_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal156=null; Token SEMICOLON157=null; Token string_literal160=null; Token string_literal161=null; Token DOT162=null; Oberon2Parser.ident_return modname = null; Oberon2Parser.statementSequence_return statSeq = null; Oberon2Parser.ident_return endmodname = null; Oberon2Parser.importList_return importList158 = null; Oberon2Parser.declarationSequence_return declarationSequence159 = null; CommonTree string_literal156_tree=null; CommonTree SEMICOLON157_tree=null; CommonTree string_literal160_tree=null; CommonTree string_literal161_tree=null; CommonTree DOT162_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:826:3: ( 'MODULE' modname= ident SEMICOLON ( importList )? declarationSequence ( 'BEGIN' statSeq= statementSequence )? 'END' endmodname= ident DOT ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:827:9: 'MODULE' modname= ident SEMICOLON ( importList )? declarationSequence ( 'BEGIN' statSeq= statementSequence )? 'END' endmodname= ident DOT { root_0 = (CommonTree)adaptor.nil(); string_literal156=(Token)match(input,98,FOLLOW_98_in_module3270); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal156_tree = (CommonTree)adaptor.create(string_literal156); adaptor.addChild(root_0, string_literal156_tree); } pushFollow(FOLLOW_ident_in_module3274); modname=ident(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, modname.getTree()); SEMICOLON157=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_module3276); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON157_tree = (CommonTree)adaptor.create(SEMICOLON157); adaptor.addChild(root_0, SEMICOLON157_tree); } // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:827:42: ( importList )? int alt43=2; int LA43_0 = input.LA(1); if ( (LA43_0==99) ) { alt43=1; } switch (alt43) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:0:0: importList { pushFollow(FOLLOW_importList_in_module3278); importList158=importList(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, importList158.getTree()); } break; } pushFollow(FOLLOW_declarationSequence_in_module3281); declarationSequence159=declarationSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, declarationSequence159.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:828:9: ( 'BEGIN' statSeq= statementSequence )? int alt44=2; int LA44_0 = input.LA(1); if ( (LA44_0==94) ) { alt44=1; } switch (alt44) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:828:11: 'BEGIN' statSeq= statementSequence { string_literal160=(Token)match(input,94,FOLLOW_94_in_module3293); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal160_tree = (CommonTree)adaptor.create(string_literal160); adaptor.addChild(root_0, string_literal160_tree); } pushFollow(FOLLOW_statementSequence_in_module3297); statSeq=statementSequence(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, statSeq.getTree()); } break; } string_literal161=(Token)match(input,84,FOLLOW_84_in_module3302); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal161_tree = (CommonTree)adaptor.create(string_literal161); adaptor.addChild(root_0, string_literal161_tree); } pushFollow(FOLLOW_ident_in_module3306); endmodname=ident(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, endmodname.getTree()); DOT162=(Token)match(input,DOT,FOLLOW_DOT_in_module3308); if (state.failed) return retval; if ( state.backtracking==0 ) { DOT162_tree = (CommonTree)adaptor.create(DOT162); adaptor.addChild(root_0, DOT162_tree); } if ( state.backtracking==0 ) { if(!(modname!=null?input.toString(modname.start,modname.stop):null).equals((endmodname!=null?input.toString(endmodname.start,endmodname.stop):null))) throw new Oberon2Exception(new CodePoint((endmodname!=null?((Token)endmodname.start):null).getLine(), (endmodname!=null?((Token)endmodname.start):null).getCharPositionInLine()), "Module names at start and end differ"); retval.statementList = (statSeq!=null?statSeq.statementList:null); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "module" public static class importList_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "importList" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:840:1: importList : 'IMPORT' obimport ( COMMA obimport )* SEMICOLON ; public final Oberon2Parser.importList_return importList() throws RecognitionException { Oberon2Parser.importList_return retval = new Oberon2Parser.importList_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token string_literal163=null; Token COMMA165=null; Token SEMICOLON167=null; Oberon2Parser.obimport_return obimport164 = null; Oberon2Parser.obimport_return obimport166 = null; CommonTree string_literal163_tree=null; CommonTree COMMA165_tree=null; CommonTree SEMICOLON167_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:841:2: ( 'IMPORT' obimport ( COMMA obimport )* SEMICOLON ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:842:2: 'IMPORT' obimport ( COMMA obimport )* SEMICOLON { root_0 = (CommonTree)adaptor.nil(); string_literal163=(Token)match(input,99,FOLLOW_99_in_importList3334); if (state.failed) return retval; if ( state.backtracking==0 ) { string_literal163_tree = (CommonTree)adaptor.create(string_literal163); adaptor.addChild(root_0, string_literal163_tree); } pushFollow(FOLLOW_obimport_in_importList3336); obimport164=obimport(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, obimport164.getTree()); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:842:20: ( COMMA obimport )* loop45: do { int alt45=2; int LA45_0 = input.LA(1); if ( (LA45_0==COMMA) ) { alt45=1; } switch (alt45) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:842:22: COMMA obimport { COMMA165=(Token)match(input,COMMA,FOLLOW_COMMA_in_importList3340); if (state.failed) return retval; if ( state.backtracking==0 ) { COMMA165_tree = (CommonTree)adaptor.create(COMMA165); adaptor.addChild(root_0, COMMA165_tree); } pushFollow(FOLLOW_obimport_in_importList3342); obimport166=obimport(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, obimport166.getTree()); } break; default : break loop45; } } while (true); SEMICOLON167=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_importList3347); if (state.failed) return retval; if ( state.backtracking==0 ) { SEMICOLON167_tree = (CommonTree)adaptor.create(SEMICOLON167); adaptor.addChild(root_0, SEMICOLON167_tree); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "importList" public static class obimport_return extends ParserRuleReturnScope { CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "obimport" // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:846:1: obimport : (modnick= ident ASSIGN )? modname= ident ; public final Oberon2Parser.obimport_return obimport() throws RecognitionException { Oberon2Parser.obimport_return retval = new Oberon2Parser.obimport_return(); retval.start = input.LT(1); CommonTree root_0 = null; Token ASSIGN168=null; Oberon2Parser.ident_return modnick = null; Oberon2Parser.ident_return modname = null; CommonTree ASSIGN168_tree=null; try { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:847:2: ( (modnick= ident ASSIGN )? modname= ident ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:847:4: (modnick= ident ASSIGN )? modname= ident { root_0 = (CommonTree)adaptor.nil(); // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:847:4: (modnick= ident ASSIGN )? int alt46=2; int LA46_0 = input.LA(1); if ( (LA46_0==IDENT) ) { int LA46_1 = input.LA(2); if ( (LA46_1==ASSIGN) ) { alt46=1; } } switch (alt46) { case 1 : // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:847:6: modnick= ident ASSIGN { pushFollow(FOLLOW_ident_in_obimport3365); modnick=ident(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, modnick.getTree()); ASSIGN168=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_obimport3367); if (state.failed) return retval; if ( state.backtracking==0 ) { ASSIGN168_tree = (CommonTree)adaptor.create(ASSIGN168); adaptor.addChild(root_0, ASSIGN168_tree); } } break; } pushFollow(FOLLOW_ident_in_obimport3374); modname=ident(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, modname.getTree()); if ( state.backtracking==0 ) { //System.out.println((modnick!=null?input.toString(modnick.start,modnick.stop):null)); ModuleValue v = null; if((modname!=null?input.toString(modname.start,modname.stop):null).equals("In")){ v = StdLibrary.moduleIn; }else if((modname!=null?input.toString(modname.start,modname.stop):null).equals("Out")){ v = StdLibrary.moduleOut; }else if((modname!=null?input.toString(modname.start,modname.stop):null).equals("Math")){ v = StdLibrary.moduleMath; }else{ throw new Oberon2Exception(new CodePoint((modname!=null?((Token)modname.start):null).getLine(), (modname!=null?((Token)modname.start):null).getCharPositionInLine()), "Uncknown module '"+(modname!=null?input.toString(modname.start,modname.stop):null)+"'"); } if(v.imported){ throw new Oberon2Exception(new CodePoint((modname!=null?((Token)modname.start):null).getLine(), (modname!=null?((Token)modname.start):null).getCharPositionInLine()), "Module '"+(modname!=null?input.toString(modname.start,modname.stop):null)+"' is already imported"); } v.imported = true; LValue lv = null; try{ lv = new SimpleLValue(TypeValue.MODULE, v, true); lv.declarationPoint = new CodePoint(((Token)retval.start).getLine(), ((Token)retval.start).getCharPositionInLine()); }catch(Oberon2Exception ex){ throw transformException(ex, ((Token)retval.start)); } //System.out.println((modnick!=null?input.toString(modnick.start,modnick.stop):null) + "=" + v.name); pc.scope.declare((modnick!=null?input.toString(modnick.start,modnick.stop):null) == null ? v.name : (modnick!=null?input.toString(modnick.start,modnick.stop):null), lv); //System.out.println((modnick!=null?input.toString(modnick.start,modnick.stop):null) == null ? v.name : (modnick!=null?input.toString(modnick.start,modnick.stop):null)); } } retval.stop = input.LT(-1); if ( state.backtracking==0 ) { retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "obimport" // $ANTLR start synpred42_Oberon2 public final void synpred42_Oberon2_fragment() throws RecognitionException { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:580:13: ( expression ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:580:13: expression { pushFollow(FOLLOW_expression_in_synpred42_Oberon22212); expression(); state._fsp--; if (state.failed) return ; } } // $ANTLR end synpred42_Oberon2 // $ANTLR start synpred44_Oberon2 public final void synpred44_Oberon2_fragment() throws RecognitionException { // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:581:26: ( procedureCall ) // /home/alex/Documents/oberon2/src/ru/msu/cmc/sp/oberon2/Oberon2.g:581:26: procedureCall { pushFollow(FOLLOW_procedureCall_in_synpred44_Oberon22232); procedureCall(); state._fsp--; if (state.failed) return ; } } // $ANTLR end synpred44_Oberon2 // Delegated rules public final boolean synpred42_Oberon2() { state.backtracking++; int start = input.mark(); try { synpred42_Oberon2_fragment(); // can never throw exception } catch (RecognitionException re) { System.err.println("impossible: "+re); } boolean success = !state.failed; input.rewind(start); state.backtracking--; state.failed=false; return success; } public final boolean synpred44_Oberon2() { state.backtracking++; int start = input.mark(); try { synpred44_Oberon2_fragment(); // can never throw exception } catch (RecognitionException re) { System.err.println("impossible: "+re); } boolean success = !state.failed; input.rewind(start); state.backtracking--; state.failed=false; return success; } protected DFA19 dfa19 = new DFA19(this); static final String DFA19_eotS = "\16\uffff"; static final String DFA19_eofS = "\1\13\15\uffff"; static final String DFA19_minS = "\1\10\2\uffff\1\5\12\uffff"; static final String DFA19_maxS = "\1\135\2\uffff\1\35\12\uffff"; static final String DFA19_acceptS = "\1\uffff\1\1\1\2\1\uffff\1\3\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1"+ "\4\1\5"; static final String DFA19_specialS = "\3\uffff\1\0\12\uffff}>"; static final String[] DFA19_transitionS = { "\1\13\1\4\15\uffff\2\4\2\uffff\1\4\1\13\42\uffff\1\3\5\4\5\uffff"+ "\1\4\3\uffff\1\1\1\2\1\5\1\uffff\3\13\1\6\1\7\1\uffff\1\10\1"+ "\13\1\11\2\uffff\1\12", "", "", "\1\14\7\uffff\1\14\17\uffff\1\14", "", "", "", "", "", "", "", "", "", "" }; static final short[] DFA19_eot = DFA.unpackEncodedString(DFA19_eotS); static final short[] DFA19_eof = DFA.unpackEncodedString(DFA19_eofS); static final char[] DFA19_min = DFA.unpackEncodedStringToUnsignedChars(DFA19_minS); static final char[] DFA19_max = DFA.unpackEncodedStringToUnsignedChars(DFA19_maxS); static final short[] DFA19_accept = DFA.unpackEncodedString(DFA19_acceptS); static final short[] DFA19_special = DFA.unpackEncodedString(DFA19_specialS); static final short[][] DFA19_transition; static { int numStates = DFA19_transitionS.length; DFA19_transition = new short[numStates][]; for (int i=0; i=0 ) return s; break; } if (state.backtracking>0) {state.failed=true; return -1;} NoViableAltException nvae = new NoViableAltException(getDescription(), 19, _s, input); error(nvae); throw nvae; } } public static final BitSet FOLLOW_IDENT_in_ident789 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_STRING_in_constant1096 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_CHARCONST_in_constant1109 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_INTEGER_in_constant1122 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_REAL_in_constant1135 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_LONGREAL_in_constant1148 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ident_in_qualIdent1170 = new BitSet(new long[]{0x0000000000000020L}); public static final BitSet FOLLOW_DOT_in_qualIdent1172 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_ident_in_qualIdent1179 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ident_in_identDef1205 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_identDef_in_constantDeclaration1232 = new BitSet(new long[]{0x0000000000000040L}); public static final BitSet FOLLOW_EQUAL_in_constantDeclaration1236 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_constExpression_in_constantDeclaration1240 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_expression_in_constExpression1264 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_identDef_in_typeDeclaration1293 = new BitSet(new long[]{0x0000000000000040L}); public static final BitSet FOLLOW_EQUAL_in_typeDeclaration1297 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000280L}); public static final BitSet FOLLOW_type_in_typeDeclaration1301 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_qualIdent_in_type1331 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_arrayType_in_type1355 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_procedureType_in_type1380 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_qualIdent_in_formalType1422 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_arrayType_in_formalType1446 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_openArrayType_in_formalType1471 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_procedureType_in_formalType1496 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_71_in_arrayType1535 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_length_in_arrayType1539 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L}); public static final BitSet FOLLOW_72_in_arrayType1541 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000280L}); public static final BitSet FOLLOW_qualIdent_in_arrayType1547 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_procedureType_in_arrayType1553 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_71_in_openArrayType1585 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L}); public static final BitSet FOLLOW_72_in_openArrayType1587 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000280L}); public static final BitSet FOLLOW_qualIdent_in_openArrayType1593 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_procedureType_in_openArrayType1599 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_constExpression_in_length1629 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_73_in_procedureType1653 = new BitSet(new long[]{0x0000000000000202L}); public static final BitSet FOLLOW_formalParameters_in_procedureType1662 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_identList_in_variableDeclaration1685 = new BitSet(new long[]{0x0000000000000800L}); public static final BitSet FOLLOW_COLON_in_variableDeclaration1687 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000280L}); public static final BitSet FOLLOW_type_in_variableDeclaration1691 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_identDef_in_identList1715 = new BitSet(new long[]{0x0000000000000082L}); public static final BitSet FOLLOW_COMMA_in_identList1721 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_identDef_in_identList1723 = new BitSet(new long[]{0x0000000000000082L}); public static final BitSet FOLLOW_arrayDesignator_in_designator1745 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_simpleDesignator_in_designator1749 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_qualIdent_in_arrayDesignator1769 = new BitSet(new long[]{0x0000000000002000L}); public static final BitSet FOLLOW_LBR_in_arrayDesignator1771 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_arrayDesignator1773 = new BitSet(new long[]{0x0000000000004000L}); public static final BitSet FOLLOW_RBR_in_arrayDesignator1775 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_qualIdent_in_simpleDesignator1796 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_expression_in_expList1816 = new BitSet(new long[]{0x0000000000000082L}); public static final BitSet FOLLOW_COMMA_in_expList1820 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_expList1822 = new BitSet(new long[]{0x0000000000000082L}); public static final BitSet FOLLOW_simpleExpression_in_expression1850 = new BitSet(new long[]{0x00000000007C0042L}); public static final BitSet FOLLOW_relation_in_expression1854 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_simpleExpression_in_expression1857 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_unaryExpression_in_simpleExpression1879 = new BitSet(new long[]{0x0000000001800002L,0x0000000000000800L}); public static final BitSet FOLLOW_addOperator_in_simpleExpression1883 = new BitSet(new long[]{0x8000000008000200L,0x000000000000041FL}); public static final BitSet FOLLOW_term_in_simpleExpression1886 = new BitSet(new long[]{0x0000000001800002L,0x0000000000000800L}); public static final BitSet FOLLOW_term_in_unaryExpression1909 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_PLUS_in_unaryExpression1916 = new BitSet(new long[]{0x8000000008000200L,0x000000000000041FL}); public static final BitSet FOLLOW_term_in_unaryExpression1918 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_MINUS_in_unaryExpression1928 = new BitSet(new long[]{0x8000000008000200L,0x000000000000041FL}); public static final BitSet FOLLOW_term_in_unaryExpression1930 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_factor_in_term1951 = new BitSet(new long[]{0x0000000006000012L,0x0000000000003000L}); public static final BitSet FOLLOW_mulOperator_in_term1955 = new BitSet(new long[]{0x8000000008000200L,0x000000000000041FL}); public static final BitSet FOLLOW_factor_in_term1958 = new BitSet(new long[]{0x0000000006000012L,0x0000000000003000L}); public static final BitSet FOLLOW_designator_in_factor1980 = new BitSet(new long[]{0x0000000000000202L}); public static final BitSet FOLLOW_actualParameters_in_factor1983 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_constant_in_factor1998 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_74_in_factor2010 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_LPAREN_in_factor2014 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_factor2017 = new BitSet(new long[]{0x0000000000000400L}); public static final BitSet FOLLOW_RPAREN_in_factor2019 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_TILDE_in_factor2024 = new BitSet(new long[]{0x8000000008000200L,0x000000000000041FL}); public static final BitSet FOLLOW_factor_in_factor2027 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_LPAREN_in_actualParameters2045 = new BitSet(new long[]{0x8000000009800600L,0x000000000000041FL}); public static final BitSet FOLLOW_expList_in_actualParameters2048 = new BitSet(new long[]{0x0000000000000400L}); public static final BitSet FOLLOW_RPAREN_in_actualParameters2052 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_set_in_relation0 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_set_in_addOperator0 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_set_in_mulOperator0 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_78_in_statement2187 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_79_in_statement2191 = new BitSet(new long[]{0x8000000009800202L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_statement2194 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_expression_in_statement2212 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_assignment_in_statement2228 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_procedureCall_in_statement2232 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ifStatement_in_statement2248 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_caseStatement_in_statement2252 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_whileStatement_in_statement2268 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_repeatStatement_in_statement2272 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_forStatement_in_statement2288 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_loopStatement_in_statement2292 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_designator_in_assignment2327 = new BitSet(new long[]{0x0000000020000000L}); public static final BitSet FOLLOW_ASSIGN_in_assignment2329 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_assignment2332 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_designator_in_procedureCall2365 = new BitSet(new long[]{0x0000000000000202L}); public static final BitSet FOLLOW_actualParameters_in_procedureCall2368 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_statement_in_statementSequence2403 = new BitSet(new long[]{0x0000000000000102L}); public static final BitSet FOLLOW_SEMICOLON_in_statementSequence2409 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statement_in_statementSequence2413 = new BitSet(new long[]{0x0000000000000102L}); public static final BitSet FOLLOW_80_in_ifStatement2444 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_ifStatement2446 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L}); public static final BitSet FOLLOW_81_in_ifStatement2448 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_ifStatement2450 = new BitSet(new long[]{0x0000000000000000L,0x00000000001C0000L}); public static final BitSet FOLLOW_82_in_ifStatement2462 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_ifStatement2464 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L}); public static final BitSet FOLLOW_81_in_ifStatement2466 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_ifStatement2468 = new BitSet(new long[]{0x0000000000000000L,0x00000000001C0000L}); public static final BitSet FOLLOW_83_in_ifStatement2483 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_ifStatement2485 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_84_in_ifStatement2498 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_85_in_caseStatement2522 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_caseStatement2524 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L}); public static final BitSet FOLLOW_72_in_caseStatement2526 = new BitSet(new long[]{0x8000000019800200L,0x000000000018041FL}); public static final BitSet FOLLOW_obcase_in_caseStatement2528 = new BitSet(new long[]{0x0000000010000000L,0x0000000000180000L}); public static final BitSet FOLLOW_STROKE_in_caseStatement2532 = new BitSet(new long[]{0x8000000019800200L,0x000000000018041FL}); public static final BitSet FOLLOW_obcase_in_caseStatement2534 = new BitSet(new long[]{0x0000000010000000L,0x0000000000180000L}); public static final BitSet FOLLOW_83_in_caseStatement2549 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_caseStatement2551 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_84_in_caseStatement2564 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_caseLabelList_in_obcase2594 = new BitSet(new long[]{0x0000000000000800L}); public static final BitSet FOLLOW_COLON_in_obcase2596 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_obcase2598 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_caseLabels_in_caseLabelList2621 = new BitSet(new long[]{0x0000000000000082L}); public static final BitSet FOLLOW_COMMA_in_caseLabelList2625 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_caseLabels_in_caseLabelList2627 = new BitSet(new long[]{0x0000000000000082L}); public static final BitSet FOLLOW_constExpression_in_caseLabels2649 = new BitSet(new long[]{0x0000000000001002L}); public static final BitSet FOLLOW_DOTDOT_in_caseLabels2653 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_constExpression_in_caseLabels2655 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_86_in_whileStatement2682 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_whileStatement2684 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L}); public static final BitSet FOLLOW_87_in_whileStatement2686 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_whileStatement2688 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_84_in_whileStatement2690 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_88_in_repeatStatement2714 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_repeatStatement2716 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L}); public static final BitSet FOLLOW_89_in_repeatStatement2718 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_repeatStatement2720 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_90_in_forStatement2744 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_ident_in_forStatement2746 = new BitSet(new long[]{0x0000000020000000L}); public static final BitSet FOLLOW_ASSIGN_in_forStatement2748 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_forStatement2750 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L}); public static final BitSet FOLLOW_91_in_forStatement2752 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_expression_in_forStatement2754 = new BitSet(new long[]{0x0000000000000000L,0x0000000010800000L}); public static final BitSet FOLLOW_92_in_forStatement2766 = new BitSet(new long[]{0x8000000009800200L,0x000000000000041FL}); public static final BitSet FOLLOW_constExpression_in_forStatement2768 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L}); public static final BitSet FOLLOW_87_in_forStatement2773 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_forStatement2775 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_84_in_forStatement2777 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_93_in_loopStatement2801 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_loopStatement2803 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_84_in_loopStatement2805 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_73_in_procedureDeclaration2822 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_identDef_in_procedureDeclaration2826 = new BitSet(new long[]{0x0000000000000300L}); public static final BitSet FOLLOW_formalParameters_in_procedureDeclaration2838 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_SEMICOLON_in_procedureDeclaration2847 = new BitSet(new long[]{0x0000000000000000L,0x00000003C0100200L}); public static final BitSet FOLLOW_procedureBody_in_procedureDeclaration2851 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_ident_in_procedureDeclaration2861 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_declarationSequence_in_procedureBody2895 = new BitSet(new long[]{0x0000000000000000L,0x0000000040100000L}); public static final BitSet FOLLOW_94_in_procedureBody2899 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_procedureBody2901 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_84_in_procedureBody2906 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_95_in_declarationSequence2940 = new BitSet(new long[]{0x8000000000000002L,0x0000000380000200L}); public static final BitSet FOLLOW_constantDeclaration_in_declarationSequence2944 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_SEMICOLON_in_declarationSequence2946 = new BitSet(new long[]{0x8000000000000002L,0x0000000380000200L}); public static final BitSet FOLLOW_96_in_declarationSequence2965 = new BitSet(new long[]{0x8000000000000002L,0x0000000380000200L}); public static final BitSet FOLLOW_typeDeclaration_in_declarationSequence2969 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_SEMICOLON_in_declarationSequence2971 = new BitSet(new long[]{0x8000000000000002L,0x0000000380000200L}); public static final BitSet FOLLOW_97_in_declarationSequence2990 = new BitSet(new long[]{0x8000000000000002L,0x0000000380000200L}); public static final BitSet FOLLOW_variableDeclaration_in_declarationSequence2994 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_SEMICOLON_in_declarationSequence2996 = new BitSet(new long[]{0x8000000000000002L,0x0000000380000200L}); public static final BitSet FOLLOW_procedureDeclaration_in_declarationSequence3034 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_SEMICOLON_in_declarationSequence3036 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L}); public static final BitSet FOLLOW_forwardDeclaration_in_declarationSequence3052 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_SEMICOLON_in_declarationSequence3054 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L}); public static final BitSet FOLLOW_73_in_forwardDeclaration3081 = new BitSet(new long[]{0x0000000000008000L}); public static final BitSet FOLLOW_REF_in_forwardDeclaration3083 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_identDef_in_forwardDeclaration3085 = new BitSet(new long[]{0x0000000000000202L}); public static final BitSet FOLLOW_formalParameters_in_forwardDeclaration3096 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_LPAREN_in_formalParameters3130 = new BitSet(new long[]{0x8000000000000400L,0x0000000200000000L}); public static final BitSet FOLLOW_fPSection_in_formalParameters3134 = new BitSet(new long[]{0x0000000000000500L}); public static final BitSet FOLLOW_SEMICOLON_in_formalParameters3140 = new BitSet(new long[]{0x8000000000000000L,0x0000000200000000L}); public static final BitSet FOLLOW_fPSection_in_formalParameters3142 = new BitSet(new long[]{0x0000000000000500L}); public static final BitSet FOLLOW_RPAREN_in_formalParameters3152 = new BitSet(new long[]{0x0000000000000802L}); public static final BitSet FOLLOW_COLON_in_formalParameters3164 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_qualIdent_in_formalParameters3168 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_97_in_fPSection3213 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_identDef_in_fPSection3216 = new BitSet(new long[]{0x0000000000000880L}); public static final BitSet FOLLOW_COMMA_in_fPSection3222 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_identDef_in_fPSection3224 = new BitSet(new long[]{0x0000000000000880L}); public static final BitSet FOLLOW_COLON_in_fPSection3231 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000280L}); public static final BitSet FOLLOW_formalType_in_fPSection3235 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_98_in_module3270 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_ident_in_module3274 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_SEMICOLON_in_module3276 = new BitSet(new long[]{0x0000000000000000L,0x0000000BC0100200L}); public static final BitSet FOLLOW_importList_in_module3278 = new BitSet(new long[]{0x0000000000000000L,0x00000003C0100200L}); public static final BitSet FOLLOW_declarationSequence_in_module3281 = new BitSet(new long[]{0x0000000000000000L,0x0000000040100000L}); public static final BitSet FOLLOW_94_in_module3293 = new BitSet(new long[]{0x8000000009800300L,0x000000002561C41FL}); public static final BitSet FOLLOW_statementSequence_in_module3297 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_84_in_module3302 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_ident_in_module3306 = new BitSet(new long[]{0x0000000000000020L}); public static final BitSet FOLLOW_DOT_in_module3308 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_99_in_importList3334 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_obimport_in_importList3336 = new BitSet(new long[]{0x0000000000000180L}); public static final BitSet FOLLOW_COMMA_in_importList3340 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_obimport_in_importList3342 = new BitSet(new long[]{0x0000000000000180L}); public static final BitSet FOLLOW_SEMICOLON_in_importList3347 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ident_in_obimport3365 = new BitSet(new long[]{0x0000000020000000L}); public static final BitSet FOLLOW_ASSIGN_in_obimport3367 = new BitSet(new long[]{0x8000000000000000L}); public static final BitSet FOLLOW_ident_in_obimport3374 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_expression_in_synpred42_Oberon22212 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_procedureCall_in_synpred44_Oberon22232 = new BitSet(new long[]{0x0000000000000002L}); }