// $ANTLR 3.2 Sep 23, 2009 12:02:23 GaaletTransformer.g 2010-12-19 07:58:55 package de.gaalop.gaalet.antlr; import java.util.Collections; import java.util.ArrayList; import de.gaalop.cfg.*; import de.gaalop.dfg.*; import static de.gaalop.dfg.ExpressionFactory.*; import de.gaalop.gaalet.GraphBuilder; import org.antlr.runtime.*; import org.antlr.runtime.tree.*;import java.util.Stack; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.util.HashMap; public class GaaletTransformer extends TreeParser { public static final String[] tokenNames = new String[] { "<invalid>", "<EOR>", "<DOWN>", "<UP>", "DECIMAL_LITERAL", "HEX_PREFIX", "DIGIT", "HEX", "RANGE_LITERAL", "OUTPUT_LITERAL", "UNROLL_LITERAL", "COUNT_LITERAL", "IGNORE_LITERAL", "LOOP", "BREAK", "GEALG_MV", "GEALG_TYPE", "DOUBLE", "FLOAT", "INTEGER", "UNSIGNED", "SIGNED", "AUTO", "EVAL", "INVERSE", "MINUS", "EXPONENT", "FLOATTYPESUFFIX", "OPNS", "IPNS", "IF", "ELSE", "IDENTIFIER_RECURSIVE", "IDENTIFIER", "LETTER", "DOT", "DOUBLE_COLON", "ARROW_RIGHT", "LSBRACKET", "RSBRACKET", "LBRACKET", "RBRACKET", "IDENTIFIER_TYPE_CAST", "FLOATING_POINT_LITERAL", "SPACE", "WS", "COMMA", "PLUS", "STAR", "SLASH", "MODULO", "CLBRACKET", "CRBRACKET", "REVERSE", "NOT", "DOUBLE_NOT", "SEMICOLON", "WEDGE", "QUESTIONMARK", "COLON", "DOUBLE_BAR", "DOUBLE_AND", "SINGLE_AND", "DOUBLE_EQUALS", "EQUALS", "UNEQUAL", "LESS", "GREATER", "LESS_OR_EQUAL", "GREATER_OR_EQUAL", "SET_OUTPUT", "COMMENT", "PRAGMA", "LINE_COMMENT", "FUNCTION", "PROCEDURE", "NEGATION", "LOGICAL_NEGATION", "DUAL", "BLOCK", "ELSEIF", "DEFINE_V", "DEFINE_ASSIGNMENT", "DEFINE_MV", "DEFINE_MV_AND_ASSIGN", "DEFINE_GEALG", "BLADE", "BLADE_ASSIGN", "MACRO", "ARGUMENT", "RETURN", "ARG_LIST_SEP", "ARGUMENT_PREFIX" }; public static final int FUNCTION=74; public static final int ARROW_RIGHT=37; public static final int SIGNED=21; public static final int EXPONENT=26; public static final int STAR=48; public static final int LETTER=34; public static final int DOUBLE_EQUALS=63; public static final int HEX_PREFIX=5; public static final int EQUALS=64; public static final int NOT=54; public static final int EOF=-1; public static final int BREAK=14; public static final int DOUBLE_NOT=55; public static final int LBRACKET=40; public static final int GREATER=67; public static final int FLOATING_POINT_LITERAL=43; public static final int GEALG_MV=15; public static final int LOOP=13; public static final int RETURN=90; public static final int LESS=66; public static final int DOUBLE=17; public static final int COMMENT=71; public static final int SET_OUTPUT=70; public static final int DUAL=78; public static final int LINE_COMMENT=73; public static final int ELSE=31; public static final int SEMICOLON=56; public static final int LSBRACKET=38; public static final int DOUBLE_AND=61; public static final int INVERSE=24; public static final int WS=45; public static final int EVAL=23; public static final int DOUBLE_COLON=36; public static final int RANGE_LITERAL=8; public static final int DEFINE_V=81; public static final int GEALG_TYPE=16; public static final int OUTPUT_LITERAL=9; public static final int BLADE=86; public static final int REVERSE=53; public static final int DECIMAL_LITERAL=4; public static final int SINGLE_AND=62; public static final int DEFINE_ASSIGNMENT=82; public static final int DOUBLE_BAR=60; public static final int GREATER_OR_EQUAL=69; public static final int PRAGMA=72; public static final int FLOAT=18; public static final int ARGUMENT_PREFIX=92; public static final int IDENTIFIER_TYPE_CAST=42; public static final int SPACE=44; public static final int IF=30; public static final int FLOATTYPESUFFIX=27; public static final int CRBRACKET=52; public static final int SLASH=49; public static final int LOGICAL_NEGATION=77; public static final int IDENTIFIER_RECURSIVE=32; public static final int RSBRACKET=39; public static final int HEX=7; public static final int COMMA=46; public static final int IDENTIFIER=33; public static final int QUESTIONMARK=58; public static final int ARGUMENT=89; public static final int AUTO=22; public static final int DEFINE_MV=83; public static final int DEFINE_GEALG=85; public static final int PLUS=47; public static final int UNROLL_LITERAL=10; public static final int IPNS=29; public static final int DIGIT=6; public static final int RBRACKET=41; public static final int DOT=35; public static final int CLBRACKET=51; public static final int ARG_LIST_SEP=91; public static final int INTEGER=19; public static final int MODULO=50; public static final int DEFINE_MV_AND_ASSIGN=84; public static final int LESS_OR_EQUAL=68; public static final int MINUS=25; public static final int BLADE_ASSIGN=87; public static final int PROCEDURE=75; public static final int OPNS=28; public static final int UNEQUAL=65; public static final int ELSEIF=80; public static final int COLON=59; public static final int WEDGE=57; public static final int UNSIGNED=20; public static final int NEGATION=76; public static final int COUNT_LITERAL=11; public static final int BLOCK=79; public static final int MACRO=88; public static final int IGNORE_LITERAL=12; // delegates // delegators public GaaletTransformer(TreeNodeStream input) { this(input, new RecognizerSharedState()); } public GaaletTransformer(TreeNodeStream input, RecognizerSharedState state) { super(input, state); } public String[] getTokenNames() { return GaaletTransformer.tokenNames; } public String getGrammarFileName() { return "GaaletTransformer.g"; } private GraphBuilder graphBuilder; private int inIfBlock = 0; private boolean inMacro = false; private static final class ParserError extends Error { public ParserError(String message) { super("Parser error: " + message); } } private List<String> errors = new ArrayList<String>(); public void displayRecognitionError(String[] tokenNames, RecognitionException e) { String hdr = getErrorHeader(e); String msg = getErrorMessage(e, tokenNames); errors.add(hdr + " " + msg); } public List<String> getErrors() { return errors; } // $ANTLR start "script" // GaaletTransformer.g:43:3: script returns [ControlFlowGraph result] : ( statement )* ; public final ControlFlowGraph script() throws RecognitionException { ControlFlowGraph result = null; graphBuilder = new GraphBuilder(); result = graphBuilder.getGraph(); try { // GaaletTransformer.g:51:3: ( ( statement )* ) // GaaletTransformer.g:51:5: ( statement )* { // GaaletTransformer.g:51:5: ( statement )* loop1: do { int alt1=2; int LA1_0 = input.LA(1); if ( (LA1_0==DECIMAL_LITERAL||(LA1_0>=LOOP && LA1_0<=BREAK)||(LA1_0>=INVERSE && LA1_0<=MINUS)||LA1_0==IF||LA1_0==IDENTIFIER||LA1_0==FLOATING_POINT_LITERAL||(LA1_0>=PLUS && LA1_0<=SLASH)||LA1_0==REVERSE||LA1_0==WEDGE||(LA1_0>=DOUBLE_BAR && LA1_0<=SET_OUTPUT)||LA1_0==PRAGMA||(LA1_0>=FUNCTION && LA1_0<=BLOCK)||(LA1_0>=DEFINE_V && LA1_0<=MACRO)) ) { alt1=1; } switch (alt1) { case 1 : // GaaletTransformer.g:0:0: statement { pushFollow(FOLLOW_statement_in_script93); statement(); state._fsp--; if (state.failed) return result; } break; default : break loop1; } } while (true); } if ( state.backtracking==0 ) { graphBuilder.finish(); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return result; } // $ANTLR end "script" // $ANTLR start "statement" // GaaletTransformer.g:54:1: statement returns [ArrayList<SequentialNode> nodes] : ( ^( PROCEDURE name= IDENTIFIER ) | assignment | define_assignment | block | if_statement | loop | BREAK | macro | expression | pragma | ^( SET_OUTPUT variable ) | ^( BLADE_ASSIGN name= IDENTIFIER blade= DECIMAL_LITERAL expression ) | ^( DEFINE_V variable ) | ^( DEFINE_MV name= IDENTIFIER gaalet_arguments_list ) | ^( DEFINE_MV_AND_ASSIGN name= IDENTIFIER gaalet_arguments_list value= expression ) | ^( DEFINE_GEALG name= IDENTIFIER gaalet_arguments_list ARG_LIST_SEP arguments ) ); public final ArrayList<SequentialNode> statement() throws RecognitionException { ArrayList<SequentialNode> nodes = null; CommonTree name=null; CommonTree blade=null; Expression value = null; GaaletTransformer.assignment_return assignment1 = null; GaaletTransformer.define_assignment_return define_assignment2 = null; ArrayList<SequentialNode> block3 = null; IfThenElseNode if_statement4 = null; LoopNode loop5 = null; Expression expression6 = null; Variable variable7 = null; Expression expression8 = null; Variable variable9 = null; ArrayList<String> gaalet_arguments_list10 = null; ArrayList<String> gaalet_arguments_list11 = null; ArrayList<String> gaalet_arguments_list12 = null; ArrayList<Expression> arguments13 = null; nodes = new ArrayList<SequentialNode>(); try { // GaaletTransformer.g:56:2: ( ^( PROCEDURE name= IDENTIFIER ) | assignment | define_assignment | block | if_statement | loop | BREAK | macro | expression | pragma | ^( SET_OUTPUT variable ) | ^( BLADE_ASSIGN name= IDENTIFIER blade= DECIMAL_LITERAL expression ) | ^( DEFINE_V variable ) | ^( DEFINE_MV name= IDENTIFIER gaalet_arguments_list ) | ^( DEFINE_MV_AND_ASSIGN name= IDENTIFIER gaalet_arguments_list value= expression ) | ^( DEFINE_GEALG name= IDENTIFIER gaalet_arguments_list ARG_LIST_SEP arguments ) ) int alt2=16; switch ( input.LA(1) ) { case PROCEDURE: { alt2=1; } break; case EQUALS: { alt2=2; } break; case DEFINE_ASSIGNMENT: { alt2=3; } break; case BLOCK: { alt2=4; } break; case IF: { alt2=5; } break; case LOOP: { alt2=6; } break; case BREAK: { alt2=7; } break; case MACRO: { alt2=8; } break; case DECIMAL_LITERAL: case INVERSE: case MINUS: case IDENTIFIER: case FLOATING_POINT_LITERAL: case PLUS: case STAR: case SLASH: case REVERSE: case WEDGE: case DOUBLE_BAR: case DOUBLE_AND: case SINGLE_AND: case DOUBLE_EQUALS: case UNEQUAL: case LESS: case GREATER: case LESS_OR_EQUAL: case GREATER_OR_EQUAL: case FUNCTION: case NEGATION: case LOGICAL_NEGATION: case DUAL: case BLADE: { alt2=9; } break; case PRAGMA: { alt2=10; } break; case SET_OUTPUT: { alt2=11; } break; case BLADE_ASSIGN: { alt2=12; } break; case DEFINE_V: { alt2=13; } break; case DEFINE_MV: { alt2=14; } break; case DEFINE_MV_AND_ASSIGN: { alt2=15; } break; case DEFINE_GEALG: { alt2=16; } break; default: if (state.backtracking>0) {state.failed=true; return nodes;} NoViableAltException nvae = new NoViableAltException("", 2, 0, input); throw nvae; } switch (alt2) { case 1 : // GaaletTransformer.g:56:4: ^( PROCEDURE name= IDENTIFIER ) { match(input,PROCEDURE,FOLLOW_PROCEDURE_in_statement117); if (state.failed) return nodes; match(input, Token.DOWN, null); if (state.failed) return nodes; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_statement121); if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; if ( state.backtracking==0 ) { graphBuilder.handleProcedure((name!=null?name.getText():null)); } } break; case 2 : // GaaletTransformer.g:59:4: assignment { pushFollow(FOLLOW_assignment_in_statement134); assignment1=assignment(); state._fsp--; if (state.failed) return nodes; if ( state.backtracking==0 ) { nodes.add(graphBuilder.handleAssignment((assignment1!=null?assignment1.variable:null), (assignment1!=null?assignment1.value:null))); } } break; case 3 : // GaaletTransformer.g:61:4: define_assignment { pushFollow(FOLLOW_define_assignment_in_statement143); define_assignment2=define_assignment(); state._fsp--; if (state.failed) return nodes; if ( state.backtracking==0 ) { graphBuilder.wasDefined((define_assignment2!=null?define_assignment2.variable:null)); nodes.add(graphBuilder.handleAssignment((define_assignment2!=null?define_assignment2.variable:null), (define_assignment2!=null?define_assignment2.value:null))); } } break; case 4 : // GaaletTransformer.g:66:4: block { pushFollow(FOLLOW_block_in_statement151); block3=block(); state._fsp--; if (state.failed) return nodes; if ( state.backtracking==0 ) { nodes = block3; } } break; case 5 : // GaaletTransformer.g:68:4: if_statement { pushFollow(FOLLOW_if_statement_in_statement160); if_statement4=if_statement(); state._fsp--; if (state.failed) return nodes; if ( state.backtracking==0 ) { nodes.add(if_statement4); } } break; case 6 : // GaaletTransformer.g:70:5: loop { pushFollow(FOLLOW_loop_in_statement170); loop5=loop(); state._fsp--; if (state.failed) return nodes; if ( state.backtracking==0 ) { nodes.add(loop5); } } break; case 7 : // GaaletTransformer.g:72:5: BREAK { match(input,BREAK,FOLLOW_BREAK_in_statement181); if (state.failed) return nodes; if ( state.backtracking==0 ) { if (inIfBlock > 0) { nodes.add(graphBuilder.handleBreak()); } else { throw new ParserError("A break command may only occur whithin a conditional statement."); } } } break; case 8 : // GaaletTransformer.g:80:5: macro { pushFollow(FOLLOW_macro_in_statement190); macro(); state._fsp--; if (state.failed) return nodes; } break; case 9 : // GaaletTransformer.g:83:4: expression { pushFollow(FOLLOW_expression_in_statement201); expression6=expression(); state._fsp--; if (state.failed) return nodes; if ( state.backtracking==0 ) { Expression e = expression6; if (e != null) { // null e.g. for procedure calls like DefVarsN3() nodes.add(graphBuilder.processExpressionStatement(e)); } } } break; case 10 : // GaaletTransformer.g:90:5: pragma { pushFollow(FOLLOW_pragma_in_statement210); pragma(); state._fsp--; if (state.failed) return nodes; } break; case 11 : // GaaletTransformer.g:94:5: ^( SET_OUTPUT variable ) { match(input,SET_OUTPUT,FOLLOW_SET_OUTPUT_in_statement226); if (state.failed) return nodes; match(input, Token.DOWN, null); if (state.failed) return nodes; pushFollow(FOLLOW_variable_in_statement228); variable7=variable(); state._fsp--; if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; if ( state.backtracking==0 ) { nodes.add(graphBuilder.handlePrint(variable7.copy())); } } break; case 12 : // GaaletTransformer.g:98:5: ^( BLADE_ASSIGN name= IDENTIFIER blade= DECIMAL_LITERAL expression ) { match(input,BLADE_ASSIGN,FOLLOW_BLADE_ASSIGN_in_statement240); if (state.failed) return nodes; match(input, Token.DOWN, null); if (state.failed) return nodes; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_statement244); if (state.failed) return nodes; blade=(CommonTree)match(input,DECIMAL_LITERAL,FOLLOW_DECIMAL_LITERAL_in_statement248); if (state.failed) return nodes; pushFollow(FOLLOW_expression_in_statement250); expression8=expression(); state._fsp--; if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; if ( state.backtracking==0 ) { nodes.add(graphBuilder.bladeAssignment((name!=null?name.getText():null), (blade!=null?blade.getText():null), expression8)); } } break; case 13 : // GaaletTransformer.g:101:5: ^( DEFINE_V variable ) { match(input,DEFINE_V,FOLLOW_DEFINE_V_in_statement265); if (state.failed) return nodes; match(input, Token.DOWN, null); if (state.failed) return nodes; pushFollow(FOLLOW_variable_in_statement267); variable9=variable(); state._fsp--; if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; if ( state.backtracking==0 ) { graphBuilder.wasDefined(variable9); } } break; case 14 : // GaaletTransformer.g:105:6: ^( DEFINE_MV name= IDENTIFIER gaalet_arguments_list ) { match(input,DEFINE_MV,FOLLOW_DEFINE_MV_in_statement290); if (state.failed) return nodes; match(input, Token.DOWN, null); if (state.failed) return nodes; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_statement294); if (state.failed) return nodes; pushFollow(FOLLOW_gaalet_arguments_list_in_statement297); gaalet_arguments_list10=gaalet_arguments_list(); state._fsp--; if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; if ( state.backtracking==0 ) { System.out.println("DEFINE_MV " + (name!=null?name.getText():null)); graphBuilder.defineMV((name!=null?name.getText():null), gaalet_arguments_list10); } } break; case 15 : // GaaletTransformer.g:109:6: ^( DEFINE_MV_AND_ASSIGN name= IDENTIFIER gaalet_arguments_list value= expression ) { match(input,DEFINE_MV_AND_ASSIGN,FOLLOW_DEFINE_MV_AND_ASSIGN_in_statement309); if (state.failed) return nodes; match(input, Token.DOWN, null); if (state.failed) return nodes; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_statement313); if (state.failed) return nodes; pushFollow(FOLLOW_gaalet_arguments_list_in_statement316); gaalet_arguments_list11=gaalet_arguments_list(); state._fsp--; if (state.failed) return nodes; pushFollow(FOLLOW_expression_in_statement320); value=expression(); state._fsp--; if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; if ( state.backtracking==0 ) { System.out.println("DEFINE_MV_AND_ASSIGN " + (name!=null?name.getText():null)); graphBuilder.defineMV((name!=null?name.getText():null), gaalet_arguments_list11); nodes.add(graphBuilder.handleAssignment((name!=null?name.getText():null), value)); } } break; case 16 : // GaaletTransformer.g:115:5: ^( DEFINE_GEALG name= IDENTIFIER gaalet_arguments_list ARG_LIST_SEP arguments ) { match(input,DEFINE_GEALG,FOLLOW_DEFINE_GEALG_in_statement355); if (state.failed) return nodes; match(input, Token.DOWN, null); if (state.failed) return nodes; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_statement359); if (state.failed) return nodes; pushFollow(FOLLOW_gaalet_arguments_list_in_statement361); gaalet_arguments_list12=gaalet_arguments_list(); state._fsp--; if (state.failed) return nodes; match(input,ARG_LIST_SEP,FOLLOW_ARG_LIST_SEP_in_statement363); if (state.failed) return nodes; pushFollow(FOLLOW_arguments_in_statement365); arguments13=arguments(); state._fsp--; if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; if ( state.backtracking==0 ) { System.out.println("DEFINE_GEALG " + (name!=null?name.getText():null)); nodes.add(graphBuilder.handleDefGaalet((name!=null?name.getText():null), gaalet_arguments_list12, arguments13)); } } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return nodes; } // $ANTLR end "statement" // $ANTLR start "gaalet_arguments_list" // GaaletTransformer.g:121:1: gaalet_arguments_list returns [ArrayList<String> args] : (arg= ( DECIMAL_LITERAL | HEX ) )* ; public final ArrayList<String> gaalet_arguments_list() throws RecognitionException { ArrayList<String> args = null; CommonTree arg=null; args = new ArrayList<String>(); try { // GaaletTransformer.g:123:3: ( (arg= ( DECIMAL_LITERAL | HEX ) )* ) // GaaletTransformer.g:123:5: (arg= ( DECIMAL_LITERAL | HEX ) )* { // GaaletTransformer.g:123:5: (arg= ( DECIMAL_LITERAL | HEX ) )* loop3: do { int alt3=2; int LA3_0 = input.LA(1); if ( (LA3_0==DECIMAL_LITERAL) ) { int LA3_2 = input.LA(2); if ( (LA3_2==UP) ) { int LA3_4 = input.LA(3); if ( (synpred18_GaaletTransformer()) ) { alt3=1; } } else if ( (LA3_2==DECIMAL_LITERAL||LA3_2==HEX||(LA3_2>=INVERSE && LA3_2<=MINUS)||LA3_2==IDENTIFIER||LA3_2==FLOATING_POINT_LITERAL||(LA3_2>=PLUS && LA3_2<=SLASH)||LA3_2==REVERSE||LA3_2==WEDGE||(LA3_2>=DOUBLE_BAR && LA3_2<=DOUBLE_EQUALS)||(LA3_2>=UNEQUAL && LA3_2<=GREATER_OR_EQUAL)||LA3_2==FUNCTION||(LA3_2>=NEGATION && LA3_2<=DUAL)||LA3_2==BLADE||LA3_2==ARG_LIST_SEP) ) { alt3=1; } } else if ( (LA3_0==HEX) ) { alt3=1; } switch (alt3) { case 1 : // GaaletTransformer.g:123:6: arg= ( DECIMAL_LITERAL | HEX ) { arg=(CommonTree)input.LT(1); if ( input.LA(1)==DECIMAL_LITERAL||input.LA(1)==HEX ) { input.consume(); state.errorRecovery=false;state.failed=false; } else { if (state.backtracking>0) {state.failed=true; return args;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } if ( state.backtracking==0 ) { args.add((arg!=null?arg.getText():null)); } } break; default : break loop3; } } while (true); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return args; } // $ANTLR end "gaalet_arguments_list" // $ANTLR start "macro" // GaaletTransformer.g:126:1: macro : ^( MACRO id= IDENTIFIER lst= statement_list (e= return_value )? ) ; public final void macro() throws RecognitionException { CommonTree id=null; ArrayList<SequentialNode> lst = null; Expression e = null; if (inMacro) { throw new ParserError("A macro may only be defined in global scope."); } graphBuilder.beginNewScope(); inMacro = true; try { // GaaletTransformer.g:138:3: ( ^( MACRO id= IDENTIFIER lst= statement_list (e= return_value )? ) ) // GaaletTransformer.g:138:5: ^( MACRO id= IDENTIFIER lst= statement_list (e= return_value )? ) { match(input,MACRO,FOLLOW_MACRO_in_macro441); if (state.failed) return ; match(input, Token.DOWN, null); if (state.failed) return ; id=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_macro445); if (state.failed) return ; if ( state.backtracking==0 ) { graphBuilder.addMacroName((id!=null?id.getText():null)); } pushFollow(FOLLOW_statement_list_in_macro451); lst=statement_list(); state._fsp--; if (state.failed) return ; // GaaletTransformer.g:138:88: (e= return_value )? int alt4=2; int LA4_0 = input.LA(1); if ( (LA4_0==RETURN) ) { alt4=1; } switch (alt4) { case 1 : // GaaletTransformer.g:0:0: e= return_value { pushFollow(FOLLOW_return_value_in_macro455); e=return_value(); state._fsp--; if (state.failed) return ; } break; } match(input, Token.UP, null); if (state.failed) return ; if ( state.backtracking==0 ) { graphBuilder.handleMacroDefinition((id!=null?id.getText():null), lst, e); } } if ( state.backtracking==0 ) { graphBuilder.endNewScope(); inMacro = false; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "macro" // $ANTLR start "return_value" // GaaletTransformer.g:143:1: return_value returns [Expression result] : ^( RETURN exp= expression ) ; public final Expression return_value() throws RecognitionException { Expression result = null; Expression exp = null; try { // GaaletTransformer.g:144:3: ( ^( RETURN exp= expression ) ) // GaaletTransformer.g:144:5: ^( RETURN exp= expression ) { match(input,RETURN,FOLLOW_RETURN_in_return_value479); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_return_value483); exp=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = exp; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return result; } // $ANTLR end "return_value" // $ANTLR start "pragma" // GaaletTransformer.g:147:1: pragma : ( PRAGMA RANGE_LITERAL min= float_literal LESS_OR_EQUAL varname= IDENTIFIER LESS_OR_EQUAL max= float_literal | PRAGMA OUTPUT_LITERAL varname= IDENTIFIER | PRAGMA IGNORE_LITERAL var= variable ); public final void pragma() throws RecognitionException { CommonTree varname=null; String min = null; String max = null; Variable var = null; try { // GaaletTransformer.g:148:3: ( PRAGMA RANGE_LITERAL min= float_literal LESS_OR_EQUAL varname= IDENTIFIER LESS_OR_EQUAL max= float_literal | PRAGMA OUTPUT_LITERAL varname= IDENTIFIER | PRAGMA IGNORE_LITERAL var= variable ) int alt5=3; int LA5_0 = input.LA(1); if ( (LA5_0==PRAGMA) ) { switch ( input.LA(2) ) { case RANGE_LITERAL: { alt5=1; } break; case OUTPUT_LITERAL: { alt5=2; } break; case IGNORE_LITERAL: { alt5=3; } break; default: if (state.backtracking>0) {state.failed=true; return ;} NoViableAltException nvae = new NoViableAltException("", 5, 1, input); throw nvae; } } else { if (state.backtracking>0) {state.failed=true; return ;} NoViableAltException nvae = new NoViableAltException("", 5, 0, input); throw nvae; } switch (alt5) { case 1 : // GaaletTransformer.g:148:6: PRAGMA RANGE_LITERAL min= float_literal LESS_OR_EQUAL varname= IDENTIFIER LESS_OR_EQUAL max= float_literal { match(input,PRAGMA,FOLLOW_PRAGMA_in_pragma500); if (state.failed) return ; match(input,RANGE_LITERAL,FOLLOW_RANGE_LITERAL_in_pragma502); if (state.failed) return ; pushFollow(FOLLOW_float_literal_in_pragma506); min=float_literal(); state._fsp--; if (state.failed) return ; match(input,LESS_OR_EQUAL,FOLLOW_LESS_OR_EQUAL_in_pragma508); if (state.failed) return ; varname=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_pragma512); if (state.failed) return ; match(input,LESS_OR_EQUAL,FOLLOW_LESS_OR_EQUAL_in_pragma514); if (state.failed) return ; pushFollow(FOLLOW_float_literal_in_pragma518); max=float_literal(); state._fsp--; if (state.failed) return ; if ( state.backtracking==0 ) { graphBuilder.addPragmaMinMaxValues((varname!=null?varname.getText():null), min, max); } } break; case 2 : // GaaletTransformer.g:150:6: PRAGMA OUTPUT_LITERAL varname= IDENTIFIER { match(input,PRAGMA,FOLLOW_PRAGMA_in_pragma532); if (state.failed) return ; match(input,OUTPUT_LITERAL,FOLLOW_OUTPUT_LITERAL_in_pragma534); if (state.failed) return ; varname=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_pragma538); if (state.failed) return ; if ( state.backtracking==0 ) { graphBuilder.addPragmaOutputVariable((varname!=null?varname.getText():null)); } } break; case 3 : // GaaletTransformer.g:152:6: PRAGMA IGNORE_LITERAL var= variable { match(input,PRAGMA,FOLLOW_PRAGMA_in_pragma552); if (state.failed) return ; match(input,IGNORE_LITERAL,FOLLOW_IGNORE_LITERAL_in_pragma554); if (state.failed) return ; pushFollow(FOLLOW_variable_in_pragma558); var=variable(); state._fsp--; if (state.failed) return ; if ( state.backtracking==0 ) { graphBuilder.addIgnoreVariable(var); } } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "pragma" public static class assignment_return extends TreeRuleReturnScope { public Variable variable; public Expression value; }; // $ANTLR start "assignment" // GaaletTransformer.g:156:1: assignment returns [Variable variable, Expression value] : ^( EQUALS l= variable r= expression ) ; public final GaaletTransformer.assignment_return assignment() throws RecognitionException { GaaletTransformer.assignment_return retval = new GaaletTransformer.assignment_return(); retval.start = input.LT(1); Variable l = null; Expression r = null; try { // GaaletTransformer.g:157:2: ( ^( EQUALS l= variable r= expression ) ) // GaaletTransformer.g:157:4: ^( EQUALS l= variable r= expression ) { match(input,EQUALS,FOLLOW_EQUALS_in_assignment583); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_variable_in_assignment587); l=variable(); state._fsp--; if (state.failed) return retval; pushFollow(FOLLOW_expression_in_assignment591); r=expression(); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.variable = l; retval.value = r; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "assignment" public static class define_assignment_return extends TreeRuleReturnScope { public Variable variable; public Expression value; }; // $ANTLR start "define_assignment" // GaaletTransformer.g:162:1: define_assignment returns [Variable variable, Expression value] : ^( DEFINE_ASSIGNMENT l= variable r= expression ) ; public final GaaletTransformer.define_assignment_return define_assignment() throws RecognitionException { GaaletTransformer.define_assignment_return retval = new GaaletTransformer.define_assignment_return(); retval.start = input.LT(1); Variable l = null; Expression r = null; try { // GaaletTransformer.g:163:3: ( ^( DEFINE_ASSIGNMENT l= variable r= expression ) ) // GaaletTransformer.g:163:5: ^( DEFINE_ASSIGNMENT l= variable r= expression ) { match(input,DEFINE_ASSIGNMENT,FOLLOW_DEFINE_ASSIGNMENT_in_define_assignment610); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_variable_in_define_assignment614); l=variable(); state._fsp--; if (state.failed) return retval; pushFollow(FOLLOW_expression_in_define_assignment618); r=expression(); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.variable = l; retval.value = r; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "define_assignment" // $ANTLR start "variable" // GaaletTransformer.g:169:1: variable returns [Variable result] : variableOrConstant ; public final Variable variable() throws RecognitionException { Variable result = null; Expression variableOrConstant14 = null; try { // GaaletTransformer.g:170:2: ( variableOrConstant ) // GaaletTransformer.g:170:4: variableOrConstant { pushFollow(FOLLOW_variableOrConstant_in_variable637); variableOrConstant14=variableOrConstant(); state._fsp--; if (state.failed) return result; if ( state.backtracking==0 ) { if ( !(variableOrConstant14 instanceof Variable) ) { throw new RecognitionException(input); } result = (Variable)variableOrConstant14; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return result; } // $ANTLR end "variable" // $ANTLR start "if_statement" // GaaletTransformer.g:179:1: if_statement returns [IfThenElseNode node] : ^( IF condition= expression then_part= statement (else_part= else_statement )? ) ; public final IfThenElseNode if_statement() throws RecognitionException { IfThenElseNode node = null; Expression condition = null; ArrayList<SequentialNode> then_part = null; ArrayList<SequentialNode> else_part = null; inIfBlock++; try { // GaaletTransformer.g:182:3: ( ^( IF condition= expression then_part= statement (else_part= else_statement )? ) ) // GaaletTransformer.g:182:5: ^( IF condition= expression then_part= statement (else_part= else_statement )? ) { match(input,IF,FOLLOW_IF_in_if_statement672); if (state.failed) return node; match(input, Token.DOWN, null); if (state.failed) return node; pushFollow(FOLLOW_expression_in_if_statement676); condition=expression(); state._fsp--; if (state.failed) return node; pushFollow(FOLLOW_statement_in_if_statement680); then_part=statement(); state._fsp--; if (state.failed) return node; // GaaletTransformer.g:182:60: (else_part= else_statement )? int alt6=2; int LA6_0 = input.LA(1); if ( (LA6_0==ELSE||LA6_0==ELSEIF) ) { alt6=1; } switch (alt6) { case 1 : // GaaletTransformer.g:0:0: else_part= else_statement { pushFollow(FOLLOW_else_statement_in_if_statement684); else_part=else_statement(); state._fsp--; if (state.failed) return node; } break; } match(input, Token.UP, null); if (state.failed) return node; if ( state.backtracking==0 ) { node = graphBuilder.handleIfStatement(condition, then_part, else_part); } } if ( state.backtracking==0 ) { inIfBlock--; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return node; } // $ANTLR end "if_statement" // $ANTLR start "else_statement" // GaaletTransformer.g:187:1: else_statement returns [ArrayList<SequentialNode> nodes] : ( ^( ELSE block ) | ^( ELSEIF if_statement ) ); public final ArrayList<SequentialNode> else_statement() throws RecognitionException { ArrayList<SequentialNode> nodes = null; ArrayList<SequentialNode> block15 = null; IfThenElseNode if_statement16 = null; graphBuilder.beginNewScope(); nodes = new ArrayList<SequentialNode>(); try { // GaaletTransformer.g:193:3: ( ^( ELSE block ) | ^( ELSEIF if_statement ) ) int alt7=2; int LA7_0 = input.LA(1); if ( (LA7_0==ELSE) ) { alt7=1; } else if ( (LA7_0==ELSEIF) ) { alt7=2; } else { if (state.backtracking>0) {state.failed=true; return nodes;} NoViableAltException nvae = new NoViableAltException("", 7, 0, input); throw nvae; } switch (alt7) { case 1 : // GaaletTransformer.g:193:5: ^( ELSE block ) { match(input,ELSE,FOLLOW_ELSE_in_else_statement722); if (state.failed) return nodes; match(input, Token.DOWN, null); if (state.failed) return nodes; pushFollow(FOLLOW_block_in_else_statement724); block15=block(); state._fsp--; if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; if ( state.backtracking==0 ) { nodes = block15; } } break; case 2 : // GaaletTransformer.g:194:5: ^( ELSEIF if_statement ) { match(input,ELSEIF,FOLLOW_ELSEIF_in_else_statement734); if (state.failed) return nodes; match(input, Token.DOWN, null); if (state.failed) return nodes; pushFollow(FOLLOW_if_statement_in_else_statement736); if_statement16=if_statement(); state._fsp--; if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; if ( state.backtracking==0 ) { if_statement16.setElseIf(true); nodes.add(if_statement16); } } break; } if ( state.backtracking==0 ) { graphBuilder.endNewScope(); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return nodes; } // $ANTLR end "else_statement" // $ANTLR start "loop" // GaaletTransformer.g:200:1: loop returns [LoopNode node] : ^( LOOP stmt= statement (number= DECIMAL_LITERAL )? (varname= variable )? ) ; public final LoopNode loop() throws RecognitionException { LoopNode node = null; CommonTree number=null; ArrayList<SequentialNode> stmt = null; Variable varname = null; try { // GaaletTransformer.g:201:3: ( ^( LOOP stmt= statement (number= DECIMAL_LITERAL )? (varname= variable )? ) ) // GaaletTransformer.g:201:5: ^( LOOP stmt= statement (number= DECIMAL_LITERAL )? (varname= variable )? ) { match(input,LOOP,FOLLOW_LOOP_in_loop759); if (state.failed) return node; match(input, Token.DOWN, null); if (state.failed) return node; pushFollow(FOLLOW_statement_in_loop763); stmt=statement(); state._fsp--; if (state.failed) return node; // GaaletTransformer.g:201:33: (number= DECIMAL_LITERAL )? int alt8=2; int LA8_0 = input.LA(1); if ( (LA8_0==DECIMAL_LITERAL) ) { alt8=1; } switch (alt8) { case 1 : // GaaletTransformer.g:0:0: number= DECIMAL_LITERAL { number=(CommonTree)match(input,DECIMAL_LITERAL,FOLLOW_DECIMAL_LITERAL_in_loop767); if (state.failed) return node; } break; } // GaaletTransformer.g:201:58: (varname= variable )? int alt9=2; int LA9_0 = input.LA(1); if ( (LA9_0==IDENTIFIER) ) { alt9=1; } switch (alt9) { case 1 : // GaaletTransformer.g:0:0: varname= variable { pushFollow(FOLLOW_variable_in_loop772); varname=variable(); state._fsp--; if (state.failed) return node; } break; } match(input, Token.UP, null); if (state.failed) return node; if ( state.backtracking==0 ) { node = graphBuilder.handleLoop(stmt, (number!=null?number.getText():null), varname); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return node; } // $ANTLR end "loop" // $ANTLR start "block" // GaaletTransformer.g:206:1: block returns [ArrayList<SequentialNode> nodes] : ^( BLOCK stmts= statement_list ) ; public final ArrayList<SequentialNode> block() throws RecognitionException { ArrayList<SequentialNode> nodes = null; ArrayList<SequentialNode> stmts = null; graphBuilder.beginNewScope(); nodes = new ArrayList<SequentialNode>(); try { // GaaletTransformer.g:212:3: ( ^( BLOCK stmts= statement_list ) ) // GaaletTransformer.g:212:5: ^( BLOCK stmts= statement_list ) { match(input,BLOCK,FOLLOW_BLOCK_in_block810); if (state.failed) return nodes; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return nodes; pushFollow(FOLLOW_statement_list_in_block814); stmts=statement_list(); state._fsp--; if (state.failed) return nodes; match(input, Token.UP, null); if (state.failed) return nodes; } if ( state.backtracking==0 ) { nodes.addAll(stmts); } } if ( state.backtracking==0 ) { graphBuilder.endNewScope(); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return nodes; } // $ANTLR end "block" // $ANTLR start "statement_list" // GaaletTransformer.g:217:1: statement_list returns [ArrayList<SequentialNode> args] : (arg= statement )* ; public final ArrayList<SequentialNode> statement_list() throws RecognitionException { ArrayList<SequentialNode> args = null; ArrayList<SequentialNode> arg = null; args = new ArrayList<SequentialNode>(); try { // GaaletTransformer.g:219:3: ( (arg= statement )* ) // GaaletTransformer.g:219:5: (arg= statement )* { // GaaletTransformer.g:219:5: (arg= statement )* loop10: do { int alt10=2; int LA10_0 = input.LA(1); if ( (LA10_0==DECIMAL_LITERAL||(LA10_0>=LOOP && LA10_0<=BREAK)||(LA10_0>=INVERSE && LA10_0<=MINUS)||LA10_0==IF||LA10_0==IDENTIFIER||LA10_0==FLOATING_POINT_LITERAL||(LA10_0>=PLUS && LA10_0<=SLASH)||LA10_0==REVERSE||LA10_0==WEDGE||(LA10_0>=DOUBLE_BAR && LA10_0<=SET_OUTPUT)||LA10_0==PRAGMA||(LA10_0>=FUNCTION && LA10_0<=BLOCK)||(LA10_0>=DEFINE_V && LA10_0<=MACRO)) ) { alt10=1; } switch (alt10) { case 1 : // GaaletTransformer.g:219:6: arg= statement { pushFollow(FOLLOW_statement_in_statement_list847); arg=statement(); state._fsp--; if (state.failed) return args; if ( state.backtracking==0 ) { args.addAll(arg); } } break; default : break loop10; } } while (true); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return args; } // $ANTLR end "statement_list" // $ANTLR start "expression" // GaaletTransformer.g:222:1: expression returns [Expression result] : ( ^( PLUS l= expression r= expression ) | ^( MINUS l= expression r= expression ) | ^( STAR l= expression r= expression ) | ^( SLASH l= expression r= expression ) | ^( DOUBLE_BAR l= expression r= expression ) | ^( DOUBLE_AND l= expression r= expression ) | ^( DOUBLE_EQUALS l= expression r= expression ) | ^( LOGICAL_NEGATION op= expression ) | ^( UNEQUAL l= expression r= expression ) | ^( LESS l= expression r= expression ) | ^( GREATER l= expression r= expression ) | ^( LESS_OR_EQUAL l= expression r= expression ) | ^( GREATER_OR_EQUAL l= expression r= expression ) | ^( WEDGE l= expression r= expression ) | ^( SINGLE_AND l= expression r= expression ) | ^( NEGATION op= expression ) | ^( DUAL op= expression ) | ^( REVERSE op= expression ) | ^( INVERSE op= expression ) | ^( FUNCTION name= IDENTIFIER arguments ) | ^( FUNCTION name= IDENTIFIER ) | ^( BLADE name= IDENTIFIER blade= DECIMAL_LITERAL ) | value= DECIMAL_LITERAL | value= FLOATING_POINT_LITERAL | variableOrConstant ); public final Expression expression() throws RecognitionException { Expression result = null; CommonTree name=null; CommonTree blade=null; CommonTree value=null; Expression l = null; Expression r = null; Expression op = null; ArrayList<Expression> arguments17 = null; Expression variableOrConstant18 = null; try { // GaaletTransformer.g:224:2: ( ^( PLUS l= expression r= expression ) | ^( MINUS l= expression r= expression ) | ^( STAR l= expression r= expression ) | ^( SLASH l= expression r= expression ) | ^( DOUBLE_BAR l= expression r= expression ) | ^( DOUBLE_AND l= expression r= expression ) | ^( DOUBLE_EQUALS l= expression r= expression ) | ^( LOGICAL_NEGATION op= expression ) | ^( UNEQUAL l= expression r= expression ) | ^( LESS l= expression r= expression ) | ^( GREATER l= expression r= expression ) | ^( LESS_OR_EQUAL l= expression r= expression ) | ^( GREATER_OR_EQUAL l= expression r= expression ) | ^( WEDGE l= expression r= expression ) | ^( SINGLE_AND l= expression r= expression ) | ^( NEGATION op= expression ) | ^( DUAL op= expression ) | ^( REVERSE op= expression ) | ^( INVERSE op= expression ) | ^( FUNCTION name= IDENTIFIER arguments ) | ^( FUNCTION name= IDENTIFIER ) | ^( BLADE name= IDENTIFIER blade= DECIMAL_LITERAL ) | value= DECIMAL_LITERAL | value= FLOATING_POINT_LITERAL | variableOrConstant ) int alt11=25; alt11 = dfa11.predict(input); switch (alt11) { case 1 : // GaaletTransformer.g:224:4: ^( PLUS l= expression r= expression ) { match(input,PLUS,FOLLOW_PLUS_in_expression872); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression876); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression880); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Addition(l, r); } } break; case 2 : // GaaletTransformer.g:226:4: ^( MINUS l= expression r= expression ) { match(input,MINUS,FOLLOW_MINUS_in_expression891); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression895); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression899); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Subtraction(l, r); } } break; case 3 : // GaaletTransformer.g:228:4: ^( STAR l= expression r= expression ) { match(input,STAR,FOLLOW_STAR_in_expression910); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression914); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression918); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Multiplication(l, r); } } break; case 4 : // GaaletTransformer.g:230:4: ^( SLASH l= expression r= expression ) { match(input,SLASH,FOLLOW_SLASH_in_expression929); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression933); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression937); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Division(l, r); } } break; case 5 : // GaaletTransformer.g:232:5: ^( DOUBLE_BAR l= expression r= expression ) { match(input,DOUBLE_BAR,FOLLOW_DOUBLE_BAR_in_expression949); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression953); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression957); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new LogicalOr(l, r); } } break; case 6 : // GaaletTransformer.g:234:5: ^( DOUBLE_AND l= expression r= expression ) { match(input,DOUBLE_AND,FOLLOW_DOUBLE_AND_in_expression970); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression974); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression978); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new LogicalAnd(l, r); } } break; case 7 : // GaaletTransformer.g:236:5: ^( DOUBLE_EQUALS l= expression r= expression ) { match(input,DOUBLE_EQUALS,FOLLOW_DOUBLE_EQUALS_in_expression990); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression994); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression998); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Equality(l, r); } } break; case 8 : // GaaletTransformer.g:238:5: ^( LOGICAL_NEGATION op= expression ) { match(input,LOGICAL_NEGATION,FOLLOW_LOGICAL_NEGATION_in_expression1011); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1015); op=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new LogicalNegation(op); } } break; case 9 : // GaaletTransformer.g:240:5: ^( UNEQUAL l= expression r= expression ) { match(input,UNEQUAL,FOLLOW_UNEQUAL_in_expression1029); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1033); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1037); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Inequality(l, r); } } break; case 10 : // GaaletTransformer.g:242:5: ^( LESS l= expression r= expression ) { match(input,LESS,FOLLOW_LESS_in_expression1049); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1053); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1057); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Relation(l, r, Relation.Type.LESS); } } break; case 11 : // GaaletTransformer.g:244:5: ^( GREATER l= expression r= expression ) { match(input,GREATER,FOLLOW_GREATER_in_expression1069); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1073); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1077); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Relation(l, r, Relation.Type.GREATER); } } break; case 12 : // GaaletTransformer.g:246:5: ^( LESS_OR_EQUAL l= expression r= expression ) { match(input,LESS_OR_EQUAL,FOLLOW_LESS_OR_EQUAL_in_expression1090); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1094); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1098); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Relation(l, r, Relation.Type.LESS_OR_EQUAL); } } break; case 13 : // GaaletTransformer.g:248:5: ^( GREATER_OR_EQUAL l= expression r= expression ) { match(input,GREATER_OR_EQUAL,FOLLOW_GREATER_OR_EQUAL_in_expression1110); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1114); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1118); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Relation(l, r, Relation.Type.GREATER_OR_EQUAL); } } break; case 14 : // GaaletTransformer.g:250:4: ^( WEDGE l= expression r= expression ) { match(input,WEDGE,FOLLOW_WEDGE_in_expression1129); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1133); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1137); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new OuterProduct(l, r); } } break; case 15 : // GaaletTransformer.g:252:4: ^( SINGLE_AND l= expression r= expression ) { match(input,SINGLE_AND,FOLLOW_SINGLE_AND_in_expression1148); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1152); l=expression(); state._fsp--; if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1156); r=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new InnerProduct(l, r); } } break; case 16 : // GaaletTransformer.g:254:4: ^( NEGATION op= expression ) { match(input,NEGATION,FOLLOW_NEGATION_in_expression1168); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1172); op=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Negation(op); } } break; case 17 : // GaaletTransformer.g:256:4: ^( DUAL op= expression ) { match(input,DUAL,FOLLOW_DUAL_in_expression1183); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1187); op=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = graphBuilder.processFunction("*", Collections.singletonList(op)); } } break; case 18 : // GaaletTransformer.g:258:4: ^( REVERSE op= expression ) { match(input,REVERSE,FOLLOW_REVERSE_in_expression1199); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1203); op=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Reverse(op); } } break; case 19 : // GaaletTransformer.g:261:5: ^( INVERSE op= expression ) { match(input,INVERSE,FOLLOW_INVERSE_in_expression1217); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; pushFollow(FOLLOW_expression_in_expression1221); op=expression(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = new Division(new Reverse(op), new InnerProduct(op, new Reverse(op))); } } break; case 20 : // GaaletTransformer.g:265:4: ^( FUNCTION name= IDENTIFIER arguments ) { match(input,FUNCTION,FOLLOW_FUNCTION_in_expression1234); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_expression1238); if (state.failed) return result; pushFollow(FOLLOW_arguments_in_expression1240); arguments17=arguments(); state._fsp--; if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = graphBuilder.processFunction((name!=null?name.getText():null), arguments17); } } break; case 21 : // GaaletTransformer.g:266:4: ^( FUNCTION name= IDENTIFIER ) { match(input,FUNCTION,FOLLOW_FUNCTION_in_expression1249); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_expression1253); if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = graphBuilder.processFunction((name!=null?name.getText():null), null); } } break; case 22 : // GaaletTransformer.g:269:5: ^( BLADE name= IDENTIFIER blade= DECIMAL_LITERAL ) { match(input,BLADE,FOLLOW_BLADE_in_expression1269); if (state.failed) return result; match(input, Token.DOWN, null); if (state.failed) return result; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_expression1273); if (state.failed) return result; blade=(CommonTree)match(input,DECIMAL_LITERAL,FOLLOW_DECIMAL_LITERAL_in_expression1277); if (state.failed) return result; match(input, Token.UP, null); if (state.failed) return result; if ( state.backtracking==0 ) { result = graphBuilder.blade((name!=null?name.getText():null), (blade!=null?blade.getText():null)); } } break; case 23 : // GaaletTransformer.g:272:4: value= DECIMAL_LITERAL { value=(CommonTree)match(input,DECIMAL_LITERAL,FOLLOW_DECIMAL_LITERAL_in_expression1290); if (state.failed) return result; if ( state.backtracking==0 ) { result = new FloatConstant((value!=null?value.getText():null)); } } break; case 24 : // GaaletTransformer.g:274:4: value= FLOATING_POINT_LITERAL { value=(CommonTree)match(input,FLOATING_POINT_LITERAL,FOLLOW_FLOATING_POINT_LITERAL_in_expression1301); if (state.failed) return result; if ( state.backtracking==0 ) { result = new FloatConstant((value!=null?value.getText():null)); } } break; case 25 : // GaaletTransformer.g:276:4: variableOrConstant { pushFollow(FOLLOW_variableOrConstant_in_expression1310); variableOrConstant18=variableOrConstant(); state._fsp--; if (state.failed) return result; if ( state.backtracking==0 ) { result = variableOrConstant18; } } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return result; } // $ANTLR end "expression" // $ANTLR start "variableOrConstant" // GaaletTransformer.g:280:1: variableOrConstant returns [Expression result] : name= IDENTIFIER ; public final Expression variableOrConstant() throws RecognitionException { Expression result = null; CommonTree name=null; try { // GaaletTransformer.g:281:2: (name= IDENTIFIER ) // GaaletTransformer.g:281:4: name= IDENTIFIER { name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_variableOrConstant1329); if (state.failed) return result; if ( state.backtracking==0 ) { result = graphBuilder.processIdentifier((name!=null?name.getText():null)); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return result; } // $ANTLR end "variableOrConstant" // $ANTLR start "arguments" // GaaletTransformer.g:284:1: arguments returns [ArrayList<Expression> args] : (arg= expression )* ; public final ArrayList<Expression> arguments() throws RecognitionException { ArrayList<Expression> args = null; Expression arg = null; args = new ArrayList<Expression>(); try { // GaaletTransformer.g:286:2: ( (arg= expression )* ) // GaaletTransformer.g:286:4: (arg= expression )* { // GaaletTransformer.g:286:4: (arg= expression )* loop12: do { int alt12=2; int LA12_0 = input.LA(1); if ( (LA12_0==DECIMAL_LITERAL||(LA12_0>=INVERSE && LA12_0<=MINUS)||LA12_0==IDENTIFIER||LA12_0==FLOATING_POINT_LITERAL||(LA12_0>=PLUS && LA12_0<=SLASH)||LA12_0==REVERSE||LA12_0==WEDGE||(LA12_0>=DOUBLE_BAR && LA12_0<=DOUBLE_EQUALS)||(LA12_0>=UNEQUAL && LA12_0<=GREATER_OR_EQUAL)||LA12_0==FUNCTION||(LA12_0>=NEGATION && LA12_0<=DUAL)||LA12_0==BLADE) ) { alt12=1; } switch (alt12) { case 1 : // GaaletTransformer.g:286:5: arg= expression { pushFollow(FOLLOW_expression_in_arguments1356); arg=expression(); state._fsp--; if (state.failed) return args; if ( state.backtracking==0 ) { args.add(arg); } } break; default : break loop12; } } while (true); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return args; } // $ANTLR end "arguments" // $ANTLR start "float_literal" // GaaletTransformer.g:289:1: float_literal returns [String result] : (sign= MINUS )? val= FLOATING_POINT_LITERAL ; public final String float_literal() throws RecognitionException { String result = null; CommonTree sign=null; CommonTree val=null; try { // GaaletTransformer.g:290:3: ( (sign= MINUS )? val= FLOATING_POINT_LITERAL ) // GaaletTransformer.g:290:5: (sign= MINUS )? val= FLOATING_POINT_LITERAL { // GaaletTransformer.g:290:9: (sign= MINUS )? int alt13=2; int LA13_0 = input.LA(1); if ( (LA13_0==MINUS) ) { alt13=1; } switch (alt13) { case 1 : // GaaletTransformer.g:0:0: sign= MINUS { sign=(CommonTree)match(input,MINUS,FOLLOW_MINUS_in_float_literal1378); if (state.failed) return result; } break; } val=(CommonTree)match(input,FLOATING_POINT_LITERAL,FOLLOW_FLOATING_POINT_LITERAL_in_float_literal1383); if (state.failed) return result; if ( state.backtracking==0 ) { result = new String((sign!=null?(sign!=null?sign.getText():null):"") + (val!=null?val.getText():null)); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return result; } // $ANTLR end "float_literal" // $ANTLR start "decimal_literal" // GaaletTransformer.g:293:1: decimal_literal returns [String result] : (sign= MINUS )? val= DECIMAL_LITERAL ; public final String decimal_literal() throws RecognitionException { String result = null; CommonTree sign=null; CommonTree val=null; try { // GaaletTransformer.g:294:3: ( (sign= MINUS )? val= DECIMAL_LITERAL ) // GaaletTransformer.g:294:5: (sign= MINUS )? val= DECIMAL_LITERAL { // GaaletTransformer.g:294:9: (sign= MINUS )? int alt14=2; int LA14_0 = input.LA(1); if ( (LA14_0==MINUS) ) { alt14=1; } switch (alt14) { case 1 : // GaaletTransformer.g:0:0: sign= MINUS { sign=(CommonTree)match(input,MINUS,FOLLOW_MINUS_in_decimal_literal1403); if (state.failed) return result; } break; } val=(CommonTree)match(input,DECIMAL_LITERAL,FOLLOW_DECIMAL_LITERAL_in_decimal_literal1408); if (state.failed) return result; if ( state.backtracking==0 ) { result = new String((sign!=null?(sign!=null?sign.getText():null):"") + (val!=null?val.getText():null)); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return result; } // $ANTLR end "decimal_literal" // $ANTLR start synpred18_GaaletTransformer public final void synpred18_GaaletTransformer_fragment() throws RecognitionException { CommonTree arg=null; // GaaletTransformer.g:123:6: (arg= ( DECIMAL_LITERAL | HEX ) ) // GaaletTransformer.g:123:6: arg= ( DECIMAL_LITERAL | HEX ) { arg=(CommonTree)input.LT(1); if ( input.LA(1)==DECIMAL_LITERAL||input.LA(1)==HEX ) { input.consume(); state.errorRecovery=false;state.failed=false; } else { if (state.backtracking>0) {state.failed=true; return ;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } } // $ANTLR end synpred18_GaaletTransformer // $ANTLR start synpred46_GaaletTransformer public final void synpred46_GaaletTransformer_fragment() throws RecognitionException { CommonTree name=null; // GaaletTransformer.g:265:4: ( ^( FUNCTION name= IDENTIFIER arguments ) ) // GaaletTransformer.g:265:4: ^( FUNCTION name= IDENTIFIER arguments ) { match(input,FUNCTION,FOLLOW_FUNCTION_in_synpred46_GaaletTransformer1234); if (state.failed) return ; match(input, Token.DOWN, null); if (state.failed) return ; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred46_GaaletTransformer1238); if (state.failed) return ; pushFollow(FOLLOW_arguments_in_synpred46_GaaletTransformer1240); arguments(); state._fsp--; if (state.failed) return ; match(input, Token.UP, null); if (state.failed) return ; } } // $ANTLR end synpred46_GaaletTransformer // $ANTLR start synpred47_GaaletTransformer public final void synpred47_GaaletTransformer_fragment() throws RecognitionException { CommonTree name=null; // GaaletTransformer.g:266:4: ( ^( FUNCTION name= IDENTIFIER ) ) // GaaletTransformer.g:266:4: ^( FUNCTION name= IDENTIFIER ) { match(input,FUNCTION,FOLLOW_FUNCTION_in_synpred47_GaaletTransformer1249); if (state.failed) return ; match(input, Token.DOWN, null); if (state.failed) return ; name=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred47_GaaletTransformer1253); if (state.failed) return ; match(input, Token.UP, null); if (state.failed) return ; } } // $ANTLR end synpred47_GaaletTransformer // Delegated rules public final boolean synpred47_GaaletTransformer() { state.backtracking++; int start = input.mark(); try { synpred47_GaaletTransformer_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 synpred18_GaaletTransformer() { state.backtracking++; int start = input.mark(); try { synpred18_GaaletTransformer_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 synpred46_GaaletTransformer() { state.backtracking++; int start = input.mark(); try { synpred46_GaaletTransformer_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 DFA11 dfa11 = new DFA11(this); static final String DFA11_eotS = "\36\uffff"; static final String DFA11_eofS = "\36\uffff"; static final String DFA11_minS = "\1\4\23\uffff\1\2\4\uffff\1\41\1\3\1\0\2\uffff"; static final String DFA11_maxS = "\1\126\23\uffff\1\2\4\uffff\1\41\1\126\1\0\2\uffff"; static final String DFA11_acceptS = "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1"+ "\15\1\16\1\17\1\20\1\21\1\22\1\23\1\uffff\1\26\1\27\1\30\1\31\3"+ "\uffff\1\24\1\25"; static final String DFA11_specialS = "\33\uffff\1\0\2\uffff}>"; static final String[] DFA11_transitionS = { "\1\26\23\uffff\1\23\1\2\7\uffff\1\30\11\uffff\1\27\3\uffff\1"+ "\1\1\3\1\4\3\uffff\1\22\3\uffff\1\16\2\uffff\1\5\1\6\1\17\1"+ "\7\1\uffff\1\11\1\12\1\13\1\14\1\15\4\uffff\1\24\1\uffff\1\20"+ "\1\10\1\21\7\uffff\1\25", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "\1\31", "", "", "", "", "\1\32", "\1\33\1\34\23\uffff\2\34\7\uffff\1\34\11\uffff\1\34\3\uffff"+ "\3\34\3\uffff\1\34\3\uffff\1\34\2\uffff\4\34\1\uffff\5\34\4"+ "\uffff\1\34\1\uffff\3\34\7\uffff\1\34", "\1\uffff", "", "" }; static final short[] DFA11_eot = DFA.unpackEncodedString(DFA11_eotS); static final short[] DFA11_eof = DFA.unpackEncodedString(DFA11_eofS); static final char[] DFA11_min = DFA.unpackEncodedStringToUnsignedChars(DFA11_minS); static final char[] DFA11_max = DFA.unpackEncodedStringToUnsignedChars(DFA11_maxS); static final short[] DFA11_accept = DFA.unpackEncodedString(DFA11_acceptS); static final short[] DFA11_special = DFA.unpackEncodedString(DFA11_specialS); static final short[][] DFA11_transition; static { int numStates = DFA11_transitionS.length; DFA11_transition = new short[numStates][]; for (int i=0; i<numStates; i++) { DFA11_transition[i] = DFA.unpackEncodedString(DFA11_transitionS[i]); } } class DFA11 extends DFA { public DFA11(BaseRecognizer recognizer) { this.recognizer = recognizer; this.decisionNumber = 11; this.eot = DFA11_eot; this.eof = DFA11_eof; this.min = DFA11_min; this.max = DFA11_max; this.accept = DFA11_accept; this.special = DFA11_special; this.transition = DFA11_transition; } public String getDescription() { return "222:1: expression returns [Expression result] : ( ^( PLUS l= expression r= expression ) | ^( MINUS l= expression r= expression ) | ^( STAR l= expression r= expression ) | ^( SLASH l= expression r= expression ) | ^( DOUBLE_BAR l= expression r= expression ) | ^( DOUBLE_AND l= expression r= expression ) | ^( DOUBLE_EQUALS l= expression r= expression ) | ^( LOGICAL_NEGATION op= expression ) | ^( UNEQUAL l= expression r= expression ) | ^( LESS l= expression r= expression ) | ^( GREATER l= expression r= expression ) | ^( LESS_OR_EQUAL l= expression r= expression ) | ^( GREATER_OR_EQUAL l= expression r= expression ) | ^( WEDGE l= expression r= expression ) | ^( SINGLE_AND l= expression r= expression ) | ^( NEGATION op= expression ) | ^( DUAL op= expression ) | ^( REVERSE op= expression ) | ^( INVERSE op= expression ) | ^( FUNCTION name= IDENTIFIER arguments ) | ^( FUNCTION name= IDENTIFIER ) | ^( BLADE name= IDENTIFIER blade= DECIMAL_LITERAL ) | value= DECIMAL_LITERAL | value= FLOATING_POINT_LITERAL | variableOrConstant );"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TreeNodeStream input = (TreeNodeStream)_input; int _s = s; switch ( s ) { case 0 : int LA11_27 = input.LA(1); int index11_27 = input.index(); input.rewind(); s = -1; if ( (synpred46_GaaletTransformer()) ) {s = 28;} else if ( (synpred47_GaaletTransformer()) ) {s = 29;} input.seek(index11_27); if ( s>=0 ) return s; break; } if (state.backtracking>0) {state.failed=true; return -1;} NoViableAltException nvae = new NoViableAltException(getDescription(), 11, _s, input); error(nvae); throw nvae; } } public static final BitSet FOLLOW_statement_in_script93 = new BitSet(new long[]{0xF223880243006012L,0x0000000001FEFD7FL}); public static final BitSet FOLLOW_PROCEDURE_in_statement117 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_statement121 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_assignment_in_statement134 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_define_assignment_in_statement143 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_block_in_statement151 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_if_statement_in_statement160 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_loop_in_statement170 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_BREAK_in_statement181 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_macro_in_statement190 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_expression_in_statement201 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_pragma_in_statement210 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_SET_OUTPUT_in_statement226 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_variable_in_statement228 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_BLADE_ASSIGN_in_statement240 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_statement244 = new BitSet(new long[]{0x0000000000000010L}); public static final BitSet FOLLOW_DECIMAL_LITERAL_in_statement248 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_statement250 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DEFINE_V_in_statement265 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_variable_in_statement267 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DEFINE_MV_in_statement290 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_statement294 = new BitSet(new long[]{0x0000000000000098L}); public static final BitSet FOLLOW_gaalet_arguments_list_in_statement297 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DEFINE_MV_AND_ASSIGN_in_statement309 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_statement313 = new BitSet(new long[]{0xF223880203000090L,0x000000000040743EL}); public static final BitSet FOLLOW_gaalet_arguments_list_in_statement316 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_statement320 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DEFINE_GEALG_in_statement355 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_statement359 = new BitSet(new long[]{0x0000000000000090L,0x0000000008000000L}); public static final BitSet FOLLOW_gaalet_arguments_list_in_statement361 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L}); public static final BitSet FOLLOW_ARG_LIST_SEP_in_statement363 = new BitSet(new long[]{0xF223880203000018L,0x000000000040743EL}); public static final BitSet FOLLOW_arguments_in_statement365 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_set_in_gaalet_arguments_list403 = new BitSet(new long[]{0x0000000000000092L}); public static final BitSet FOLLOW_MACRO_in_macro441 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_macro445 = new BitSet(new long[]{0xF223880243006010L,0x0000000001FEFD7FL}); public static final BitSet FOLLOW_statement_list_in_macro451 = new BitSet(new long[]{0x0000000000000008L,0x0000000004000000L}); public static final BitSet FOLLOW_return_value_in_macro455 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_RETURN_in_return_value479 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_return_value483 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_PRAGMA_in_pragma500 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_RANGE_LITERAL_in_pragma502 = new BitSet(new long[]{0x0000080002000000L}); public static final BitSet FOLLOW_float_literal_in_pragma506 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L}); public static final BitSet FOLLOW_LESS_OR_EQUAL_in_pragma508 = new BitSet(new long[]{0x0000000200000000L}); public static final BitSet FOLLOW_IDENTIFIER_in_pragma512 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L}); public static final BitSet FOLLOW_LESS_OR_EQUAL_in_pragma514 = new BitSet(new long[]{0x0000080002000000L}); public static final BitSet FOLLOW_float_literal_in_pragma518 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_PRAGMA_in_pragma532 = new BitSet(new long[]{0x0000000000000200L}); public static final BitSet FOLLOW_OUTPUT_LITERAL_in_pragma534 = new BitSet(new long[]{0x0000000200000000L}); public static final BitSet FOLLOW_IDENTIFIER_in_pragma538 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_PRAGMA_in_pragma552 = new BitSet(new long[]{0x0000000000001000L}); public static final BitSet FOLLOW_IGNORE_LITERAL_in_pragma554 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_variable_in_pragma558 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_EQUALS_in_assignment583 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_variable_in_assignment587 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_assignment591 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DEFINE_ASSIGNMENT_in_define_assignment610 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_variable_in_define_assignment614 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_define_assignment618 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_variableOrConstant_in_variable637 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_IF_in_if_statement672 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_if_statement676 = new BitSet(new long[]{0xF2238802C3006018L,0x0000000001FFFD7FL}); public static final BitSet FOLLOW_statement_in_if_statement680 = new BitSet(new long[]{0x0000000080000008L,0x0000000000010000L}); public static final BitSet FOLLOW_else_statement_in_if_statement684 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ELSE_in_else_statement722 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_block_in_else_statement724 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ELSEIF_in_else_statement734 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_if_statement_in_else_statement736 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_LOOP_in_loop759 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_statement_in_loop763 = new BitSet(new long[]{0xF223880203000018L,0x000000000040743EL}); public static final BitSet FOLLOW_DECIMAL_LITERAL_in_loop767 = new BitSet(new long[]{0xF223880203000018L,0x000000000040743EL}); public static final BitSet FOLLOW_variable_in_loop772 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_BLOCK_in_block810 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_statement_list_in_block814 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_statement_in_statement_list847 = new BitSet(new long[]{0xF223880243006012L,0x0000000001FEFD7FL}); public static final BitSet FOLLOW_PLUS_in_expression872 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression876 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression880 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_MINUS_in_expression891 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression895 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression899 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_STAR_in_expression910 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression914 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression918 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_SLASH_in_expression929 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression933 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression937 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DOUBLE_BAR_in_expression949 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression953 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression957 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DOUBLE_AND_in_expression970 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression974 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression978 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DOUBLE_EQUALS_in_expression990 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression994 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression998 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_LOGICAL_NEGATION_in_expression1011 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1015 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_UNEQUAL_in_expression1029 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1033 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression1037 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_LESS_in_expression1049 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1053 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression1057 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_GREATER_in_expression1069 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1073 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression1077 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_LESS_OR_EQUAL_in_expression1090 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1094 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression1098 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_GREATER_OR_EQUAL_in_expression1110 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1114 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression1118 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_WEDGE_in_expression1129 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1133 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression1137 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_SINGLE_AND_in_expression1148 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1152 = new BitSet(new long[]{0xF223880203000010L,0x000000000040743EL}); public static final BitSet FOLLOW_expression_in_expression1156 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_NEGATION_in_expression1168 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1172 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DUAL_in_expression1183 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1187 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_REVERSE_in_expression1199 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1203 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_INVERSE_in_expression1217 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_expression_in_expression1221 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_FUNCTION_in_expression1234 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_expression1238 = new BitSet(new long[]{0xF223880203000018L,0x000000000040743EL}); public static final BitSet FOLLOW_arguments_in_expression1240 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_FUNCTION_in_expression1249 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_expression1253 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_BLADE_in_expression1269 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_expression1273 = new BitSet(new long[]{0x0000000000000010L}); public static final BitSet FOLLOW_DECIMAL_LITERAL_in_expression1277 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DECIMAL_LITERAL_in_expression1290 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_FLOATING_POINT_LITERAL_in_expression1301 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_variableOrConstant_in_expression1310 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_IDENTIFIER_in_variableOrConstant1329 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_expression_in_arguments1356 = new BitSet(new long[]{0xF223880203000012L,0x000000000040743EL}); public static final BitSet FOLLOW_MINUS_in_float_literal1378 = new BitSet(new long[]{0x0000080000000000L}); public static final BitSet FOLLOW_FLOATING_POINT_LITERAL_in_float_literal1383 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_MINUS_in_decimal_literal1403 = new BitSet(new long[]{0x0000000000000010L}); public static final BitSet FOLLOW_DECIMAL_LITERAL_in_decimal_literal1408 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_set_in_synpred18_GaaletTransformer403 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_FUNCTION_in_synpred46_GaaletTransformer1234 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_synpred46_GaaletTransformer1238 = new BitSet(new long[]{0xF223880203000018L,0x000000000040743EL}); public static final BitSet FOLLOW_arguments_in_synpred46_GaaletTransformer1240 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_FUNCTION_in_synpred47_GaaletTransformer1249 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IDENTIFIER_in_synpred47_GaaletTransformer1253 = new BitSet(new long[]{0x0000000000000008L}); }