// $ANTLR 3.4 ar/com/javacuriosities/tiny/grammar/Tiny.g 2016-05-14 20:29:20
package ar.com.javacuriosities.tiny.grammar;
import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
@SuppressWarnings({"all", "warnings", "unchecked"})
public class TinyParser extends Parser {
public static final String[] tokenNames = new String[] {
"<invalid>", "<EOR>", "<DOWN>", "<UP>", "Add", "And", "Assert", "Assign", "Bool", "CBrace", "CBracket", "CParen", "Colon", "Comma", "Comment", "Def", "Digit", "Divide", "Do", "Else", "End", "Equals", "Excl", "For", "GT", "GTEquals", "HexChar", "HexDigit", "Identifier", "If", "In", "Int", "LT", "LTEquals", "Modulus", "Multiply", "NEquals", "Null", "Number", "OBrace", "OBracket", "OParen", "Or", "Pow", "Print", "Println", "QMark", "Return", "SColon", "Size", "Space", "String", "Subtract", "To", "While"
};
public static final int EOF=-1;
public static final int Add=4;
public static final int And=5;
public static final int Assert=6;
public static final int Assign=7;
public static final int Bool=8;
public static final int CBrace=9;
public static final int CBracket=10;
public static final int CParen=11;
public static final int Colon=12;
public static final int Comma=13;
public static final int Comment=14;
public static final int Def=15;
public static final int Digit=16;
public static final int Divide=17;
public static final int Do=18;
public static final int Else=19;
public static final int End=20;
public static final int Equals=21;
public static final int Excl=22;
public static final int For=23;
public static final int GT=24;
public static final int GTEquals=25;
public static final int HexChar=26;
public static final int HexDigit=27;
public static final int Identifier=28;
public static final int If=29;
public static final int In=30;
public static final int Int=31;
public static final int LT=32;
public static final int LTEquals=33;
public static final int Modulus=34;
public static final int Multiply=35;
public static final int NEquals=36;
public static final int Null=37;
public static final int Number=38;
public static final int OBrace=39;
public static final int OBracket=40;
public static final int OParen=41;
public static final int Or=42;
public static final int Pow=43;
public static final int Print=44;
public static final int Println=45;
public static final int QMark=46;
public static final int Return=47;
public static final int SColon=48;
public static final int Size=49;
public static final int Space=50;
public static final int String=51;
public static final int Subtract=52;
public static final int To=53;
public static final int While=54;
// delegates
public Parser[] getDelegates() {
return new Parser[] {};
}
// delegators
public TinyParser(TokenStream input) {
this(input, new RecognizerSharedState());
}
public TinyParser(TokenStream input, RecognizerSharedState state) {
super(input, state);
}
public String[] getTokenNames() { return TinyParser.tokenNames; }
public String getGrammarFileName() { return "ar/com/javacuriosities/tiny/grammar/Tiny.g"; }
// $ANTLR start "parse"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:29:1: parse : block EOF ;
public final void parse() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:30:2: ( block EOF )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:30:4: block EOF
{
pushFollow(FOLLOW_block_in_parse33);
block();
state._fsp--;
match(input,EOF,FOLLOW_EOF_in_parse35);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "parse"
// $ANTLR start "block"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:33:1: block : ( statement | functionDecl )* ( Return expression ';' )? ;
public final void block() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:34:2: ( ( statement | functionDecl )* ( Return expression ';' )? )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:34:4: ( statement | functionDecl )* ( Return expression ';' )?
{
// ar/com/javacuriosities/tiny/grammar/Tiny.g:34:4: ( statement | functionDecl )*
loop1:
do {
int alt1=3;
switch ( input.LA(1) ) {
case Assert:
case For:
case Identifier:
case If:
case Print:
case Println:
case Size:
case While:
{
alt1=1;
}
break;
case Def:
{
alt1=2;
}
break;
}
switch (alt1) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:34:5: statement
{
pushFollow(FOLLOW_statement_in_block46);
statement();
state._fsp--;
}
break;
case 2 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:34:17: functionDecl
{
pushFollow(FOLLOW_functionDecl_in_block50);
functionDecl();
state._fsp--;
}
break;
default :
break loop1;
}
} while (true);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:34:32: ( Return expression ';' )?
int alt2=2;
switch ( input.LA(1) ) {
case Return:
{
alt2=1;
}
break;
}
switch (alt2) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:34:33: Return expression ';'
{
match(input,Return,FOLLOW_Return_in_block55);
pushFollow(FOLLOW_expression_in_block57);
expression();
state._fsp--;
match(input,SColon,FOLLOW_SColon_in_block59);
}
break;
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "block"
// $ANTLR start "statement"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:37:1: statement : ( assignment ';' | functionCall ';' | ifStatement | forStatement | whileStatement );
public final void statement() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:38:2: ( assignment ';' | functionCall ';' | ifStatement | forStatement | whileStatement )
int alt3=5;
switch ( input.LA(1) ) {
case Identifier:
{
switch ( input.LA(2) ) {
case OParen:
{
alt3=2;
}
break;
case Assign:
case OBracket:
{
alt3=1;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 3, 1, input);
throw nvae;
}
}
break;
case Assert:
case Print:
case Println:
case Size:
{
alt3=2;
}
break;
case If:
{
alt3=3;
}
break;
case For:
{
alt3=4;
}
break;
case While:
{
alt3=5;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 3, 0, input);
throw nvae;
}
switch (alt3) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:38:4: assignment ';'
{
pushFollow(FOLLOW_assignment_in_statement71);
assignment();
state._fsp--;
match(input,SColon,FOLLOW_SColon_in_statement73);
}
break;
case 2 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:39:4: functionCall ';'
{
pushFollow(FOLLOW_functionCall_in_statement78);
functionCall();
state._fsp--;
match(input,SColon,FOLLOW_SColon_in_statement80);
}
break;
case 3 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:40:6: ifStatement
{
pushFollow(FOLLOW_ifStatement_in_statement87);
ifStatement();
state._fsp--;
}
break;
case 4 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:41:6: forStatement
{
pushFollow(FOLLOW_forStatement_in_statement94);
forStatement();
state._fsp--;
}
break;
case 5 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:42:6: whileStatement
{
pushFollow(FOLLOW_whileStatement_in_statement101);
whileStatement();
state._fsp--;
}
break;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "statement"
// $ANTLR start "functionDecl"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:45:1: functionDecl : Def Identifier '(' ( idList )? ')' block End ;
public final void functionDecl() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:46:2: ( Def Identifier '(' ( idList )? ')' block End )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:46:4: Def Identifier '(' ( idList )? ')' block End
{
match(input,Def,FOLLOW_Def_in_functionDecl111);
match(input,Identifier,FOLLOW_Identifier_in_functionDecl113);
match(input,OParen,FOLLOW_OParen_in_functionDecl115);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:46:23: ( idList )?
int alt4=2;
switch ( input.LA(1) ) {
case Identifier:
{
alt4=1;
}
break;
}
switch (alt4) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:46:23: idList
{
pushFollow(FOLLOW_idList_in_functionDecl117);
idList();
state._fsp--;
}
break;
}
match(input,CParen,FOLLOW_CParen_in_functionDecl120);
pushFollow(FOLLOW_block_in_functionDecl122);
block();
state._fsp--;
match(input,End,FOLLOW_End_in_functionDecl124);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "functionDecl"
// $ANTLR start "idList"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:49:1: idList : Identifier ( ',' Identifier )* ;
public final void idList() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:50:2: ( Identifier ( ',' Identifier )* )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:50:4: Identifier ( ',' Identifier )*
{
match(input,Identifier,FOLLOW_Identifier_in_idList135);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:50:15: ( ',' Identifier )*
loop5:
do {
int alt5=2;
switch ( input.LA(1) ) {
case Comma:
{
alt5=1;
}
break;
}
switch (alt5) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:50:16: ',' Identifier
{
match(input,Comma,FOLLOW_Comma_in_idList138);
match(input,Identifier,FOLLOW_Identifier_in_idList140);
}
break;
default :
break loop5;
}
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "idList"
// $ANTLR start "assignment"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:53:1: assignment : Identifier ( indexes )? '=' expression ;
public final void assignment() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:54:2: ( Identifier ( indexes )? '=' expression )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:54:4: Identifier ( indexes )? '=' expression
{
match(input,Identifier,FOLLOW_Identifier_in_assignment152);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:54:15: ( indexes )?
int alt6=2;
switch ( input.LA(1) ) {
case OBracket:
{
alt6=1;
}
break;
}
switch (alt6) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:54:15: indexes
{
pushFollow(FOLLOW_indexes_in_assignment154);
indexes();
state._fsp--;
}
break;
}
match(input,Assign,FOLLOW_Assign_in_assignment157);
pushFollow(FOLLOW_expression_in_assignment159);
expression();
state._fsp--;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "assignment"
// $ANTLR start "indexes"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:57:1: indexes : ( '[' expression ']' )+ ;
public final void indexes() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:58:2: ( ( '[' expression ']' )+ )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:58:4: ( '[' expression ']' )+
{
// ar/com/javacuriosities/tiny/grammar/Tiny.g:58:4: ( '[' expression ']' )+
int cnt7=0;
loop7:
do {
int alt7=2;
switch ( input.LA(1) ) {
case OBracket:
{
alt7=1;
}
break;
}
switch (alt7) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:58:5: '[' expression ']'
{
match(input,OBracket,FOLLOW_OBracket_in_indexes170);
pushFollow(FOLLOW_expression_in_indexes172);
expression();
state._fsp--;
match(input,CBracket,FOLLOW_CBracket_in_indexes174);
}
break;
default :
if ( cnt7 >= 1 ) break loop7;
EarlyExitException eee =
new EarlyExitException(7, input);
throw eee;
}
cnt7++;
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "indexes"
// $ANTLR start "expression"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:61:1: expression : condExpr ;
public final void expression() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:62:2: ( condExpr )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:62:4: condExpr
{
pushFollow(FOLLOW_condExpr_in_expression186);
condExpr();
state._fsp--;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "expression"
// $ANTLR start "condExpr"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:65:1: condExpr : orExpr ( '?' expression ':' expression | In expression )? ;
public final void condExpr() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:66:2: ( orExpr ( '?' expression ':' expression | In expression )? )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:66:4: orExpr ( '?' expression ':' expression | In expression )?
{
pushFollow(FOLLOW_orExpr_in_condExpr196);
orExpr();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:66:11: ( '?' expression ':' expression | In expression )?
int alt8=3;
switch ( input.LA(1) ) {
case QMark:
{
alt8=1;
}
break;
case In:
{
alt8=2;
}
break;
}
switch (alt8) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:66:13: '?' expression ':' expression
{
match(input,QMark,FOLLOW_QMark_in_condExpr200);
pushFollow(FOLLOW_expression_in_condExpr202);
expression();
state._fsp--;
match(input,Colon,FOLLOW_Colon_in_condExpr204);
pushFollow(FOLLOW_expression_in_condExpr206);
expression();
state._fsp--;
}
break;
case 2 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:66:45: In expression
{
match(input,In,FOLLOW_In_in_condExpr210);
pushFollow(FOLLOW_expression_in_condExpr212);
expression();
state._fsp--;
}
break;
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "condExpr"
// $ANTLR start "orExpr"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:69:1: orExpr : andExpr ( '||' andExpr )* ;
public final void orExpr() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:70:2: ( andExpr ( '||' andExpr )* )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:70:4: andExpr ( '||' andExpr )*
{
pushFollow(FOLLOW_andExpr_in_orExpr224);
andExpr();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:70:12: ( '||' andExpr )*
loop9:
do {
int alt9=2;
switch ( input.LA(1) ) {
case Or:
{
alt9=1;
}
break;
}
switch (alt9) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:70:13: '||' andExpr
{
match(input,Or,FOLLOW_Or_in_orExpr227);
pushFollow(FOLLOW_andExpr_in_orExpr229);
andExpr();
state._fsp--;
}
break;
default :
break loop9;
}
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "orExpr"
// $ANTLR start "andExpr"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:73:1: andExpr : equExpr ( '&&' equExpr )* ;
public final void andExpr() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:74:2: ( equExpr ( '&&' equExpr )* )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:74:4: equExpr ( '&&' equExpr )*
{
pushFollow(FOLLOW_equExpr_in_andExpr241);
equExpr();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:74:12: ( '&&' equExpr )*
loop10:
do {
int alt10=2;
switch ( input.LA(1) ) {
case And:
{
alt10=1;
}
break;
}
switch (alt10) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:74:13: '&&' equExpr
{
match(input,And,FOLLOW_And_in_andExpr244);
pushFollow(FOLLOW_equExpr_in_andExpr246);
equExpr();
state._fsp--;
}
break;
default :
break loop10;
}
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "andExpr"
// $ANTLR start "equExpr"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:77:1: equExpr : relExpr ( ( '==' | '!=' ) relExpr )* ;
public final void equExpr() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:78:2: ( relExpr ( ( '==' | '!=' ) relExpr )* )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:78:4: relExpr ( ( '==' | '!=' ) relExpr )*
{
pushFollow(FOLLOW_relExpr_in_equExpr258);
relExpr();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:78:12: ( ( '==' | '!=' ) relExpr )*
loop11:
do {
int alt11=2;
switch ( input.LA(1) ) {
case Equals:
case NEquals:
{
alt11=1;
}
break;
}
switch (alt11) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:78:13: ( '==' | '!=' ) relExpr
{
if ( input.LA(1)==Equals||input.LA(1)==NEquals ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_relExpr_in_equExpr269);
relExpr();
state._fsp--;
}
break;
default :
break loop11;
}
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "equExpr"
// $ANTLR start "relExpr"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:81:1: relExpr : addExpr ( ( '>=' | '<=' | '>' | '<' ) addExpr )* ;
public final void relExpr() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:82:2: ( addExpr ( ( '>=' | '<=' | '>' | '<' ) addExpr )* )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:82:4: addExpr ( ( '>=' | '<=' | '>' | '<' ) addExpr )*
{
pushFollow(FOLLOW_addExpr_in_relExpr281);
addExpr();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:82:12: ( ( '>=' | '<=' | '>' | '<' ) addExpr )*
loop12:
do {
int alt12=2;
switch ( input.LA(1) ) {
case GT:
case GTEquals:
case LT:
case LTEquals:
{
alt12=1;
}
break;
}
switch (alt12) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:82:13: ( '>=' | '<=' | '>' | '<' ) addExpr
{
if ( (input.LA(1) >= GT && input.LA(1) <= GTEquals)||(input.LA(1) >= LT && input.LA(1) <= LTEquals) ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_addExpr_in_relExpr300);
addExpr();
state._fsp--;
}
break;
default :
break loop12;
}
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "relExpr"
// $ANTLR start "addExpr"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:85:1: addExpr : mulExpr ( ( '+' | '-' ) mulExpr )* ;
public final void addExpr() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:86:2: ( mulExpr ( ( '+' | '-' ) mulExpr )* )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:86:4: mulExpr ( ( '+' | '-' ) mulExpr )*
{
pushFollow(FOLLOW_mulExpr_in_addExpr312);
mulExpr();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:86:12: ( ( '+' | '-' ) mulExpr )*
loop13:
do {
int alt13=2;
switch ( input.LA(1) ) {
case Add:
case Subtract:
{
alt13=1;
}
break;
}
switch (alt13) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:86:13: ( '+' | '-' ) mulExpr
{
if ( input.LA(1)==Add||input.LA(1)==Subtract ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_mulExpr_in_addExpr323);
mulExpr();
state._fsp--;
}
break;
default :
break loop13;
}
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "addExpr"
// $ANTLR start "mulExpr"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:89:1: mulExpr : powExpr ( ( '*' | '/' | '%' ) powExpr )* ;
public final void mulExpr() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:90:2: ( powExpr ( ( '*' | '/' | '%' ) powExpr )* )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:90:4: powExpr ( ( '*' | '/' | '%' ) powExpr )*
{
pushFollow(FOLLOW_powExpr_in_mulExpr335);
powExpr();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:90:12: ( ( '*' | '/' | '%' ) powExpr )*
loop14:
do {
int alt14=2;
switch ( input.LA(1) ) {
case Divide:
case Modulus:
case Multiply:
{
alt14=1;
}
break;
}
switch (alt14) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:90:13: ( '*' | '/' | '%' ) powExpr
{
if ( input.LA(1)==Divide||(input.LA(1) >= Modulus && input.LA(1) <= Multiply) ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_powExpr_in_mulExpr350);
powExpr();
state._fsp--;
}
break;
default :
break loop14;
}
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "mulExpr"
// $ANTLR start "powExpr"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:93:1: powExpr : unaryExpr ( '^' unaryExpr )* ;
public final void powExpr() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:94:2: ( unaryExpr ( '^' unaryExpr )* )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:94:4: unaryExpr ( '^' unaryExpr )*
{
pushFollow(FOLLOW_unaryExpr_in_powExpr362);
unaryExpr();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:94:14: ( '^' unaryExpr )*
loop15:
do {
int alt15=2;
switch ( input.LA(1) ) {
case Pow:
{
alt15=1;
}
break;
}
switch (alt15) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:94:15: '^' unaryExpr
{
match(input,Pow,FOLLOW_Pow_in_powExpr365);
pushFollow(FOLLOW_unaryExpr_in_powExpr367);
unaryExpr();
state._fsp--;
}
break;
default :
break loop15;
}
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "powExpr"
// $ANTLR start "unaryExpr"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:97:1: unaryExpr : ( '-' atom | '!' atom | atom );
public final void unaryExpr() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:98:2: ( '-' atom | '!' atom | atom )
int alt16=3;
switch ( input.LA(1) ) {
case Subtract:
{
alt16=1;
}
break;
case Excl:
{
alt16=2;
}
break;
case Assert:
case Bool:
case Identifier:
case Null:
case Number:
case OBracket:
case OParen:
case Print:
case Println:
case Size:
case String:
{
alt16=3;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 16, 0, input);
throw nvae;
}
switch (alt16) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:98:4: '-' atom
{
match(input,Subtract,FOLLOW_Subtract_in_unaryExpr379);
pushFollow(FOLLOW_atom_in_unaryExpr381);
atom();
state._fsp--;
}
break;
case 2 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:99:4: '!' atom
{
match(input,Excl,FOLLOW_Excl_in_unaryExpr386);
pushFollow(FOLLOW_atom_in_unaryExpr388);
atom();
state._fsp--;
}
break;
case 3 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:100:4: atom
{
pushFollow(FOLLOW_atom_in_unaryExpr393);
atom();
state._fsp--;
}
break;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "unaryExpr"
// $ANTLR start "atom"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:103:1: atom : ( Null | Number | Bool | lookup );
public final void atom() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:104:2: ( Null | Number | Bool | lookup )
int alt17=4;
switch ( input.LA(1) ) {
case Null:
{
alt17=1;
}
break;
case Number:
{
alt17=2;
}
break;
case Bool:
{
alt17=3;
}
break;
case Assert:
case Identifier:
case OBracket:
case OParen:
case Print:
case Println:
case Size:
case String:
{
alt17=4;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 17, 0, input);
throw nvae;
}
switch (alt17) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:104:4: Null
{
match(input,Null,FOLLOW_Null_in_atom403);
}
break;
case 2 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:105:6: Number
{
match(input,Number,FOLLOW_Number_in_atom410);
}
break;
case 3 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:106:6: Bool
{
match(input,Bool,FOLLOW_Bool_in_atom417);
}
break;
case 4 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:107:6: lookup
{
pushFollow(FOLLOW_lookup_in_atom424);
lookup();
state._fsp--;
}
break;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "atom"
// $ANTLR start "lookup"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:110:1: lookup : ( functionCall ( indexes )? | '(' expression ')' ( indexes )? | list ( indexes )? | Identifier ( indexes )? | String ( indexes )? );
public final void lookup() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:111:2: ( functionCall ( indexes )? | '(' expression ')' ( indexes )? | list ( indexes )? | Identifier ( indexes )? | String ( indexes )? )
int alt23=5;
switch ( input.LA(1) ) {
case Identifier:
{
switch ( input.LA(2) ) {
case OParen:
{
alt23=1;
}
break;
case Add:
case And:
case CBracket:
case CParen:
case Colon:
case Comma:
case Divide:
case Do:
case Equals:
case GT:
case GTEquals:
case In:
case LT:
case LTEquals:
case Modulus:
case Multiply:
case NEquals:
case OBracket:
case Or:
case Pow:
case QMark:
case SColon:
case Subtract:
case To:
{
alt23=4;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 23, 1, input);
throw nvae;
}
}
break;
case Assert:
case Print:
case Println:
case Size:
{
alt23=1;
}
break;
case OParen:
{
alt23=2;
}
break;
case OBracket:
{
alt23=3;
}
break;
case String:
{
alt23=5;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 23, 0, input);
throw nvae;
}
switch (alt23) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:111:4: functionCall ( indexes )?
{
pushFollow(FOLLOW_functionCall_in_lookup434);
functionCall();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:111:17: ( indexes )?
int alt18=2;
switch ( input.LA(1) ) {
case OBracket:
{
alt18=1;
}
break;
}
switch (alt18) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:111:17: indexes
{
pushFollow(FOLLOW_indexes_in_lookup436);
indexes();
state._fsp--;
}
break;
}
}
break;
case 2 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:112:6: '(' expression ')' ( indexes )?
{
match(input,OParen,FOLLOW_OParen_in_lookup444);
pushFollow(FOLLOW_expression_in_lookup446);
expression();
state._fsp--;
match(input,CParen,FOLLOW_CParen_in_lookup448);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:112:25: ( indexes )?
int alt19=2;
switch ( input.LA(1) ) {
case OBracket:
{
alt19=1;
}
break;
}
switch (alt19) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:112:25: indexes
{
pushFollow(FOLLOW_indexes_in_lookup450);
indexes();
state._fsp--;
}
break;
}
}
break;
case 3 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:113:6: list ( indexes )?
{
pushFollow(FOLLOW_list_in_lookup458);
list();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:113:11: ( indexes )?
int alt20=2;
switch ( input.LA(1) ) {
case OBracket:
{
alt20=1;
}
break;
}
switch (alt20) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:113:11: indexes
{
pushFollow(FOLLOW_indexes_in_lookup460);
indexes();
state._fsp--;
}
break;
}
}
break;
case 4 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:114:6: Identifier ( indexes )?
{
match(input,Identifier,FOLLOW_Identifier_in_lookup468);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:114:17: ( indexes )?
int alt21=2;
switch ( input.LA(1) ) {
case OBracket:
{
alt21=1;
}
break;
}
switch (alt21) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:114:17: indexes
{
pushFollow(FOLLOW_indexes_in_lookup470);
indexes();
state._fsp--;
}
break;
}
}
break;
case 5 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:115:6: String ( indexes )?
{
match(input,String,FOLLOW_String_in_lookup478);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:115:13: ( indexes )?
int alt22=2;
switch ( input.LA(1) ) {
case OBracket:
{
alt22=1;
}
break;
}
switch (alt22) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:115:13: indexes
{
pushFollow(FOLLOW_indexes_in_lookup480);
indexes();
state._fsp--;
}
break;
}
}
break;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "lookup"
// $ANTLR start "list"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:118:1: list : '[' ( exprList )? ']' ;
public final void list() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:119:2: ( '[' ( exprList )? ']' )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:119:4: '[' ( exprList )? ']'
{
match(input,OBracket,FOLLOW_OBracket_in_list491);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:119:8: ( exprList )?
int alt24=2;
switch ( input.LA(1) ) {
case Assert:
case Bool:
case Excl:
case Identifier:
case Null:
case Number:
case OBracket:
case OParen:
case Print:
case Println:
case Size:
case String:
case Subtract:
{
alt24=1;
}
break;
}
switch (alt24) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:119:8: exprList
{
pushFollow(FOLLOW_exprList_in_list493);
exprList();
state._fsp--;
}
break;
}
match(input,CBracket,FOLLOW_CBracket_in_list496);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "list"
// $ANTLR start "exprList"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:122:1: exprList : expression ( ',' expression )* ;
public final void exprList() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:123:2: ( expression ( ',' expression )* )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:123:4: expression ( ',' expression )*
{
pushFollow(FOLLOW_expression_in_exprList506);
expression();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:123:15: ( ',' expression )*
loop25:
do {
int alt25=2;
switch ( input.LA(1) ) {
case Comma:
{
alt25=1;
}
break;
}
switch (alt25) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:123:16: ',' expression
{
match(input,Comma,FOLLOW_Comma_in_exprList509);
pushFollow(FOLLOW_expression_in_exprList511);
expression();
state._fsp--;
}
break;
default :
break loop25;
}
} while (true);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "exprList"
// $ANTLR start "functionCall"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:126:1: functionCall : ( Identifier '(' ( exprList )? ')' | Println '(' ( expression )? ')' | Print '(' expression ')' | Assert '(' expression ')' | Size '(' expression ')' );
public final void functionCall() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:127:2: ( Identifier '(' ( exprList )? ')' | Println '(' ( expression )? ')' | Print '(' expression ')' | Assert '(' expression ')' | Size '(' expression ')' )
int alt28=5;
switch ( input.LA(1) ) {
case Identifier:
{
alt28=1;
}
break;
case Println:
{
alt28=2;
}
break;
case Print:
{
alt28=3;
}
break;
case Assert:
{
alt28=4;
}
break;
case Size:
{
alt28=5;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 28, 0, input);
throw nvae;
}
switch (alt28) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:127:4: Identifier '(' ( exprList )? ')'
{
match(input,Identifier,FOLLOW_Identifier_in_functionCall523);
match(input,OParen,FOLLOW_OParen_in_functionCall525);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:127:19: ( exprList )?
int alt26=2;
switch ( input.LA(1) ) {
case Assert:
case Bool:
case Excl:
case Identifier:
case Null:
case Number:
case OBracket:
case OParen:
case Print:
case Println:
case Size:
case String:
case Subtract:
{
alt26=1;
}
break;
}
switch (alt26) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:127:19: exprList
{
pushFollow(FOLLOW_exprList_in_functionCall527);
exprList();
state._fsp--;
}
break;
}
match(input,CParen,FOLLOW_CParen_in_functionCall530);
}
break;
case 2 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:128:6: Println '(' ( expression )? ')'
{
match(input,Println,FOLLOW_Println_in_functionCall537);
match(input,OParen,FOLLOW_OParen_in_functionCall539);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:128:18: ( expression )?
int alt27=2;
switch ( input.LA(1) ) {
case Assert:
case Bool:
case Excl:
case Identifier:
case Null:
case Number:
case OBracket:
case OParen:
case Print:
case Println:
case Size:
case String:
case Subtract:
{
alt27=1;
}
break;
}
switch (alt27) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:128:18: expression
{
pushFollow(FOLLOW_expression_in_functionCall541);
expression();
state._fsp--;
}
break;
}
match(input,CParen,FOLLOW_CParen_in_functionCall544);
}
break;
case 3 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:129:6: Print '(' expression ')'
{
match(input,Print,FOLLOW_Print_in_functionCall551);
match(input,OParen,FOLLOW_OParen_in_functionCall553);
pushFollow(FOLLOW_expression_in_functionCall555);
expression();
state._fsp--;
match(input,CParen,FOLLOW_CParen_in_functionCall557);
}
break;
case 4 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:130:6: Assert '(' expression ')'
{
match(input,Assert,FOLLOW_Assert_in_functionCall564);
match(input,OParen,FOLLOW_OParen_in_functionCall566);
pushFollow(FOLLOW_expression_in_functionCall568);
expression();
state._fsp--;
match(input,CParen,FOLLOW_CParen_in_functionCall570);
}
break;
case 5 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:131:6: Size '(' expression ')'
{
match(input,Size,FOLLOW_Size_in_functionCall577);
match(input,OParen,FOLLOW_OParen_in_functionCall579);
pushFollow(FOLLOW_expression_in_functionCall581);
expression();
state._fsp--;
match(input,CParen,FOLLOW_CParen_in_functionCall583);
}
break;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "functionCall"
// $ANTLR start "ifStatement"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:134:1: ifStatement : ifStat ( elseIfStat )* ( elseStat )? End ;
public final void ifStatement() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:135:2: ( ifStat ( elseIfStat )* ( elseStat )? End )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:135:4: ifStat ( elseIfStat )* ( elseStat )? End
{
pushFollow(FOLLOW_ifStat_in_ifStatement593);
ifStat();
state._fsp--;
// ar/com/javacuriosities/tiny/grammar/Tiny.g:135:11: ( elseIfStat )*
loop29:
do {
int alt29=2;
switch ( input.LA(1) ) {
case Else:
{
switch ( input.LA(2) ) {
case If:
{
alt29=1;
}
break;
}
}
break;
}
switch (alt29) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:135:11: elseIfStat
{
pushFollow(FOLLOW_elseIfStat_in_ifStatement595);
elseIfStat();
state._fsp--;
}
break;
default :
break loop29;
}
} while (true);
// ar/com/javacuriosities/tiny/grammar/Tiny.g:135:23: ( elseStat )?
int alt30=2;
switch ( input.LA(1) ) {
case Else:
{
alt30=1;
}
break;
}
switch (alt30) {
case 1 :
// ar/com/javacuriosities/tiny/grammar/Tiny.g:135:23: elseStat
{
pushFollow(FOLLOW_elseStat_in_ifStatement598);
elseStat();
state._fsp--;
}
break;
}
match(input,End,FOLLOW_End_in_ifStatement601);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "ifStatement"
// $ANTLR start "ifStat"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:138:1: ifStat : If expression Do block ;
public final void ifStat() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:139:2: ( If expression Do block )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:139:4: If expression Do block
{
match(input,If,FOLLOW_If_in_ifStat611);
pushFollow(FOLLOW_expression_in_ifStat613);
expression();
state._fsp--;
match(input,Do,FOLLOW_Do_in_ifStat615);
pushFollow(FOLLOW_block_in_ifStat617);
block();
state._fsp--;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "ifStat"
// $ANTLR start "elseIfStat"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:142:1: elseIfStat : Else If expression Do block ;
public final void elseIfStat() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:143:2: ( Else If expression Do block )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:143:4: Else If expression Do block
{
match(input,Else,FOLLOW_Else_in_elseIfStat627);
match(input,If,FOLLOW_If_in_elseIfStat629);
pushFollow(FOLLOW_expression_in_elseIfStat631);
expression();
state._fsp--;
match(input,Do,FOLLOW_Do_in_elseIfStat633);
pushFollow(FOLLOW_block_in_elseIfStat635);
block();
state._fsp--;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "elseIfStat"
// $ANTLR start "elseStat"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:146:1: elseStat : Else Do block ;
public final void elseStat() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:147:2: ( Else Do block )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:147:4: Else Do block
{
match(input,Else,FOLLOW_Else_in_elseStat645);
match(input,Do,FOLLOW_Do_in_elseStat647);
pushFollow(FOLLOW_block_in_elseStat649);
block();
state._fsp--;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "elseStat"
// $ANTLR start "forStatement"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:150:1: forStatement : For Identifier '=' expression To expression Do block End ;
public final void forStatement() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:151:2: ( For Identifier '=' expression To expression Do block End )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:151:4: For Identifier '=' expression To expression Do block End
{
match(input,For,FOLLOW_For_in_forStatement659);
match(input,Identifier,FOLLOW_Identifier_in_forStatement661);
match(input,Assign,FOLLOW_Assign_in_forStatement663);
pushFollow(FOLLOW_expression_in_forStatement665);
expression();
state._fsp--;
match(input,To,FOLLOW_To_in_forStatement667);
pushFollow(FOLLOW_expression_in_forStatement669);
expression();
state._fsp--;
match(input,Do,FOLLOW_Do_in_forStatement671);
pushFollow(FOLLOW_block_in_forStatement673);
block();
state._fsp--;
match(input,End,FOLLOW_End_in_forStatement675);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "forStatement"
// $ANTLR start "whileStatement"
// ar/com/javacuriosities/tiny/grammar/Tiny.g:154:1: whileStatement : While expression Do block End ;
public final void whileStatement() throws RecognitionException {
try {
// ar/com/javacuriosities/tiny/grammar/Tiny.g:155:2: ( While expression Do block End )
// ar/com/javacuriosities/tiny/grammar/Tiny.g:155:4: While expression Do block End
{
match(input,While,FOLLOW_While_in_whileStatement685);
pushFollow(FOLLOW_expression_in_whileStatement687);
expression();
state._fsp--;
match(input,Do,FOLLOW_Do_in_whileStatement689);
pushFollow(FOLLOW_block_in_whileStatement691);
block();
state._fsp--;
match(input,End,FOLLOW_End_in_whileStatement693);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
}
return ;
}
// $ANTLR end "whileStatement"
// Delegated rules
public static final BitSet FOLLOW_block_in_parse33 = new BitSet(new long[]{0x0000000000000000L});
public static final BitSet FOLLOW_EOF_in_parse35 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_statement_in_block46 = new BitSet(new long[]{0x0042B00030808042L});
public static final BitSet FOLLOW_functionDecl_in_block50 = new BitSet(new long[]{0x0042B00030808042L});
public static final BitSet FOLLOW_Return_in_block55 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_block57 = new BitSet(new long[]{0x0001000000000000L});
public static final BitSet FOLLOW_SColon_in_block59 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_assignment_in_statement71 = new BitSet(new long[]{0x0001000000000000L});
public static final BitSet FOLLOW_SColon_in_statement73 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_functionCall_in_statement78 = new BitSet(new long[]{0x0001000000000000L});
public static final BitSet FOLLOW_SColon_in_statement80 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ifStatement_in_statement87 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_forStatement_in_statement94 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_whileStatement_in_statement101 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Def_in_functionDecl111 = new BitSet(new long[]{0x0000000010000000L});
public static final BitSet FOLLOW_Identifier_in_functionDecl113 = new BitSet(new long[]{0x0000020000000000L});
public static final BitSet FOLLOW_OParen_in_functionDecl115 = new BitSet(new long[]{0x0000000010000800L});
public static final BitSet FOLLOW_idList_in_functionDecl117 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_CParen_in_functionDecl120 = new BitSet(new long[]{0x0042B00030908040L});
public static final BitSet FOLLOW_block_in_functionDecl122 = new BitSet(new long[]{0x0000000000100000L});
public static final BitSet FOLLOW_End_in_functionDecl124 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Identifier_in_idList135 = new BitSet(new long[]{0x0000000000002002L});
public static final BitSet FOLLOW_Comma_in_idList138 = new BitSet(new long[]{0x0000000010000000L});
public static final BitSet FOLLOW_Identifier_in_idList140 = new BitSet(new long[]{0x0000000000002002L});
public static final BitSet FOLLOW_Identifier_in_assignment152 = new BitSet(new long[]{0x0000010000000080L});
public static final BitSet FOLLOW_indexes_in_assignment154 = new BitSet(new long[]{0x0000000000000080L});
public static final BitSet FOLLOW_Assign_in_assignment157 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_assignment159 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_OBracket_in_indexes170 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_indexes172 = new BitSet(new long[]{0x0000000000000400L});
public static final BitSet FOLLOW_CBracket_in_indexes174 = new BitSet(new long[]{0x0000010000000002L});
public static final BitSet FOLLOW_condExpr_in_expression186 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_orExpr_in_condExpr196 = new BitSet(new long[]{0x0000400040000002L});
public static final BitSet FOLLOW_QMark_in_condExpr200 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_condExpr202 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_Colon_in_condExpr204 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_condExpr206 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_In_in_condExpr210 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_condExpr212 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_andExpr_in_orExpr224 = new BitSet(new long[]{0x0000040000000002L});
public static final BitSet FOLLOW_Or_in_orExpr227 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_andExpr_in_orExpr229 = new BitSet(new long[]{0x0000040000000002L});
public static final BitSet FOLLOW_equExpr_in_andExpr241 = new BitSet(new long[]{0x0000000000000022L});
public static final BitSet FOLLOW_And_in_andExpr244 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_equExpr_in_andExpr246 = new BitSet(new long[]{0x0000000000000022L});
public static final BitSet FOLLOW_relExpr_in_equExpr258 = new BitSet(new long[]{0x0000001000200002L});
public static final BitSet FOLLOW_set_in_equExpr261 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_relExpr_in_equExpr269 = new BitSet(new long[]{0x0000001000200002L});
public static final BitSet FOLLOW_addExpr_in_relExpr281 = new BitSet(new long[]{0x0000000303000002L});
public static final BitSet FOLLOW_set_in_relExpr284 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_addExpr_in_relExpr300 = new BitSet(new long[]{0x0000000303000002L});
public static final BitSet FOLLOW_mulExpr_in_addExpr312 = new BitSet(new long[]{0x0010000000000012L});
public static final BitSet FOLLOW_set_in_addExpr315 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_mulExpr_in_addExpr323 = new BitSet(new long[]{0x0010000000000012L});
public static final BitSet FOLLOW_powExpr_in_mulExpr335 = new BitSet(new long[]{0x0000000C00020002L});
public static final BitSet FOLLOW_set_in_mulExpr338 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_powExpr_in_mulExpr350 = new BitSet(new long[]{0x0000000C00020002L});
public static final BitSet FOLLOW_unaryExpr_in_powExpr362 = new BitSet(new long[]{0x0000080000000002L});
public static final BitSet FOLLOW_Pow_in_powExpr365 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_unaryExpr_in_powExpr367 = new BitSet(new long[]{0x0000080000000002L});
public static final BitSet FOLLOW_Subtract_in_unaryExpr379 = new BitSet(new long[]{0x000A336010000140L});
public static final BitSet FOLLOW_atom_in_unaryExpr381 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Excl_in_unaryExpr386 = new BitSet(new long[]{0x000A336010000140L});
public static final BitSet FOLLOW_atom_in_unaryExpr388 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_atom_in_unaryExpr393 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Null_in_atom403 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Number_in_atom410 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Bool_in_atom417 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_lookup_in_atom424 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_functionCall_in_lookup434 = new BitSet(new long[]{0x0000010000000002L});
public static final BitSet FOLLOW_indexes_in_lookup436 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_OParen_in_lookup444 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_lookup446 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_CParen_in_lookup448 = new BitSet(new long[]{0x0000010000000002L});
public static final BitSet FOLLOW_indexes_in_lookup450 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_list_in_lookup458 = new BitSet(new long[]{0x0000010000000002L});
public static final BitSet FOLLOW_indexes_in_lookup460 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Identifier_in_lookup468 = new BitSet(new long[]{0x0000010000000002L});
public static final BitSet FOLLOW_indexes_in_lookup470 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_String_in_lookup478 = new BitSet(new long[]{0x0000010000000002L});
public static final BitSet FOLLOW_indexes_in_lookup480 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_OBracket_in_list491 = new BitSet(new long[]{0x001A336010400540L});
public static final BitSet FOLLOW_exprList_in_list493 = new BitSet(new long[]{0x0000000000000400L});
public static final BitSet FOLLOW_CBracket_in_list496 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_expression_in_exprList506 = new BitSet(new long[]{0x0000000000002002L});
public static final BitSet FOLLOW_Comma_in_exprList509 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_exprList511 = new BitSet(new long[]{0x0000000000002002L});
public static final BitSet FOLLOW_Identifier_in_functionCall523 = new BitSet(new long[]{0x0000020000000000L});
public static final BitSet FOLLOW_OParen_in_functionCall525 = new BitSet(new long[]{0x001A336010400940L});
public static final BitSet FOLLOW_exprList_in_functionCall527 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_CParen_in_functionCall530 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Println_in_functionCall537 = new BitSet(new long[]{0x0000020000000000L});
public static final BitSet FOLLOW_OParen_in_functionCall539 = new BitSet(new long[]{0x001A336010400940L});
public static final BitSet FOLLOW_expression_in_functionCall541 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_CParen_in_functionCall544 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Print_in_functionCall551 = new BitSet(new long[]{0x0000020000000000L});
public static final BitSet FOLLOW_OParen_in_functionCall553 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_functionCall555 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_CParen_in_functionCall557 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Assert_in_functionCall564 = new BitSet(new long[]{0x0000020000000000L});
public static final BitSet FOLLOW_OParen_in_functionCall566 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_functionCall568 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_CParen_in_functionCall570 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Size_in_functionCall577 = new BitSet(new long[]{0x0000020000000000L});
public static final BitSet FOLLOW_OParen_in_functionCall579 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_functionCall581 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_CParen_in_functionCall583 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ifStat_in_ifStatement593 = new BitSet(new long[]{0x0000000000180000L});
public static final BitSet FOLLOW_elseIfStat_in_ifStatement595 = new BitSet(new long[]{0x0000000000180000L});
public static final BitSet FOLLOW_elseStat_in_ifStatement598 = new BitSet(new long[]{0x0000000000100000L});
public static final BitSet FOLLOW_End_in_ifStatement601 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_If_in_ifStat611 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_ifStat613 = new BitSet(new long[]{0x0000000000040000L});
public static final BitSet FOLLOW_Do_in_ifStat615 = new BitSet(new long[]{0x0042B00030808040L});
public static final BitSet FOLLOW_block_in_ifStat617 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Else_in_elseIfStat627 = new BitSet(new long[]{0x0000000020000000L});
public static final BitSet FOLLOW_If_in_elseIfStat629 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_elseIfStat631 = new BitSet(new long[]{0x0000000000040000L});
public static final BitSet FOLLOW_Do_in_elseIfStat633 = new BitSet(new long[]{0x0042B00030808040L});
public static final BitSet FOLLOW_block_in_elseIfStat635 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Else_in_elseStat645 = new BitSet(new long[]{0x0000000000040000L});
public static final BitSet FOLLOW_Do_in_elseStat647 = new BitSet(new long[]{0x0042B00030808040L});
public static final BitSet FOLLOW_block_in_elseStat649 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_For_in_forStatement659 = new BitSet(new long[]{0x0000000010000000L});
public static final BitSet FOLLOW_Identifier_in_forStatement661 = new BitSet(new long[]{0x0000000000000080L});
public static final BitSet FOLLOW_Assign_in_forStatement663 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_forStatement665 = new BitSet(new long[]{0x0020000000000000L});
public static final BitSet FOLLOW_To_in_forStatement667 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_forStatement669 = new BitSet(new long[]{0x0000000000040000L});
public static final BitSet FOLLOW_Do_in_forStatement671 = new BitSet(new long[]{0x0042B00030908040L});
public static final BitSet FOLLOW_block_in_forStatement673 = new BitSet(new long[]{0x0000000000100000L});
public static final BitSet FOLLOW_End_in_forStatement675 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_While_in_whileStatement685 = new BitSet(new long[]{0x001A336010400140L});
public static final BitSet FOLLOW_expression_in_whileStatement687 = new BitSet(new long[]{0x0000000000040000L});
public static final BitSet FOLLOW_Do_in_whileStatement689 = new BitSet(new long[]{0x0042B00030908040L});
public static final BitSet FOLLOW_block_in_whileStatement691 = new BitSet(new long[]{0x0000000000100000L});
public static final BitSet FOLLOW_End_in_whileStatement693 = new BitSet(new long[]{0x0000000000000002L});
}