From 8a640d51746c0d3fd7aebc7824491de704e11d77 Mon Sep 17 00:00:00 2001 From: Humenius Date: Wed, 3 Jun 2020 14:39:54 +0200 Subject: [PATCH] [11 - Antlr Parser] Fix TestAntlrXParser1 halfway --- .idea/workspace.xml | 52 +- .../src/de/dhbw/compiler/antlrxparser/X.g | 34 +- .../de/dhbw/compiler/antlrxparser/X.tokens | 59 +- .../de/dhbw/compiler/antlrxparser/XLexer.java | 643 ++--- .../dhbw/compiler/antlrxparser/XParser.java | 2191 +++++++---------- .../de/dhbw/compiler/antlrxparser/X.g | 34 +- .../de/dhbw/compiler/antlrxparser/X.tokens | 59 +- .../compiler/antlrxparser/XLexer$DFA12.class | Bin 3008 -> 1459 bytes .../compiler/antlrxparser/XLexer$DFA9.class | Bin 1289 -> 1289 bytes .../dhbw/compiler/antlrxparser/XLexer.class | Bin 16774 -> 16409 bytes .../XParser$assignstat_return.class | Bin 727 -> 727 bytes .../antlrxparser/XParser$compOp_return.class | Bin 715 -> 715 bytes .../antlrxparser/XParser$cond2_return.class | Bin 712 -> 712 bytes .../XParser$condElseStat_return.class | Bin 733 -> 733 bytes .../antlrxparser/XParser$cond_return.class | Bin 709 -> 709 bytes .../XParser$condstat_return.class | Bin 721 -> 721 bytes .../antlrxparser/XParser$decl_return.class | Bin 709 -> 709 bytes .../XParser$decllist_return.class | Bin 721 -> 721 bytes .../antlrxparser/XParser$div_return.class | Bin 706 -> 0 bytes .../antlrxparser/XParser$expr2_return.class | Bin 712 -> 712 bytes .../antlrxparser/XParser$expr3_return.class | Bin 712 -> 712 bytes .../antlrxparser/XParser$expr_return.class | Bin 709 -> 709 bytes .../antlrxparser/XParser$forstat_return.class | Bin 718 -> 718 bytes .../antlrxparser/XParser$minus_return.class | Bin 712 -> 0 bytes .../XParser$modifier_return.class | Bin 721 -> 721 bytes .../XParser$multiply_return.class | Bin 721 -> 0 bytes .../antlrxparser/XParser$number_return.class | Bin 715 -> 715 bytes .../antlrxparser/XParser$plus_return.class | Bin 709 -> 0 bytes .../antlrxparser/XParser$program_return.class | Bin 718 -> 718 bytes .../antlrxparser/XParser$stat_return.class | Bin 709 -> 709 bytes .../XParser$statlist_return.class | Bin 721 -> 721 bytes .../antlrxparser/XParser$type_return.class | Bin 709 -> 709 bytes .../XParser$whilestat_return.class | Bin 724 -> 724 bytes .../dhbw/compiler/antlrxparser/XParser.class | Bin 54573 -> 48317 bytes 34 files changed, 1337 insertions(+), 1735 deletions(-) delete mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$div_return.class delete mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$minus_return.class delete mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$multiply_return.class delete mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$plus_return.class diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 514751e..94d4319 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,21 +2,39 @@ - - - - - + - + + + - + + + + + + + + + + + + + + + + + + + + + + - @@ -212,26 +230,26 @@ - + - - + + - - + + - - + + - + diff --git a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g index d6cb0b7..d892806 100644 --- a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g +++ b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g @@ -25,7 +25,8 @@ tokens { FLOATCONST; WS; MODIFIER; - DECLIST; + DECLLIST; + UMINUS; PROGRAM; DECL; TYPE; @@ -54,17 +55,15 @@ ESCAPE: '\\' ('\"' |'\'' | '\\'); WS: ('\t' | ' ' | '\r' | '\n' | '\f')+ { skip(); }; -INVALID: .; - fragment DIGIT: ('0'..'9'); // -- Parser stuff -program: 'program' ID ';' decllist statlist '.' EOF -> ^(PROGRAM ID decllist statlist); +program: 'program'^ ID ';'! decllist statlist '.'! EOF!; // Declaration -decllist: decl decllist -> ^(DECLIST decl decllist); -decl: modifier ID ':' type ';' -> ^(DECL modifier ID type); +decllist: decl* -> ^(DECLLIST decl*); +decl: modifier? ID ':' type ';' -> ^(DECL modifier? ID type); modifier: 'read' 'print'? | 'read' | 'print'; type: 'int' | 'float' | 'string'; @@ -78,23 +77,16 @@ whilestat: 'while' '(' cond ')' stat -> ^('while' cond stat); forstat: 'for' '(' assignstat ';' cond ';' assignstat ')' stat -> ^('for' assignstat cond assignstat stat); -expr: expr2 '+' expr -> ^('+' expr2 expr) - | expr2 '-' expr -> ^('-' expr2 expr) - | expr2 -> ^(expr2); -expr2: expr3 '*' expr2 -> ^('*' expr3 expr2) - | expr3 '/' expr2 -> ^('/' expr3 expr2) - | expr3 -> ^(expr3); -expr3: number | '-' number | STRINGCONST | '('! expr^ ')'; +// Expressions number: INTCONST | FLOATCONST; +expr: expr2 (op='+' | op='-') expr -> ^($op expr2 expr) + | expr2; +expr2: expr3 (op='*' | op='/') expr -> ^($op expr3 expr) + | expr3; +expr3: op='-' num=number -> ^(UMINUS[op,"UMINUS"] $num) + | number | STRINGCONST | '('! expr^ ')'!; +// Conditions and comparison compOp: '<' | '>' | '='; cond: expr cond2; cond2: compOp expr; - -// -- Dummy rules -// Das sollte dafür sorgen, dass implizite Tokens auch ihre Tokens bekommen -// TODO: Remove this -minus: '-'; -div: '/'; -multiply: '*'; -plus: '+'; diff --git a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.tokens b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.tokens index f7075a8..e3113d8 100644 --- a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.tokens +++ b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.tokens @@ -1,4 +1,3 @@ -T__20=20 T__21=21 T__22=22 T__23=23 @@ -24,8 +23,9 @@ T__42=42 T__43=43 T__44=44 T__45=45 +T__46=46 DECL=4 -DECLIST=5 +DECLLIST=5 DIGIT=6 ESCAPE=7 EXPR=8 @@ -39,30 +39,31 @@ STAT=15 STATLIST=16 STRINGCONST=17 TYPE=18 -WS=19 -'('=20 -')'=21 -'*'=22 -'+'=23 -'-'=24 -'.'=25 -'/'=26 -':'=27 -':='=28 -';'=29 -'<'=30 -'='=31 -'>'=32 -'begin'=33 -'else'=34 -'end'=35 -'float'=36 -'for'=37 -'if'=38 -'int'=39 -'print'=40 -'program'=41 -'read'=42 -'string'=43 -'then'=44 -'while'=45 +UMINUS=19 +WS=20 +'('=21 +')'=22 +'*'=23 +'+'=24 +'-'=25 +'.'=26 +'/'=27 +':'=28 +':='=29 +';'=30 +'<'=31 +'='=32 +'>'=33 +'begin'=34 +'else'=35 +'end'=36 +'float'=37 +'for'=38 +'if'=39 +'int'=40 +'print'=41 +'program'=42 +'read'=43 +'string'=44 +'then'=45 +'while'=46 diff --git a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/XLexer.java b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/XLexer.java index b3cf828..cdace7e 100644 --- a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/XLexer.java +++ b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/XLexer.java @@ -1,4 +1,4 @@ -// $ANTLR 3.5.2 C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g 2020-06-03 14:02:36 +// $ANTLR 3.5.2 C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g 2020-06-03 14:37:29 package de.dhbw.compiler.antlrxparser; import org.antlr.runtime.*; @@ -9,7 +9,6 @@ import java.util.ArrayList; @SuppressWarnings("all") public class XLexer extends Lexer { public static final int EOF=-1; - public static final int T__20=20; public static final int T__21=21; public static final int T__22=22; public static final int T__23=23; @@ -35,8 +34,9 @@ public class XLexer extends Lexer { public static final int T__43=43; public static final int T__44=44; public static final int T__45=45; + public static final int T__46=46; public static final int DECL=4; - public static final int DECLIST=5; + public static final int DECLLIST=5; public static final int DIGIT=6; public static final int ESCAPE=7; public static final int EXPR=8; @@ -50,7 +50,8 @@ public class XLexer extends Lexer { public static final int STATLIST=16; public static final int STRINGCONST=17; public static final int TYPE=18; - public static final int WS=19; + public static final int UMINUS=19; + public static final int WS=20; // delegates // delegators @@ -67,35 +68,15 @@ public class XLexer extends Lexer { } @Override public String getGrammarFileName() { return "C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g"; } - // $ANTLR start "T__20" - public final void mT__20() throws RecognitionException { - try { - int _type = T__20; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:9:7: ( '(' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:9:9: '(' - { - match('('); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__20" - // $ANTLR start "T__21" public final void mT__21() throws RecognitionException { try { int _type = T__21; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:10:7: ( ')' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:10:9: ')' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:9:7: ( '(' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:9:9: '(' { - match(')'); + match('('); } state.type = _type; @@ -112,10 +93,10 @@ public class XLexer extends Lexer { try { int _type = T__22; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:11:7: ( '*' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:11:9: '*' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:10:7: ( ')' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:10:9: ')' { - match('*'); + match(')'); } state.type = _type; @@ -132,10 +113,10 @@ public class XLexer extends Lexer { try { int _type = T__23; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:12:7: ( '+' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:12:9: '+' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:11:7: ( '*' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:11:9: '*' { - match('+'); + match('*'); } state.type = _type; @@ -152,10 +133,10 @@ public class XLexer extends Lexer { try { int _type = T__24; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:13:7: ( '-' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:13:9: '-' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:12:7: ( '+' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:12:9: '+' { - match('-'); + match('+'); } state.type = _type; @@ -172,10 +153,10 @@ public class XLexer extends Lexer { try { int _type = T__25; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:14:7: ( '.' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:14:9: '.' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:13:7: ( '-' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:13:9: '-' { - match('.'); + match('-'); } state.type = _type; @@ -192,10 +173,10 @@ public class XLexer extends Lexer { try { int _type = T__26; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:15:7: ( '/' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:15:9: '/' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:14:7: ( '.' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:14:9: '.' { - match('/'); + match('.'); } state.type = _type; @@ -212,10 +193,10 @@ public class XLexer extends Lexer { try { int _type = T__27; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:16:7: ( ':' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:16:9: ':' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:15:7: ( '/' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:15:9: '/' { - match(':'); + match('/'); } state.type = _type; @@ -232,11 +213,10 @@ public class XLexer extends Lexer { try { int _type = T__28; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:17:7: ( ':=' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:17:9: ':=' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:16:7: ( ':' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:16:9: ':' { - match(":="); - + match(':'); } state.type = _type; @@ -253,10 +233,11 @@ public class XLexer extends Lexer { try { int _type = T__29; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:18:7: ( ';' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:18:9: ';' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:17:7: ( ':=' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:17:9: ':=' { - match(';'); + match(":="); + } state.type = _type; @@ -273,10 +254,10 @@ public class XLexer extends Lexer { try { int _type = T__30; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:19:7: ( '<' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:19:9: '<' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:18:7: ( ';' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:18:9: ';' { - match('<'); + match(';'); } state.type = _type; @@ -293,10 +274,10 @@ public class XLexer extends Lexer { try { int _type = T__31; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:20:7: ( '=' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:20:9: '=' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:19:7: ( '<' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:19:9: '<' { - match('='); + match('<'); } state.type = _type; @@ -313,10 +294,10 @@ public class XLexer extends Lexer { try { int _type = T__32; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:21:7: ( '>' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:21:9: '>' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:20:7: ( '=' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:20:9: '=' { - match('>'); + match('='); } state.type = _type; @@ -333,11 +314,10 @@ public class XLexer extends Lexer { try { int _type = T__33; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:22:7: ( 'begin' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:22:9: 'begin' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:21:7: ( '>' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:21:9: '>' { - match("begin"); - + match('>'); } state.type = _type; @@ -354,10 +334,10 @@ public class XLexer extends Lexer { try { int _type = T__34; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:23:7: ( 'else' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:23:9: 'else' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:22:7: ( 'begin' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:22:9: 'begin' { - match("else"); + match("begin"); } @@ -375,10 +355,10 @@ public class XLexer extends Lexer { try { int _type = T__35; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:24:7: ( 'end' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:24:9: 'end' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:23:7: ( 'else' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:23:9: 'else' { - match("end"); + match("else"); } @@ -396,10 +376,10 @@ public class XLexer extends Lexer { try { int _type = T__36; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:25:7: ( 'float' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:25:9: 'float' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:24:7: ( 'end' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:24:9: 'end' { - match("float"); + match("end"); } @@ -417,10 +397,10 @@ public class XLexer extends Lexer { try { int _type = T__37; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:26:7: ( 'for' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:26:9: 'for' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:25:7: ( 'float' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:25:9: 'float' { - match("for"); + match("float"); } @@ -438,10 +418,10 @@ public class XLexer extends Lexer { try { int _type = T__38; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:27:7: ( 'if' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:27:9: 'if' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:26:7: ( 'for' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:26:9: 'for' { - match("if"); + match("for"); } @@ -459,10 +439,10 @@ public class XLexer extends Lexer { try { int _type = T__39; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:28:7: ( 'int' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:28:9: 'int' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:27:7: ( 'if' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:27:9: 'if' { - match("int"); + match("if"); } @@ -480,10 +460,10 @@ public class XLexer extends Lexer { try { int _type = T__40; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:29:7: ( 'print' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:29:9: 'print' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:28:7: ( 'int' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:28:9: 'int' { - match("print"); + match("int"); } @@ -501,10 +481,10 @@ public class XLexer extends Lexer { try { int _type = T__41; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:30:7: ( 'program' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:30:9: 'program' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:29:7: ( 'print' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:29:9: 'print' { - match("program"); + match("print"); } @@ -522,10 +502,10 @@ public class XLexer extends Lexer { try { int _type = T__42; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:31:7: ( 'read' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:31:9: 'read' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:30:7: ( 'program' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:30:9: 'program' { - match("read"); + match("program"); } @@ -543,10 +523,10 @@ public class XLexer extends Lexer { try { int _type = T__43; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:32:7: ( 'string' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:32:9: 'string' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:31:7: ( 'read' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:31:9: 'read' { - match("string"); + match("read"); } @@ -564,10 +544,10 @@ public class XLexer extends Lexer { try { int _type = T__44; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:33:7: ( 'then' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:33:9: 'then' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:32:7: ( 'string' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:32:9: 'string' { - match("then"); + match("string"); } @@ -585,6 +565,27 @@ public class XLexer extends Lexer { try { int _type = T__45; int _channel = DEFAULT_TOKEN_CHANNEL; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:33:7: ( 'then' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:33:9: 'then' + { + match("then"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__45" + + // $ANTLR start "T__46" + public final void mT__46() throws RecognitionException { + try { + int _type = T__46; + int _channel = DEFAULT_TOKEN_CHANNEL; // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:34:7: ( 'while' ) // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:34:9: 'while' { @@ -599,15 +600,15 @@ public class XLexer extends Lexer { // do for sure before leaving } } - // $ANTLR end "T__45" + // $ANTLR end "T__46" // $ANTLR start "ID" public final void mID() throws RecognitionException { try { int _type = ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:43:3: ( ( 'a' .. 'z' | 'A' .. 'Z' ) ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:43:13: ( 'a' .. 'z' | 'A' .. 'Z' ) ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:44:3: ( ( 'a' .. 'z' | 'A' .. 'Z' ) ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:44:13: ( 'a' .. 'z' | 'A' .. 'Z' ) ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* { if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) { input.consume(); @@ -617,7 +618,7 @@ public class XLexer extends Lexer { recover(mse); throw mse; } - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:44:13: ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:45:13: ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* loop1: while (true) { int alt1=4; @@ -699,19 +700,19 @@ public class XLexer extends Lexer { } switch (alt1) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:46:16: 'a' .. 'z' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:47:16: 'a' .. 'z' { matchRange('a','z'); } break; case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:46:27: 'A' .. 'Z' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:47:27: 'A' .. 'Z' { matchRange('A','Z'); } break; case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:46:38: '0' .. '9' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:47:38: '0' .. '9' { matchRange('0','9'); } @@ -738,7 +739,7 @@ public class XLexer extends Lexer { try { int _type = INTCONST; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:48:9: ( '0' | ( '1' .. '9' ) ( '0' .. '9' )* ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:9: ( '0' | ( '1' .. '9' ) ( '0' .. '9' )* ) int alt3=2; int LA3_0 = input.LA(1); if ( (LA3_0=='0') ) { @@ -756,13 +757,13 @@ public class XLexer extends Lexer { switch (alt3) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:48:17: '0' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:17: '0' { match('0'); } break; case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:48:23: ( '1' .. '9' ) ( '0' .. '9' )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:23: ( '1' .. '9' ) ( '0' .. '9' )* { if ( (input.LA(1) >= '1' && input.LA(1) <= '9') ) { input.consume(); @@ -772,7 +773,7 @@ public class XLexer extends Lexer { recover(mse); throw mse; } - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:48:34: ( '0' .. '9' )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:34: ( '0' .. '9' )* loop2: while (true) { int alt2=2; @@ -819,16 +820,16 @@ public class XLexer extends Lexer { try { int _type = FLOATCONST; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:11: ( INTCONST ( '.' ( DIGIT )* )? ( 'e' | 'E' ) ( '+' | '-' )? INTCONST | INTCONST ( '.' ( DIGIT )* )? ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:11: ( INTCONST ( '.' ( DIGIT )* )? ( 'e' | 'E' ) ( '+' | '-' )? INTCONST | INTCONST ( '.' ( DIGIT )* )? ) int alt9=2; alt9 = dfa9.predict(input); switch (alt9) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:17: INTCONST ( '.' ( DIGIT )* )? ( 'e' | 'E' ) ( '+' | '-' )? INTCONST + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:17: INTCONST ( '.' ( DIGIT )* )? ( 'e' | 'E' ) ( '+' | '-' )? INTCONST { mINTCONST(); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:26: ( '.' ( DIGIT )* )? + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:26: ( '.' ( DIGIT )* )? int alt5=2; int LA5_0 = input.LA(1); if ( (LA5_0=='.') ) { @@ -836,10 +837,10 @@ public class XLexer extends Lexer { } switch (alt5) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:27: '.' ( DIGIT )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:27: '.' ( DIGIT )* { match('.'); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:31: ( DIGIT )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:31: ( DIGIT )* loop4: while (true) { int alt4=2; @@ -881,7 +882,7 @@ public class XLexer extends Lexer { recover(mse); throw mse; } - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:49: ( '+' | '-' )? + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:49: ( '+' | '-' )? int alt6=2; int LA6_0 = input.LA(1); if ( (LA6_0=='+'||LA6_0=='-') ) { @@ -909,11 +910,11 @@ public class XLexer extends Lexer { } break; case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:19: INTCONST ( '.' ( DIGIT )* )? + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:51:19: INTCONST ( '.' ( DIGIT )* )? { mINTCONST(); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:28: ( '.' ( DIGIT )* )? + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:51:28: ( '.' ( DIGIT )* )? int alt8=2; int LA8_0 = input.LA(1); if ( (LA8_0=='.') ) { @@ -921,10 +922,10 @@ public class XLexer extends Lexer { } switch (alt8) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:29: '.' ( DIGIT )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:51:29: '.' ( DIGIT )* { match('.'); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:33: ( DIGIT )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:51:33: ( DIGIT )* loop7: while (true) { int alt7=2; @@ -976,11 +977,11 @@ public class XLexer extends Lexer { try { int _type = STRINGCONST; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:52:12: ( '\"' ( ESCAPE |~ ( '\\\\' | '\"' ) )* '\"' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:52:17: '\"' ( ESCAPE |~ ( '\\\\' | '\"' ) )* '\"' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:53:12: ( '\"' ( ESCAPE |~ ( '\\\\' | '\"' ) )* '\"' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:53:17: '\"' ( ESCAPE |~ ( '\\\\' | '\"' ) )* '\"' { match('\"'); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:52:21: ( ESCAPE |~ ( '\\\\' | '\"' ) )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:53:21: ( ESCAPE |~ ( '\\\\' | '\"' ) )* loop10: while (true) { int alt10=3; @@ -994,14 +995,14 @@ public class XLexer extends Lexer { switch (alt10) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:52:22: ESCAPE + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:53:22: ESCAPE { mESCAPE(); } break; case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:52:31: ~ ( '\\\\' | '\"' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:53:31: ~ ( '\\\\' | '\"' ) { if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '!')||(input.LA(1) >= '#' && input.LA(1) <= '[')||(input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) { input.consume(); @@ -1036,8 +1037,8 @@ public class XLexer extends Lexer { try { int _type = ESCAPE; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:53:7: ( '\\\\' ( '\\\"' | '\\'' | '\\\\' ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:53:17: '\\\\' ( '\\\"' | '\\'' | '\\\\' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:54:7: ( '\\\\' ( '\\\"' | '\\'' | '\\\\' ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:54:17: '\\\\' ( '\\\"' | '\\'' | '\\\\' ) { match('\\'); if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\' ) { @@ -1064,10 +1065,10 @@ public class XLexer extends Lexer { try { int _type = WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:55:3: ( ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:55:17: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:56:3: ( ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:56:17: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:55:17: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:56:17: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ int cnt11=0; loop11: while (true) { @@ -1112,30 +1113,10 @@ public class XLexer extends Lexer { } // $ANTLR end "WS" - // $ANTLR start "INVALID" - public final void mINVALID() throws RecognitionException { - try { - int _type = INVALID; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:57:8: ( . ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:57:17: . - { - matchAny(); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "INVALID" - // $ANTLR start "DIGIT" public final void mDIGIT() throws RecognitionException { try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:59:15: ( ( '0' .. '9' ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:58:15: ( ( '0' .. '9' ) ) // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g: { if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) { @@ -1157,190 +1138,190 @@ public class XLexer extends Lexer { @Override public void mTokens() throws RecognitionException { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:8: ( T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | ID | INTCONST | FLOATCONST | STRINGCONST | ESCAPE | WS | INVALID ) - int alt12=33; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:8: ( T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | ID | INTCONST | FLOATCONST | STRINGCONST | ESCAPE | WS ) + int alt12=32; alt12 = dfa12.predict(input); switch (alt12) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:10: T__20 - { - mT__20(); - - } - break; - case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:16: T__21 + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:10: T__21 { mT__21(); } break; - case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:22: T__22 + case 2 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:16: T__22 { mT__22(); } break; - case 4 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:28: T__23 + case 3 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:22: T__23 { mT__23(); } break; - case 5 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:34: T__24 + case 4 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:28: T__24 { mT__24(); } break; - case 6 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:40: T__25 + case 5 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:34: T__25 { mT__25(); } break; - case 7 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:46: T__26 + case 6 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:40: T__26 { mT__26(); } break; - case 8 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:52: T__27 + case 7 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:46: T__27 { mT__27(); } break; - case 9 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:58: T__28 + case 8 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:52: T__28 { mT__28(); } break; - case 10 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:64: T__29 + case 9 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:58: T__29 { mT__29(); } break; - case 11 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:70: T__30 + case 10 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:64: T__30 { mT__30(); } break; - case 12 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:76: T__31 + case 11 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:70: T__31 { mT__31(); } break; - case 13 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:82: T__32 + case 12 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:76: T__32 { mT__32(); } break; - case 14 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:88: T__33 + case 13 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:82: T__33 { mT__33(); } break; - case 15 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:94: T__34 + case 14 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:88: T__34 { mT__34(); } break; - case 16 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:100: T__35 + case 15 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:94: T__35 { mT__35(); } break; - case 17 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:106: T__36 + case 16 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:100: T__36 { mT__36(); } break; - case 18 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:112: T__37 + case 17 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:106: T__37 { mT__37(); } break; - case 19 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:118: T__38 + case 18 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:112: T__38 { mT__38(); } break; - case 20 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:124: T__39 + case 19 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:118: T__39 { mT__39(); } break; - case 21 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:130: T__40 + case 20 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:124: T__40 { mT__40(); } break; - case 22 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:136: T__41 + case 21 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:130: T__41 { mT__41(); } break; - case 23 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:142: T__42 + case 22 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:136: T__42 { mT__42(); } break; - case 24 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:148: T__43 + case 23 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:142: T__43 { mT__43(); } break; - case 25 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:154: T__44 + case 24 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:148: T__44 { mT__44(); } break; - case 26 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:160: T__45 + case 25 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:154: T__45 { mT__45(); + } + break; + case 26 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:160: T__46 + { + mT__46(); + } break; case 27 : @@ -1383,13 +1364,6 @@ public class XLexer extends Lexer { { mWS(); - } - break; - case 33 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:211: INVALID - { - mINVALID(); - } break; @@ -1453,47 +1427,44 @@ public class XLexer extends Lexer { } @Override public String getDescription() { - return "49:1: FLOATCONST : ( INTCONST ( '.' ( DIGIT )* )? ( 'e' | 'E' ) ( '+' | '-' )? INTCONST | INTCONST ( '.' ( DIGIT )* )? );"; + return "50:1: FLOATCONST : ( INTCONST ( '.' ( DIGIT )* )? ( 'e' | 'E' ) ( '+' | '-' )? INTCONST | INTCONST ( '.' ( DIGIT )* )? );"; } } static final String DFA12_eotS = - "\10\uffff\1\45\4\uffff\11\53\1\uffff\2\67\2\34\17\uffff\1\53\1\uffff\4"+ - "\53\1\102\6\53\2\uffff\1\67\3\uffff\2\53\1\114\1\53\1\116\1\uffff\1\117"+ - "\7\53\1\127\1\uffff\1\53\2\uffff\2\53\1\133\1\53\1\135\1\53\1\137\1\uffff"+ - "\1\140\1\141\1\53\1\uffff\1\53\1\uffff\1\144\3\uffff\1\53\1\146\1\uffff"+ - "\1\147\2\uffff"; + "\10\uffff\1\35\4\uffff\11\26\1\uffff\2\52\5\uffff\5\26\1\62\6\26\2\uffff"+ + "\1\52\2\26\1\74\1\26\1\76\1\uffff\1\77\7\26\1\107\1\uffff\1\26\2\uffff"+ + "\2\26\1\113\1\26\1\115\1\26\1\117\1\uffff\1\120\1\121\1\26\1\uffff\1\26"+ + "\1\uffff\1\124\3\uffff\1\26\1\126\1\uffff\1\127\2\uffff"; static final String DFA12_eofS = - "\150\uffff"; + "\130\uffff"; static final String DFA12_minS = - "\1\0\7\uffff\1\75\4\uffff\1\145\2\154\1\146\1\162\1\145\1\164\2\150\1"+ - "\uffff\2\56\1\0\1\42\17\uffff\1\147\1\uffff\1\163\1\144\1\157\1\162\1"+ - "\60\1\164\1\151\1\141\1\162\1\145\1\151\2\uffff\1\56\3\uffff\1\151\1\145"+ - "\1\60\1\141\1\60\1\uffff\1\60\1\156\1\147\1\144\1\151\1\156\1\154\1\156"+ - "\1\60\1\uffff\1\164\2\uffff\1\164\1\162\1\60\1\156\1\60\1\145\1\60\1\uffff"+ - "\2\60\1\141\1\uffff\1\147\1\uffff\1\60\3\uffff\1\155\1\60\1\uffff\1\60"+ - "\2\uffff"; + "\1\11\7\uffff\1\75\4\uffff\1\145\2\154\1\146\1\162\1\145\1\164\2\150\1"+ + "\uffff\2\56\5\uffff\1\147\1\163\1\144\1\157\1\162\1\60\1\164\1\151\1\141"+ + "\1\162\1\145\1\151\2\uffff\1\56\1\151\1\145\1\60\1\141\1\60\1\uffff\1"+ + "\60\1\156\1\147\1\144\1\151\1\156\1\154\1\156\1\60\1\uffff\1\164\2\uffff"+ + "\1\164\1\162\1\60\1\156\1\60\1\145\1\60\1\uffff\2\60\1\141\1\uffff\1\147"+ + "\1\uffff\1\60\3\uffff\1\155\1\60\1\uffff\1\60\2\uffff"; static final String DFA12_maxS = - "\1\uffff\7\uffff\1\75\4\uffff\1\145\1\156\1\157\1\156\1\162\1\145\1\164"+ - "\2\150\1\uffff\2\145\1\uffff\1\134\17\uffff\1\147\1\uffff\1\163\1\144"+ - "\1\157\1\162\1\172\1\164\1\157\1\141\1\162\1\145\1\151\2\uffff\1\145\3"+ - "\uffff\1\151\1\145\1\172\1\141\1\172\1\uffff\1\172\1\156\1\147\1\144\1"+ - "\151\1\156\1\154\1\156\1\172\1\uffff\1\164\2\uffff\1\164\1\162\1\172\1"+ - "\156\1\172\1\145\1\172\1\uffff\2\172\1\141\1\uffff\1\147\1\uffff\1\172"+ - "\3\uffff\1\155\1\172\1\uffff\1\172\2\uffff"; + "\1\172\7\uffff\1\75\4\uffff\1\145\1\156\1\157\1\156\1\162\1\145\1\164"+ + "\2\150\1\uffff\2\145\5\uffff\1\147\1\163\1\144\1\157\1\162\1\172\1\164"+ + "\1\157\1\141\1\162\1\145\1\151\2\uffff\1\145\1\151\1\145\1\172\1\141\1"+ + "\172\1\uffff\1\172\1\156\1\147\1\144\1\151\1\156\1\154\1\156\1\172\1\uffff"+ + "\1\164\2\uffff\1\164\1\162\1\172\1\156\1\172\1\145\1\172\1\uffff\2\172"+ + "\1\141\1\uffff\1\147\1\uffff\1\172\3\uffff\1\155\1\172\1\uffff\1\172\2"+ + "\uffff"; static final String DFA12_acceptS = "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\uffff\1\12\1\13\1\14\1\15\11\uffff"+ - "\1\33\4\uffff\1\40\1\41\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\11\1\10\1\12\1\13"+ - "\1\14\1\15\1\uffff\1\33\13\uffff\1\34\1\35\1\uffff\1\36\1\37\1\40\5\uffff"+ - "\1\23\11\uffff\1\20\1\uffff\1\22\1\24\7\uffff\1\17\3\uffff\1\27\1\uffff"+ - "\1\31\1\uffff\1\16\1\21\1\25\2\uffff\1\32\1\uffff\1\30\1\26"; + "\1\33\2\uffff\1\36\1\37\1\40\1\11\1\10\14\uffff\1\34\1\35\6\uffff\1\23"+ + "\11\uffff\1\20\1\uffff\1\22\1\24\7\uffff\1\17\3\uffff\1\27\1\uffff\1\31"+ + "\1\uffff\1\16\1\21\1\25\2\uffff\1\32\1\uffff\1\30\1\26"; static final String DFA12_specialS = - "\1\1\30\uffff\1\0\116\uffff}>"; + "\130\uffff}>"; static final String[] DFA12_transitionS = { - "\11\34\2\33\1\34\2\33\22\34\1\33\1\34\1\31\5\34\1\1\1\2\1\3\1\4\1\34"+ - "\1\5\1\6\1\7\1\27\11\30\1\10\1\11\1\12\1\13\1\14\2\34\32\26\1\34\1\32"+ - "\4\34\1\26\1\15\2\26\1\16\1\17\2\26\1\20\6\26\1\21\1\26\1\22\1\23\1\24"+ - "\2\26\1\25\3\26\uff85\34", + "\2\33\1\uffff\2\33\22\uffff\1\33\1\uffff\1\31\5\uffff\1\1\1\2\1\3\1\4"+ + "\1\uffff\1\5\1\6\1\7\1\27\11\30\1\10\1\11\1\12\1\13\1\14\2\uffff\32\26"+ + "\1\uffff\1\32\4\uffff\1\26\1\15\2\26\1\16\1\17\2\26\1\20\6\26\1\21\1"+ + "\26\1\22\1\23\1\24\2\26\1\25\3\26", "", "", "", @@ -1501,100 +1472,84 @@ public class XLexer extends Lexer { "", "", "", - "\1\44", + "\1\34", "", "", "", "", - "\1\52", - "\1\54\1\uffff\1\55", - "\1\56\2\uffff\1\57", - "\1\60\7\uffff\1\61", - "\1\62", + "\1\36", + "\1\37\1\uffff\1\40", + "\1\41\2\uffff\1\42", + "\1\43\7\uffff\1\44", + "\1\45", + "\1\46", + "\1\47", + "\1\50", + "\1\51", + "", + "\1\53\26\uffff\1\53\37\uffff\1\53", + "\1\53\1\uffff\12\54\13\uffff\1\53\37\uffff\1\53", + "", + "", + "", + "", + "", + "\1\55", + "\1\56", + "\1\57", + "\1\60", + "\1\61", + "\12\26\7\uffff\32\26\6\uffff\32\26", "\1\63", - "\1\64", - "\1\65", + "\1\64\5\uffff\1\65", "\1\66", - "", - "\1\70\26\uffff\1\70\37\uffff\1\70", - "\1\70\1\uffff\12\71\13\uffff\1\70\37\uffff\1\70", - "\0\72", - "\1\73\4\uffff\1\73\64\uffff\1\73", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "\1\67", + "\1\70", + "\1\71", "", "", + "\1\53\1\uffff\12\54\13\uffff\1\53\37\uffff\1\53", + "\1\72", + "\1\73", + "\12\26\7\uffff\32\26\6\uffff\32\26", "\1\75", + "\12\26\7\uffff\32\26\6\uffff\32\26", "", - "\1\76", - "\1\77", + "\12\26\7\uffff\32\26\6\uffff\32\26", "\1\100", "\1\101", - "\12\53\7\uffff\32\53\6\uffff\32\53", + "\1\102", "\1\103", - "\1\104\5\uffff\1\105", + "\1\104", + "\1\105", "\1\106", - "\1\107", + "\12\26\7\uffff\32\26\6\uffff\32\26", + "", "\1\110", + "", + "", "\1\111", - "", - "", - "\1\70\1\uffff\12\71\13\uffff\1\70\37\uffff\1\70", - "", - "", - "", "\1\112", - "\1\113", - "\12\53\7\uffff\32\53\6\uffff\32\53", - "\1\115", - "\12\53\7\uffff\32\53\6\uffff\32\53", + "\12\26\7\uffff\32\26\6\uffff\32\26", + "\1\114", + "\12\26\7\uffff\32\26\6\uffff\32\26", + "\1\116", + "\12\26\7\uffff\32\26\6\uffff\32\26", "", - "\12\53\7\uffff\32\53\6\uffff\32\53", - "\1\120", - "\1\121", + "\12\26\7\uffff\32\26\6\uffff\32\26", + "\12\26\7\uffff\32\26\6\uffff\32\26", "\1\122", + "", "\1\123", - "\1\124", + "", + "\12\26\7\uffff\32\26\6\uffff\32\26", + "", + "", + "", "\1\125", - "\1\126", - "\12\53\7\uffff\32\53\6\uffff\32\53", + "\12\26\7\uffff\32\26\6\uffff\32\26", "", - "\1\130", - "", - "", - "\1\131", - "\1\132", - "\12\53\7\uffff\32\53\6\uffff\32\53", - "\1\134", - "\12\53\7\uffff\32\53\6\uffff\32\53", - "\1\136", - "\12\53\7\uffff\32\53\6\uffff\32\53", - "", - "\12\53\7\uffff\32\53\6\uffff\32\53", - "\12\53\7\uffff\32\53\6\uffff\32\53", - "\1\142", - "", - "\1\143", - "", - "\12\53\7\uffff\32\53\6\uffff\32\53", - "", - "", - "", - "\1\145", - "\12\53\7\uffff\32\53\6\uffff\32\53", - "", - "\12\53\7\uffff\32\53\6\uffff\32\53", + "\12\26\7\uffff\32\26\6\uffff\32\26", "", "" }; @@ -1630,59 +1585,7 @@ public class XLexer extends Lexer { } @Override public String getDescription() { - return "1:1: Tokens : ( T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | ID | INTCONST | FLOATCONST | STRINGCONST | ESCAPE | WS | INVALID );"; - } - @Override - public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { - IntStream input = _input; - int _s = s; - switch ( s ) { - case 0 : - int LA12_25 = input.LA(1); - s = -1; - if ( ((LA12_25 >= '\u0000' && LA12_25 <= '\uFFFF')) ) {s = 58;} - else s = 28; - if ( s>=0 ) return s; - break; - - case 1 : - int LA12_0 = input.LA(1); - s = -1; - if ( (LA12_0=='(') ) {s = 1;} - else if ( (LA12_0==')') ) {s = 2;} - else if ( (LA12_0=='*') ) {s = 3;} - else if ( (LA12_0=='+') ) {s = 4;} - else if ( (LA12_0=='-') ) {s = 5;} - else if ( (LA12_0=='.') ) {s = 6;} - else if ( (LA12_0=='/') ) {s = 7;} - else if ( (LA12_0==':') ) {s = 8;} - else if ( (LA12_0==';') ) {s = 9;} - else if ( (LA12_0=='<') ) {s = 10;} - else if ( (LA12_0=='=') ) {s = 11;} - else if ( (LA12_0=='>') ) {s = 12;} - else if ( (LA12_0=='b') ) {s = 13;} - else if ( (LA12_0=='e') ) {s = 14;} - else if ( (LA12_0=='f') ) {s = 15;} - else if ( (LA12_0=='i') ) {s = 16;} - else if ( (LA12_0=='p') ) {s = 17;} - else if ( (LA12_0=='r') ) {s = 18;} - else if ( (LA12_0=='s') ) {s = 19;} - else if ( (LA12_0=='t') ) {s = 20;} - else if ( (LA12_0=='w') ) {s = 21;} - else if ( ((LA12_0 >= 'A' && LA12_0 <= 'Z')||LA12_0=='a'||(LA12_0 >= 'c' && LA12_0 <= 'd')||(LA12_0 >= 'g' && LA12_0 <= 'h')||(LA12_0 >= 'j' && LA12_0 <= 'o')||LA12_0=='q'||(LA12_0 >= 'u' && LA12_0 <= 'v')||(LA12_0 >= 'x' && LA12_0 <= 'z')) ) {s = 22;} - else if ( (LA12_0=='0') ) {s = 23;} - else if ( ((LA12_0 >= '1' && LA12_0 <= '9')) ) {s = 24;} - else if ( (LA12_0=='\"') ) {s = 25;} - else if ( (LA12_0=='\\') ) {s = 26;} - else if ( ((LA12_0 >= '\t' && LA12_0 <= '\n')||(LA12_0 >= '\f' && LA12_0 <= '\r')||LA12_0==' ') ) {s = 27;} - else if ( ((LA12_0 >= '\u0000' && LA12_0 <= '\b')||LA12_0=='\u000B'||(LA12_0 >= '\u000E' && LA12_0 <= '\u001F')||LA12_0=='!'||(LA12_0 >= '#' && LA12_0 <= '\'')||LA12_0==','||(LA12_0 >= '?' && LA12_0 <= '@')||LA12_0=='['||(LA12_0 >= ']' && LA12_0 <= '`')||(LA12_0 >= '{' && LA12_0 <= '\uFFFF')) ) {s = 28;} - if ( s>=0 ) return s; - break; - } - NoViableAltException nvae = - new NoViableAltException(getDescription(), 12, _s, input); - error(nvae); - throw nvae; + return "1:1: Tokens : ( T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | ID | INTCONST | FLOATCONST | STRINGCONST | ESCAPE | WS );"; } } diff --git a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/XParser.java b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/XParser.java index adbdfb2..f141665 100644 --- a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/XParser.java +++ b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/XParser.java @@ -1,4 +1,4 @@ -// $ANTLR 3.5.2 C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g 2020-06-03 14:02:36 +// $ANTLR 3.5.2 C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g 2020-06-03 14:37:29 package de.dhbw.compiler.antlrxparser; import org.antlr.runtime.*; @@ -14,15 +14,14 @@ import org.antlr.runtime.tree.*; @SuppressWarnings("all") public class XParser extends Parser { public static final String[] tokenNames = new String[] { - "", "", "", "", "DECL", "DECLIST", "DIGIT", "ESCAPE", + "", "", "", "", "DECL", "DECLLIST", "DIGIT", "ESCAPE", "EXPR", "FLOATCONST", "ID", "INTCONST", "INVALID", "MODIFIER", "PROGRAM", - "STAT", "STATLIST", "STRINGCONST", "TYPE", "WS", "'('", "')'", "'*'", - "'+'", "'-'", "'.'", "'/'", "':'", "':='", "';'", "'<'", "'='", "'>'", - "'begin'", "'else'", "'end'", "'float'", "'for'", "'if'", "'int'", "'print'", - "'program'", "'read'", "'string'", "'then'", "'while'" + "STAT", "STATLIST", "STRINGCONST", "TYPE", "UMINUS", "WS", "'('", "')'", + "'*'", "'+'", "'-'", "'.'", "'/'", "':'", "':='", "';'", "'<'", "'='", + "'>'", "'begin'", "'else'", "'end'", "'float'", "'for'", "'if'", "'int'", + "'print'", "'program'", "'read'", "'string'", "'then'", "'while'" }; public static final int EOF=-1; - public static final int T__20=20; public static final int T__21=21; public static final int T__22=22; public static final int T__23=23; @@ -48,8 +47,9 @@ public class XParser extends Parser { public static final int T__43=43; public static final int T__44=44; public static final int T__45=45; + public static final int T__46=46; public static final int DECL=4; - public static final int DECLIST=5; + public static final int DECLLIST=5; public static final int DIGIT=6; public static final int ESCAPE=7; public static final int EXPR=8; @@ -63,7 +63,8 @@ public class XParser extends Parser { public static final int STATLIST=16; public static final int STRINGCONST=17; public static final int TYPE=18; - public static final int WS=19; + public static final int UMINUS=19; + public static final int WS=20; // delegates public Parser[] getDelegates() { @@ -100,7 +101,7 @@ public class XParser extends Parser { // $ANTLR start "program" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:63:1: program : 'program' ID ';' decllist statlist '.' EOF -> ^( PROGRAM ID decllist statlist ) ; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:62:1: program : 'program' ^ ID ';' ! decllist statlist '.' ! EOF !; public final XParser.program_return program() throws RecognitionException { XParser.program_return retval = new XParser.program_return(); retval.start = input.LT(1); @@ -120,73 +121,41 @@ public class XParser extends Parser { CommonTree char_literal3_tree=null; CommonTree char_literal6_tree=null; CommonTree EOF7_tree=null; - RewriteRuleTokenStream stream_25=new RewriteRuleTokenStream(adaptor,"token 25"); - RewriteRuleTokenStream stream_29=new RewriteRuleTokenStream(adaptor,"token 29"); - RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); - RewriteRuleTokenStream stream_41=new RewriteRuleTokenStream(adaptor,"token 41"); - RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF"); - RewriteRuleSubtreeStream stream_decllist=new RewriteRuleSubtreeStream(adaptor,"rule decllist"); - RewriteRuleSubtreeStream stream_statlist=new RewriteRuleSubtreeStream(adaptor,"rule statlist"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:63:8: ( 'program' ID ';' decllist statlist '.' EOF -> ^( PROGRAM ID decllist statlist ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:63:17: 'program' ID ';' decllist statlist '.' EOF + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:62:8: ( 'program' ^ ID ';' ! decllist statlist '.' ! EOF !) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:62:17: 'program' ^ ID ';' ! decllist statlist '.' ! EOF ! { - string_literal1=(Token)match(input,41,FOLLOW_41_in_program473); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_41.add(string_literal1); + root_0 = (CommonTree)adaptor.nil(); - ID2=(Token)match(input,ID,FOLLOW_ID_in_program475); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_ID.add(ID2); - char_literal3=(Token)match(input,29,FOLLOW_29_in_program477); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_29.add(char_literal3); + string_literal1=(Token)match(input,42,FOLLOW_42_in_program464); if (state.failed) return retval; + if ( state.backtracking==0 ) { + string_literal1_tree = (CommonTree)adaptor.create(string_literal1); + root_0 = (CommonTree)adaptor.becomeRoot(string_literal1_tree, root_0); + } - pushFollow(FOLLOW_decllist_in_program479); + ID2=(Token)match(input,ID,FOLLOW_ID_in_program467); if (state.failed) return retval; + if ( state.backtracking==0 ) { + ID2_tree = (CommonTree)adaptor.create(ID2); + adaptor.addChild(root_0, ID2_tree); + } + + char_literal3=(Token)match(input,30,FOLLOW_30_in_program469); if (state.failed) return retval; + pushFollow(FOLLOW_decllist_in_program472); decllist4=decllist(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_decllist.add(decllist4.getTree()); - pushFollow(FOLLOW_statlist_in_program481); + if ( state.backtracking==0 ) adaptor.addChild(root_0, decllist4.getTree()); + + pushFollow(FOLLOW_statlist_in_program474); statlist5=statlist(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_statlist.add(statlist5.getTree()); - char_literal6=(Token)match(input,25,FOLLOW_25_in_program483); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_25.add(char_literal6); - - EOF7=(Token)match(input,EOF,FOLLOW_EOF_in_program485); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_EOF.add(EOF7); - - // AST REWRITE - // elements: ID, statlist, decllist - // token labels: - // rule labels: retval - // token list labels: - // rule list labels: - // wildcard labels: - if ( state.backtracking==0 ) { - retval.tree = root_0; - RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); - - root_0 = (CommonTree)adaptor.nil(); - // 63:60: -> ^( PROGRAM ID decllist statlist ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:63:63: ^( PROGRAM ID decllist statlist ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(PROGRAM, "PROGRAM"), root_1); - adaptor.addChild(root_1, stream_ID.nextNode()); - adaptor.addChild(root_1, stream_decllist.nextTree()); - adaptor.addChild(root_1, stream_statlist.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } + if ( state.backtracking==0 ) adaptor.addChild(root_0, statlist5.getTree()); + char_literal6=(Token)match(input,26,FOLLOW_26_in_program476); if (state.failed) return retval; + EOF7=(Token)match(input,EOF,FOLLOW_EOF_in_program479); if (state.failed) return retval; } retval.stop = input.LT(-1); @@ -217,7 +186,7 @@ public class XParser extends Parser { // $ANTLR start "decllist" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:1: decllist : decl decllist -> ^( DECLIST decl decllist ) ; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:65:1: decllist : ( decl )* -> ^( DECLLIST ( decl )* ) ; public final XParser.decllist_return decllist() throws RecognitionException { XParser.decllist_return retval = new XParser.decllist_return(); retval.start = input.LT(1); @@ -225,27 +194,41 @@ public class XParser extends Parser { CommonTree root_0 = null; ParserRuleReturnScope decl8 =null; - ParserRuleReturnScope decllist9 =null; RewriteRuleSubtreeStream stream_decl=new RewriteRuleSubtreeStream(adaptor,"rule decl"); - RewriteRuleSubtreeStream stream_decllist=new RewriteRuleSubtreeStream(adaptor,"rule decllist"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:9: ( decl decllist -> ^( DECLIST decl decllist ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:17: decl decllist + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:65:9: ( ( decl )* -> ^( DECLLIST ( decl )* ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:65:17: ( decl )* { - pushFollow(FOLLOW_decl_in_decllist511); - decl8=decl(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_decl.add(decl8.getTree()); - pushFollow(FOLLOW_decllist_in_decllist513); - decllist9=decllist(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_decllist.add(decllist9.getTree()); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:65:17: ( decl )* + loop1: + while (true) { + int alt1=2; + int LA1_0 = input.LA(1); + if ( (LA1_0==ID||LA1_0==41||LA1_0==43) ) { + alt1=1; + } + + switch (alt1) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:65:17: decl + { + pushFollow(FOLLOW_decl_in_decllist494); + decl8=decl(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_decl.add(decl8.getTree()); + } + break; + + default : + break loop1; + } + } + // AST REWRITE - // elements: decl, decllist + // elements: decl // token labels: // rule labels: retval // token list labels: @@ -256,14 +239,18 @@ public class XParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 66:31: -> ^( DECLIST decl decllist ) + // 65:23: -> ^( DECLLIST ( decl )* ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:34: ^( DECLIST decl decllist ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:65:26: ^( DECLLIST ( decl )* ) { CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(DECLIST, "DECLIST"), root_1); - adaptor.addChild(root_1, stream_decl.nextTree()); - adaptor.addChild(root_1, stream_decllist.nextTree()); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(DECLLIST, "DECLLIST"), root_1); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:65:37: ( decl )* + while ( stream_decl.hasNext() ) { + adaptor.addChild(root_1, stream_decl.nextTree()); + } + stream_decl.reset(); + adaptor.addChild(root_0, root_1); } @@ -303,53 +290,68 @@ public class XParser extends Parser { // $ANTLR start "decl" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:1: decl : modifier ID ':' type ';' -> ^( DECL modifier ID type ) ; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:1: decl : ( modifier )? ID ':' type ';' -> ^( DECL ( modifier )? ID type ) ; public final XParser.decl_return decl() throws RecognitionException { XParser.decl_return retval = new XParser.decl_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token ID11=null; - Token char_literal12=null; - Token char_literal14=null; - ParserRuleReturnScope modifier10 =null; - ParserRuleReturnScope type13 =null; + Token ID10=null; + Token char_literal11=null; + Token char_literal13=null; + ParserRuleReturnScope modifier9 =null; + ParserRuleReturnScope type12 =null; - CommonTree ID11_tree=null; - CommonTree char_literal12_tree=null; - CommonTree char_literal14_tree=null; - RewriteRuleTokenStream stream_27=new RewriteRuleTokenStream(adaptor,"token 27"); - RewriteRuleTokenStream stream_29=new RewriteRuleTokenStream(adaptor,"token 29"); + CommonTree ID10_tree=null; + CommonTree char_literal11_tree=null; + CommonTree char_literal13_tree=null; + RewriteRuleTokenStream stream_28=new RewriteRuleTokenStream(adaptor,"token 28"); RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); + RewriteRuleTokenStream stream_30=new RewriteRuleTokenStream(adaptor,"token 30"); RewriteRuleSubtreeStream stream_modifier=new RewriteRuleSubtreeStream(adaptor,"rule modifier"); RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:5: ( modifier ID ':' type ';' -> ^( DECL modifier ID type ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:17: modifier ID ':' type ';' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:5: ( ( modifier )? ID ':' type ';' -> ^( DECL ( modifier )? ID type ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:17: ( modifier )? ID ':' type ';' { - pushFollow(FOLLOW_modifier_in_decl539); - modifier10=modifier(); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:17: ( modifier )? + int alt2=2; + int LA2_0 = input.LA(1); + if ( (LA2_0==41||LA2_0==43) ) { + alt2=1; + } + switch (alt2) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:17: modifier + { + pushFollow(FOLLOW_modifier_in_decl520); + modifier9=modifier(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_modifier.add(modifier9.getTree()); + } + break; + + } + + ID10=(Token)match(input,ID,FOLLOW_ID_in_decl523); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ID.add(ID10); + + char_literal11=(Token)match(input,28,FOLLOW_28_in_decl525); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_28.add(char_literal11); + + pushFollow(FOLLOW_type_in_decl527); + type12=type(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_modifier.add(modifier10.getTree()); - ID11=(Token)match(input,ID,FOLLOW_ID_in_decl541); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_ID.add(ID11); - - char_literal12=(Token)match(input,27,FOLLOW_27_in_decl543); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_27.add(char_literal12); - - pushFollow(FOLLOW_type_in_decl545); - type13=type(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_type.add(type13.getTree()); - char_literal14=(Token)match(input,29,FOLLOW_29_in_decl547); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_29.add(char_literal14); + if ( state.backtracking==0 ) stream_type.add(type12.getTree()); + char_literal13=(Token)match(input,30,FOLLOW_30_in_decl529); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_30.add(char_literal13); // AST REWRITE - // elements: modifier, type, ID + // elements: ID, type, modifier // token labels: // rule labels: retval // token list labels: @@ -360,13 +362,18 @@ public class XParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 67:42: -> ^( DECL modifier ID type ) + // 66:43: -> ^( DECL ( modifier )? ID type ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:45: ^( DECL modifier ID type ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:46: ^( DECL ( modifier )? ID type ) { CommonTree root_1 = (CommonTree)adaptor.nil(); root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(DECL, "DECL"), root_1); - adaptor.addChild(root_1, stream_modifier.nextTree()); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:53: ( modifier )? + if ( stream_modifier.hasNext() ) { + adaptor.addChild(root_1, stream_modifier.nextTree()); + } + stream_modifier.reset(); + adaptor.addChild(root_1, stream_ID.nextNode()); adaptor.addChild(root_1, stream_type.nextTree()); adaptor.addChild(root_0, root_1); @@ -408,34 +415,34 @@ public class XParser extends Parser { // $ANTLR start "modifier" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:1: modifier : ( 'read' ( 'print' )? | 'read' | 'print' ); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:1: modifier : ( 'read' ( 'print' )? | 'read' | 'print' ); public final XParser.modifier_return modifier() throws RecognitionException { XParser.modifier_return retval = new XParser.modifier_return(); retval.start = input.LT(1); CommonTree root_0 = null; + Token string_literal14=null; Token string_literal15=null; Token string_literal16=null; Token string_literal17=null; - Token string_literal18=null; + CommonTree string_literal14_tree=null; CommonTree string_literal15_tree=null; CommonTree string_literal16_tree=null; CommonTree string_literal17_tree=null; - CommonTree string_literal18_tree=null; try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:9: ( 'read' ( 'print' )? | 'read' | 'print' ) - int alt2=3; - int LA2_0 = input.LA(1); - if ( (LA2_0==42) ) { - int LA2_1 = input.LA(2); - if ( (synpred2_X()) ) { - alt2=1; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:9: ( 'read' ( 'print' )? | 'read' | 'print' ) + int alt4=3; + int LA4_0 = input.LA(1); + if ( (LA4_0==43) ) { + int LA4_1 = input.LA(2); + if ( (synpred4_X()) ) { + alt4=1; } - else if ( (synpred3_X()) ) { - alt2=2; + else if ( (synpred5_X()) ) { + alt4=2; } else { @@ -444,7 +451,7 @@ public class XParser extends Parser { try { input.consume(); NoViableAltException nvae = - new NoViableAltException("", 2, 1, input); + new NoViableAltException("", 4, 1, input); throw nvae; } finally { input.rewind(nvaeMark); @@ -452,44 +459,44 @@ public class XParser extends Parser { } } - else if ( (LA2_0==40) ) { - alt2=3; + else if ( (LA4_0==41) ) { + alt4=3; } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = - new NoViableAltException("", 2, 0, input); + new NoViableAltException("", 4, 0, input); throw nvae; } - switch (alt2) { + switch (alt4) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:17: 'read' ( 'print' )? + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:17: 'read' ( 'print' )? { root_0 = (CommonTree)adaptor.nil(); - string_literal15=(Token)match(input,42,FOLLOW_42_in_modifier571); if (state.failed) return retval; + string_literal14=(Token)match(input,43,FOLLOW_43_in_modifier554); if (state.failed) return retval; if ( state.backtracking==0 ) { - string_literal15_tree = (CommonTree)adaptor.create(string_literal15); - adaptor.addChild(root_0, string_literal15_tree); + string_literal14_tree = (CommonTree)adaptor.create(string_literal14); + adaptor.addChild(root_0, string_literal14_tree); } - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:24: ( 'print' )? - int alt1=2; - int LA1_0 = input.LA(1); - if ( (LA1_0==40) ) { - alt1=1; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:24: ( 'print' )? + int alt3=2; + int LA3_0 = input.LA(1); + if ( (LA3_0==41) ) { + alt3=1; } - switch (alt1) { + switch (alt3) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:24: 'print' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:24: 'print' { - string_literal16=(Token)match(input,40,FOLLOW_40_in_modifier573); if (state.failed) return retval; + string_literal15=(Token)match(input,41,FOLLOW_41_in_modifier556); if (state.failed) return retval; if ( state.backtracking==0 ) { - string_literal16_tree = (CommonTree)adaptor.create(string_literal16); - adaptor.addChild(root_0, string_literal16_tree); + string_literal15_tree = (CommonTree)adaptor.create(string_literal15); + adaptor.addChild(root_0, string_literal15_tree); } } @@ -500,29 +507,29 @@ public class XParser extends Parser { } break; case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:35: 'read' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:35: 'read' { root_0 = (CommonTree)adaptor.nil(); - string_literal17=(Token)match(input,42,FOLLOW_42_in_modifier578); if (state.failed) return retval; + string_literal16=(Token)match(input,43,FOLLOW_43_in_modifier561); if (state.failed) return retval; if ( state.backtracking==0 ) { - string_literal17_tree = (CommonTree)adaptor.create(string_literal17); - adaptor.addChild(root_0, string_literal17_tree); + string_literal16_tree = (CommonTree)adaptor.create(string_literal16); + adaptor.addChild(root_0, string_literal16_tree); } } break; case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:44: 'print' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:44: 'print' { root_0 = (CommonTree)adaptor.nil(); - string_literal18=(Token)match(input,40,FOLLOW_40_in_modifier582); if (state.failed) return retval; + string_literal17=(Token)match(input,41,FOLLOW_41_in_modifier565); if (state.failed) return retval; if ( state.backtracking==0 ) { - string_literal18_tree = (CommonTree)adaptor.create(string_literal18); - adaptor.addChild(root_0, string_literal18_tree); + string_literal17_tree = (CommonTree)adaptor.create(string_literal17); + adaptor.addChild(root_0, string_literal17_tree); } } @@ -557,28 +564,28 @@ public class XParser extends Parser { // $ANTLR start "type" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:69:1: type : ( 'int' | 'float' | 'string' ); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:1: type : ( 'int' | 'float' | 'string' ); public final XParser.type_return type() throws RecognitionException { XParser.type_return retval = new XParser.type_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token set19=null; + Token set18=null; - CommonTree set19_tree=null; + CommonTree set18_tree=null; try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:69:5: ( 'int' | 'float' | 'string' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:5: ( 'int' | 'float' | 'string' ) // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g: { root_0 = (CommonTree)adaptor.nil(); - set19=input.LT(1); - if ( input.LA(1)==36||input.LA(1)==39||input.LA(1)==43 ) { + set18=input.LT(1); + if ( input.LA(1)==37||input.LA(1)==40||input.LA(1)==44 ) { input.consume(); - if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set19)); + if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set18)); state.errorRecovery=false; state.failed=false; } @@ -617,64 +624,64 @@ public class XParser extends Parser { // $ANTLR start "statlist" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:1: statlist : 'begin' ( stat ';' )* 'end' -> ^( STATLIST ( stat )* ) ; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:71:1: statlist : 'begin' ( stat ';' )* 'end' -> ^( STATLIST ( stat )* ) ; public final XParser.statlist_return statlist() throws RecognitionException { XParser.statlist_return retval = new XParser.statlist_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token string_literal20=null; - Token char_literal22=null; - Token string_literal23=null; - ParserRuleReturnScope stat21 =null; + Token string_literal19=null; + Token char_literal21=null; + Token string_literal22=null; + ParserRuleReturnScope stat20 =null; - CommonTree string_literal20_tree=null; - CommonTree char_literal22_tree=null; - CommonTree string_literal23_tree=null; - RewriteRuleTokenStream stream_33=new RewriteRuleTokenStream(adaptor,"token 33"); - RewriteRuleTokenStream stream_35=new RewriteRuleTokenStream(adaptor,"token 35"); - RewriteRuleTokenStream stream_29=new RewriteRuleTokenStream(adaptor,"token 29"); + CommonTree string_literal19_tree=null; + CommonTree char_literal21_tree=null; + CommonTree string_literal22_tree=null; + RewriteRuleTokenStream stream_34=new RewriteRuleTokenStream(adaptor,"token 34"); + RewriteRuleTokenStream stream_36=new RewriteRuleTokenStream(adaptor,"token 36"); + RewriteRuleTokenStream stream_30=new RewriteRuleTokenStream(adaptor,"token 30"); RewriteRuleSubtreeStream stream_stat=new RewriteRuleSubtreeStream(adaptor,"rule stat"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:9: ( 'begin' ( stat ';' )* 'end' -> ^( STATLIST ( stat )* ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:17: 'begin' ( stat ';' )* 'end' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:71:9: ( 'begin' ( stat ';' )* 'end' -> ^( STATLIST ( stat )* ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:71:17: 'begin' ( stat ';' )* 'end' { - string_literal20=(Token)match(input,33,FOLLOW_33_in_statlist620); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_33.add(string_literal20); + string_literal19=(Token)match(input,34,FOLLOW_34_in_statlist603); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_34.add(string_literal19); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:25: ( stat ';' )* - loop3: + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:71:25: ( stat ';' )* + loop5: while (true) { - int alt3=2; - int LA3_0 = input.LA(1); - if ( (LA3_0==ID||LA3_0==33||(LA3_0 >= 37 && LA3_0 <= 38)||LA3_0==45) ) { - alt3=1; + int alt5=2; + int LA5_0 = input.LA(1); + if ( (LA5_0==ID||LA5_0==34||(LA5_0 >= 38 && LA5_0 <= 39)||LA5_0==46) ) { + alt5=1; } - switch (alt3) { + switch (alt5) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:26: stat ';' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:71:26: stat ';' { - pushFollow(FOLLOW_stat_in_statlist623); - stat21=stat(); + pushFollow(FOLLOW_stat_in_statlist606); + stat20=stat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat21.getTree()); - char_literal22=(Token)match(input,29,FOLLOW_29_in_statlist625); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_29.add(char_literal22); + if ( state.backtracking==0 ) stream_stat.add(stat20.getTree()); + char_literal21=(Token)match(input,30,FOLLOW_30_in_statlist608); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_30.add(char_literal21); } break; default : - break loop3; + break loop5; } } - string_literal23=(Token)match(input,35,FOLLOW_35_in_statlist629); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_35.add(string_literal23); + string_literal22=(Token)match(input,36,FOLLOW_36_in_statlist612); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_36.add(string_literal22); // AST REWRITE // elements: stat @@ -688,13 +695,13 @@ public class XParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 72:43: -> ^( STATLIST ( stat )* ) + // 71:43: -> ^( STATLIST ( stat )* ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:46: ^( STATLIST ( stat )* ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:71:46: ^( STATLIST ( stat )* ) { CommonTree root_1 = (CommonTree)adaptor.nil(); root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(STATLIST, "STATLIST"), root_1); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:57: ( stat )* + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:71:57: ( stat )* while ( stream_stat.hasNext() ) { adaptor.addChild(root_1, stream_stat.nextTree()); } @@ -739,123 +746,123 @@ public class XParser extends Parser { // $ANTLR start "stat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:1: stat : ( assignstat | condstat | whilestat | forstat | statlist ); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:1: stat : ( assignstat | condstat | whilestat | forstat | statlist ); public final XParser.stat_return stat() throws RecognitionException { XParser.stat_return retval = new XParser.stat_return(); retval.start = input.LT(1); CommonTree root_0 = null; - ParserRuleReturnScope assignstat24 =null; - ParserRuleReturnScope condstat25 =null; - ParserRuleReturnScope whilestat26 =null; - ParserRuleReturnScope forstat27 =null; - ParserRuleReturnScope statlist28 =null; + ParserRuleReturnScope assignstat23 =null; + ParserRuleReturnScope condstat24 =null; + ParserRuleReturnScope whilestat25 =null; + ParserRuleReturnScope forstat26 =null; + ParserRuleReturnScope statlist27 =null; try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:5: ( assignstat | condstat | whilestat | forstat | statlist ) - int alt4=5; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:5: ( assignstat | condstat | whilestat | forstat | statlist ) + int alt6=5; switch ( input.LA(1) ) { case ID: { - alt4=1; + alt6=1; + } + break; + case 39: + { + alt6=2; + } + break; + case 46: + { + alt6=3; } break; case 38: { - alt4=2; + alt6=4; } break; - case 45: + case 34: { - alt4=3; - } - break; - case 37: - { - alt4=4; - } - break; - case 33: - { - alt4=5; + alt6=5; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = - new NoViableAltException("", 4, 0, input); + new NoViableAltException("", 6, 0, input); throw nvae; } - switch (alt4) { + switch (alt6) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:17: assignstat + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:17: assignstat { root_0 = (CommonTree)adaptor.nil(); - pushFollow(FOLLOW_assignstat_in_stat654); - assignstat24=assignstat(); + pushFollow(FOLLOW_assignstat_in_stat637); + assignstat23=assignstat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, assignstat24.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, assignstat23.getTree()); } break; case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:30: condstat + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:30: condstat { root_0 = (CommonTree)adaptor.nil(); - pushFollow(FOLLOW_condstat_in_stat658); - condstat25=condstat(); + pushFollow(FOLLOW_condstat_in_stat641); + condstat24=condstat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, condstat25.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, condstat24.getTree()); } break; case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:41: whilestat + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:41: whilestat { root_0 = (CommonTree)adaptor.nil(); - pushFollow(FOLLOW_whilestat_in_stat662); - whilestat26=whilestat(); + pushFollow(FOLLOW_whilestat_in_stat645); + whilestat25=whilestat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, whilestat26.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, whilestat25.getTree()); } break; case 4 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:53: forstat + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:53: forstat { root_0 = (CommonTree)adaptor.nil(); - pushFollow(FOLLOW_forstat_in_stat666); - forstat27=forstat(); + pushFollow(FOLLOW_forstat_in_stat649); + forstat26=forstat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, forstat27.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, forstat26.getTree()); } break; case 5 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:63: statlist + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:63: statlist { root_0 = (CommonTree)adaptor.nil(); - pushFollow(FOLLOW_statlist_in_stat670); - statlist28=statlist(); + pushFollow(FOLLOW_statlist_in_stat653); + statlist27=statlist(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, statlist28.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, statlist27.getTree()); } break; @@ -889,40 +896,40 @@ public class XParser extends Parser { // $ANTLR start "assignstat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:1: assignstat : ID ':=' expr -> ^( ':=' ID expr ) ; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:1: assignstat : ID ':=' expr -> ^( ':=' ID expr ) ; public final XParser.assignstat_return assignstat() throws RecognitionException { XParser.assignstat_return retval = new XParser.assignstat_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token ID29=null; - Token string_literal30=null; - ParserRuleReturnScope expr31 =null; + Token ID28=null; + Token string_literal29=null; + ParserRuleReturnScope expr30 =null; - CommonTree ID29_tree=null; - CommonTree string_literal30_tree=null; - RewriteRuleTokenStream stream_28=new RewriteRuleTokenStream(adaptor,"token 28"); + CommonTree ID28_tree=null; + CommonTree string_literal29_tree=null; + RewriteRuleTokenStream stream_29=new RewriteRuleTokenStream(adaptor,"token 29"); RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:11: ( ID ':=' expr -> ^( ':=' ID expr ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:17: ID ':=' expr + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:11: ( ID ':=' expr -> ^( ':=' ID expr ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:17: ID ':=' expr { - ID29=(Token)match(input,ID,FOLLOW_ID_in_assignstat680); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_ID.add(ID29); + ID28=(Token)match(input,ID,FOLLOW_ID_in_assignstat663); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ID.add(ID28); - string_literal30=(Token)match(input,28,FOLLOW_28_in_assignstat682); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_28.add(string_literal30); + string_literal29=(Token)match(input,29,FOLLOW_29_in_assignstat665); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_29.add(string_literal29); - pushFollow(FOLLOW_expr_in_assignstat684); - expr31=expr(); + pushFollow(FOLLOW_expr_in_assignstat667); + expr30=expr(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr.add(expr31.getTree()); + if ( state.backtracking==0 ) stream_expr.add(expr30.getTree()); // AST REWRITE - // elements: 28, expr, ID + // elements: ID, expr, 29 // token labels: // rule labels: retval // token list labels: @@ -933,12 +940,12 @@ public class XParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 74:30: -> ^( ':=' ID expr ) + // 73:30: -> ^( ':=' ID expr ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:33: ^( ':=' ID expr ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:33: ^( ':=' ID expr ) { CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_28.nextNode(), root_1); + root_1 = (CommonTree)adaptor.becomeRoot(stream_29.nextNode(), root_1); adaptor.addChild(root_1, stream_ID.nextNode()); adaptor.addChild(root_1, stream_expr.nextTree()); adaptor.addChild(root_0, root_1); @@ -980,72 +987,72 @@ public class XParser extends Parser { // $ANTLR start "condstat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:1: condstat : 'if' cond 'then' stat ( condElseStat )? -> ^( 'if' cond stat ( condElseStat )? ) ; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:1: condstat : 'if' cond 'then' stat ( condElseStat )? -> ^( 'if' cond stat ( condElseStat )? ) ; public final XParser.condstat_return condstat() throws RecognitionException { XParser.condstat_return retval = new XParser.condstat_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token string_literal32=null; - Token string_literal34=null; - ParserRuleReturnScope cond33 =null; - ParserRuleReturnScope stat35 =null; - ParserRuleReturnScope condElseStat36 =null; + Token string_literal31=null; + Token string_literal33=null; + ParserRuleReturnScope cond32 =null; + ParserRuleReturnScope stat34 =null; + ParserRuleReturnScope condElseStat35 =null; - CommonTree string_literal32_tree=null; - CommonTree string_literal34_tree=null; - RewriteRuleTokenStream stream_44=new RewriteRuleTokenStream(adaptor,"token 44"); - RewriteRuleTokenStream stream_38=new RewriteRuleTokenStream(adaptor,"token 38"); + CommonTree string_literal31_tree=null; + CommonTree string_literal33_tree=null; + RewriteRuleTokenStream stream_45=new RewriteRuleTokenStream(adaptor,"token 45"); + RewriteRuleTokenStream stream_39=new RewriteRuleTokenStream(adaptor,"token 39"); RewriteRuleSubtreeStream stream_stat=new RewriteRuleSubtreeStream(adaptor,"rule stat"); RewriteRuleSubtreeStream stream_condElseStat=new RewriteRuleSubtreeStream(adaptor,"rule condElseStat"); RewriteRuleSubtreeStream stream_cond=new RewriteRuleSubtreeStream(adaptor,"rule cond"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:9: ( 'if' cond 'then' stat ( condElseStat )? -> ^( 'if' cond stat ( condElseStat )? ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:17: 'if' cond 'then' stat ( condElseStat )? + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:9: ( 'if' cond 'then' stat ( condElseStat )? -> ^( 'if' cond stat ( condElseStat )? ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:17: 'if' cond 'then' stat ( condElseStat )? { - string_literal32=(Token)match(input,38,FOLLOW_38_in_condstat706); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_38.add(string_literal32); + string_literal31=(Token)match(input,39,FOLLOW_39_in_condstat689); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_39.add(string_literal31); - pushFollow(FOLLOW_cond_in_condstat708); - cond33=cond(); + pushFollow(FOLLOW_cond_in_condstat691); + cond32=cond(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_cond.add(cond33.getTree()); - string_literal34=(Token)match(input,44,FOLLOW_44_in_condstat710); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_44.add(string_literal34); + if ( state.backtracking==0 ) stream_cond.add(cond32.getTree()); + string_literal33=(Token)match(input,45,FOLLOW_45_in_condstat693); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_45.add(string_literal33); - pushFollow(FOLLOW_stat_in_condstat712); - stat35=stat(); + pushFollow(FOLLOW_stat_in_condstat695); + stat34=stat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat35.getTree()); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:39: ( condElseStat )? - int alt5=2; - int LA5_0 = input.LA(1); - if ( (LA5_0==34) ) { - int LA5_1 = input.LA(2); - if ( (synpred11_X()) ) { - alt5=1; + if ( state.backtracking==0 ) stream_stat.add(stat34.getTree()); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:39: ( condElseStat )? + int alt7=2; + int LA7_0 = input.LA(1); + if ( (LA7_0==35) ) { + int LA7_1 = input.LA(2); + if ( (synpred13_X()) ) { + alt7=1; } } - switch (alt5) { + switch (alt7) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:39: condElseStat + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:39: condElseStat { - pushFollow(FOLLOW_condElseStat_in_condstat714); - condElseStat36=condElseStat(); + pushFollow(FOLLOW_condElseStat_in_condstat697); + condElseStat35=condElseStat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_condElseStat.add(condElseStat36.getTree()); + if ( state.backtracking==0 ) stream_condElseStat.add(condElseStat35.getTree()); } break; } // AST REWRITE - // elements: stat, 38, cond, condElseStat + // elements: cond, 39, stat, condElseStat // token labels: // rule labels: retval // token list labels: @@ -1056,15 +1063,15 @@ public class XParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 75:53: -> ^( 'if' cond stat ( condElseStat )? ) + // 74:53: -> ^( 'if' cond stat ( condElseStat )? ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:56: ^( 'if' cond stat ( condElseStat )? ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:56: ^( 'if' cond stat ( condElseStat )? ) { CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_38.nextNode(), root_1); + root_1 = (CommonTree)adaptor.becomeRoot(stream_39.nextNode(), root_1); adaptor.addChild(root_1, stream_cond.nextTree()); adaptor.addChild(root_1, stream_stat.nextTree()); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:73: ( condElseStat )? + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:73: ( condElseStat )? if ( stream_condElseStat.hasNext() ) { adaptor.addChild(root_1, stream_condElseStat.nextTree()); } @@ -1109,34 +1116,34 @@ public class XParser extends Parser { // $ANTLR start "condElseStat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:1: condElseStat : 'else' stat -> ^( 'else' stat ) ; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:1: condElseStat : 'else' stat -> ^( 'else' stat ) ; public final XParser.condElseStat_return condElseStat() throws RecognitionException { XParser.condElseStat_return retval = new XParser.condElseStat_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token string_literal37=null; - ParserRuleReturnScope stat38 =null; + Token string_literal36=null; + ParserRuleReturnScope stat37 =null; - CommonTree string_literal37_tree=null; - RewriteRuleTokenStream stream_34=new RewriteRuleTokenStream(adaptor,"token 34"); + CommonTree string_literal36_tree=null; + RewriteRuleTokenStream stream_35=new RewriteRuleTokenStream(adaptor,"token 35"); RewriteRuleSubtreeStream stream_stat=new RewriteRuleSubtreeStream(adaptor,"rule stat"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:13: ( 'else' stat -> ^( 'else' stat ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:17: 'else' stat + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:13: ( 'else' stat -> ^( 'else' stat ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:17: 'else' stat { - string_literal37=(Token)match(input,34,FOLLOW_34_in_condElseStat737); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_34.add(string_literal37); + string_literal36=(Token)match(input,35,FOLLOW_35_in_condElseStat720); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_35.add(string_literal36); - pushFollow(FOLLOW_stat_in_condElseStat739); - stat38=stat(); + pushFollow(FOLLOW_stat_in_condElseStat722); + stat37=stat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat38.getTree()); + if ( state.backtracking==0 ) stream_stat.add(stat37.getTree()); // AST REWRITE - // elements: 34, stat + // elements: 35, stat // token labels: // rule labels: retval // token list labels: @@ -1147,12 +1154,12 @@ public class XParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 76:29: -> ^( 'else' stat ) + // 75:29: -> ^( 'else' stat ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:32: ^( 'else' stat ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:32: ^( 'else' stat ) { CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_34.nextNode(), root_1); + root_1 = (CommonTree)adaptor.becomeRoot(stream_35.nextNode(), root_1); adaptor.addChild(root_1, stream_stat.nextTree()); adaptor.addChild(root_0, root_1); } @@ -1193,53 +1200,53 @@ public class XParser extends Parser { // $ANTLR start "whilestat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:1: whilestat : 'while' '(' cond ')' stat -> ^( 'while' cond stat ) ; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:1: whilestat : 'while' '(' cond ')' stat -> ^( 'while' cond stat ) ; public final XParser.whilestat_return whilestat() throws RecognitionException { XParser.whilestat_return retval = new XParser.whilestat_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token string_literal39=null; - Token char_literal40=null; - Token char_literal42=null; - ParserRuleReturnScope cond41 =null; - ParserRuleReturnScope stat43 =null; + Token string_literal38=null; + Token char_literal39=null; + Token char_literal41=null; + ParserRuleReturnScope cond40 =null; + ParserRuleReturnScope stat42 =null; - CommonTree string_literal39_tree=null; - CommonTree char_literal40_tree=null; - CommonTree char_literal42_tree=null; - RewriteRuleTokenStream stream_45=new RewriteRuleTokenStream(adaptor,"token 45"); - RewriteRuleTokenStream stream_20=new RewriteRuleTokenStream(adaptor,"token 20"); + CommonTree string_literal38_tree=null; + CommonTree char_literal39_tree=null; + CommonTree char_literal41_tree=null; + RewriteRuleTokenStream stream_22=new RewriteRuleTokenStream(adaptor,"token 22"); + RewriteRuleTokenStream stream_46=new RewriteRuleTokenStream(adaptor,"token 46"); RewriteRuleTokenStream stream_21=new RewriteRuleTokenStream(adaptor,"token 21"); RewriteRuleSubtreeStream stream_stat=new RewriteRuleSubtreeStream(adaptor,"rule stat"); RewriteRuleSubtreeStream stream_cond=new RewriteRuleSubtreeStream(adaptor,"rule cond"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:10: ( 'while' '(' cond ')' stat -> ^( 'while' cond stat ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:17: 'while' '(' cond ')' stat + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:10: ( 'while' '(' cond ')' stat -> ^( 'while' cond stat ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:17: 'while' '(' cond ')' stat { - string_literal39=(Token)match(input,45,FOLLOW_45_in_whilestat758); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_45.add(string_literal39); + string_literal38=(Token)match(input,46,FOLLOW_46_in_whilestat741); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_46.add(string_literal38); - char_literal40=(Token)match(input,20,FOLLOW_20_in_whilestat760); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_20.add(char_literal40); + char_literal39=(Token)match(input,21,FOLLOW_21_in_whilestat743); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_21.add(char_literal39); - pushFollow(FOLLOW_cond_in_whilestat762); - cond41=cond(); + pushFollow(FOLLOW_cond_in_whilestat745); + cond40=cond(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_cond.add(cond41.getTree()); - char_literal42=(Token)match(input,21,FOLLOW_21_in_whilestat764); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_21.add(char_literal42); + if ( state.backtracking==0 ) stream_cond.add(cond40.getTree()); + char_literal41=(Token)match(input,22,FOLLOW_22_in_whilestat747); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_22.add(char_literal41); - pushFollow(FOLLOW_stat_in_whilestat766); - stat43=stat(); + pushFollow(FOLLOW_stat_in_whilestat749); + stat42=stat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat43.getTree()); + if ( state.backtracking==0 ) stream_stat.add(stat42.getTree()); // AST REWRITE - // elements: stat, 45, cond + // elements: cond, stat, 46 // token labels: // rule labels: retval // token list labels: @@ -1250,12 +1257,12 @@ public class XParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 77:43: -> ^( 'while' cond stat ) + // 76:43: -> ^( 'while' cond stat ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:46: ^( 'while' cond stat ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:46: ^( 'while' cond stat ) { CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_45.nextNode(), root_1); + root_1 = (CommonTree)adaptor.becomeRoot(stream_46.nextNode(), root_1); adaptor.addChild(root_1, stream_cond.nextTree()); adaptor.addChild(root_1, stream_stat.nextTree()); adaptor.addChild(root_0, root_1); @@ -1297,77 +1304,77 @@ public class XParser extends Parser { // $ANTLR start "forstat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:78:1: forstat : 'for' '(' assignstat ';' cond ';' assignstat ')' stat -> ^( 'for' assignstat cond assignstat stat ) ; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:1: forstat : 'for' '(' assignstat ';' cond ';' assignstat ')' stat -> ^( 'for' assignstat cond assignstat stat ) ; public final XParser.forstat_return forstat() throws RecognitionException { XParser.forstat_return retval = new XParser.forstat_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token string_literal44=null; - Token char_literal45=null; - Token char_literal47=null; - Token char_literal49=null; - Token char_literal51=null; - ParserRuleReturnScope assignstat46 =null; - ParserRuleReturnScope cond48 =null; - ParserRuleReturnScope assignstat50 =null; - ParserRuleReturnScope stat52 =null; + Token string_literal43=null; + Token char_literal44=null; + Token char_literal46=null; + Token char_literal48=null; + Token char_literal50=null; + ParserRuleReturnScope assignstat45 =null; + ParserRuleReturnScope cond47 =null; + ParserRuleReturnScope assignstat49 =null; + ParserRuleReturnScope stat51 =null; - CommonTree string_literal44_tree=null; - CommonTree char_literal45_tree=null; - CommonTree char_literal47_tree=null; - CommonTree char_literal49_tree=null; - CommonTree char_literal51_tree=null; - RewriteRuleTokenStream stream_37=new RewriteRuleTokenStream(adaptor,"token 37"); - RewriteRuleTokenStream stream_29=new RewriteRuleTokenStream(adaptor,"token 29"); - RewriteRuleTokenStream stream_20=new RewriteRuleTokenStream(adaptor,"token 20"); + CommonTree string_literal43_tree=null; + CommonTree char_literal44_tree=null; + CommonTree char_literal46_tree=null; + CommonTree char_literal48_tree=null; + CommonTree char_literal50_tree=null; + RewriteRuleTokenStream stream_22=new RewriteRuleTokenStream(adaptor,"token 22"); + RewriteRuleTokenStream stream_38=new RewriteRuleTokenStream(adaptor,"token 38"); + RewriteRuleTokenStream stream_30=new RewriteRuleTokenStream(adaptor,"token 30"); RewriteRuleTokenStream stream_21=new RewriteRuleTokenStream(adaptor,"token 21"); RewriteRuleSubtreeStream stream_stat=new RewriteRuleSubtreeStream(adaptor,"rule stat"); RewriteRuleSubtreeStream stream_cond=new RewriteRuleSubtreeStream(adaptor,"rule cond"); RewriteRuleSubtreeStream stream_assignstat=new RewriteRuleSubtreeStream(adaptor,"rule assignstat"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:78:8: ( 'for' '(' assignstat ';' cond ';' assignstat ')' stat -> ^( 'for' assignstat cond assignstat stat ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:78:17: 'for' '(' assignstat ';' cond ';' assignstat ')' stat + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:8: ( 'for' '(' assignstat ';' cond ';' assignstat ')' stat -> ^( 'for' assignstat cond assignstat stat ) ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:17: 'for' '(' assignstat ';' cond ';' assignstat ')' stat { - string_literal44=(Token)match(input,37,FOLLOW_37_in_forstat789); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_37.add(string_literal44); + string_literal43=(Token)match(input,38,FOLLOW_38_in_forstat772); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_38.add(string_literal43); - char_literal45=(Token)match(input,20,FOLLOW_20_in_forstat791); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_20.add(char_literal45); + char_literal44=(Token)match(input,21,FOLLOW_21_in_forstat774); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_21.add(char_literal44); - pushFollow(FOLLOW_assignstat_in_forstat793); - assignstat46=assignstat(); + pushFollow(FOLLOW_assignstat_in_forstat776); + assignstat45=assignstat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_assignstat.add(assignstat46.getTree()); - char_literal47=(Token)match(input,29,FOLLOW_29_in_forstat795); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_29.add(char_literal47); + if ( state.backtracking==0 ) stream_assignstat.add(assignstat45.getTree()); + char_literal46=(Token)match(input,30,FOLLOW_30_in_forstat778); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_30.add(char_literal46); - pushFollow(FOLLOW_cond_in_forstat797); - cond48=cond(); + pushFollow(FOLLOW_cond_in_forstat780); + cond47=cond(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_cond.add(cond48.getTree()); - char_literal49=(Token)match(input,29,FOLLOW_29_in_forstat799); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_29.add(char_literal49); + if ( state.backtracking==0 ) stream_cond.add(cond47.getTree()); + char_literal48=(Token)match(input,30,FOLLOW_30_in_forstat782); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_30.add(char_literal48); - pushFollow(FOLLOW_assignstat_in_forstat801); - assignstat50=assignstat(); + pushFollow(FOLLOW_assignstat_in_forstat784); + assignstat49=assignstat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_assignstat.add(assignstat50.getTree()); - char_literal51=(Token)match(input,21,FOLLOW_21_in_forstat803); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_21.add(char_literal51); + if ( state.backtracking==0 ) stream_assignstat.add(assignstat49.getTree()); + char_literal50=(Token)match(input,22,FOLLOW_22_in_forstat786); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_22.add(char_literal50); - pushFollow(FOLLOW_stat_in_forstat805); - stat52=stat(); + pushFollow(FOLLOW_stat_in_forstat788); + stat51=stat(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat52.getTree()); + if ( state.backtracking==0 ) stream_stat.add(stat51.getTree()); // AST REWRITE - // elements: assignstat, 37, stat, assignstat, cond + // elements: cond, stat, assignstat, 38, assignstat // token labels: // rule labels: retval // token list labels: @@ -1378,12 +1385,12 @@ public class XParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 79:17: -> ^( 'for' assignstat cond assignstat stat ) + // 78:17: -> ^( 'for' assignstat cond assignstat stat ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:79:20: ^( 'for' assignstat cond assignstat stat ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:78:20: ^( 'for' assignstat cond assignstat stat ) { CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_37.nextNode(), root_1); + root_1 = (CommonTree)adaptor.becomeRoot(stream_38.nextNode(), root_1); adaptor.addChild(root_1, stream_assignstat.nextTree()); adaptor.addChild(root_1, stream_cond.nextTree()); adaptor.addChild(root_1, stream_assignstat.nextTree()); @@ -1419,6 +1426,66 @@ public class XParser extends Parser { // $ANTLR end "forstat" + public static class number_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $ANTLR start "number" + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:1: number : ( INTCONST | FLOATCONST ); + public final XParser.number_return number() throws RecognitionException { + XParser.number_return retval = new XParser.number_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token set52=null; + + CommonTree set52_tree=null; + + try { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:7: ( INTCONST | FLOATCONST ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g: + { + root_0 = (CommonTree)adaptor.nil(); + + + set52=input.LT(1); + if ( input.LA(1)==FLOATCONST||input.LA(1)==INTCONST ) { + input.consume(); + if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set52)); + state.errorRecovery=false; + state.failed=false; + } + else { + if (state.backtracking>0) {state.failed=true; return retval;} + MismatchedSetException mse = new MismatchedSetException(null,input); + throw mse; + } + } + + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + } + finally { + // do for sure before leaving + } + return retval; + } + // $ANTLR end "number" + + public static class expr_return extends ParserRuleReturnScope { CommonTree tree; @Override @@ -1427,89 +1494,73 @@ public class XParser extends Parser { // $ANTLR start "expr" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:1: expr : ( expr2 '+' expr -> ^( '+' expr2 expr ) | expr2 '-' expr -> ^( '-' expr2 expr ) | expr2 -> ^( expr2 ) ); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:1: expr : ( expr2 (op= '+' |op= '-' ) expr -> ^( $op expr2 expr ) | expr2 ); public final XParser.expr_return expr() throws RecognitionException { XParser.expr_return retval = new XParser.expr_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token char_literal54=null; - Token char_literal57=null; + Token op=null; ParserRuleReturnScope expr253 =null; - ParserRuleReturnScope expr55 =null; - ParserRuleReturnScope expr256 =null; - ParserRuleReturnScope expr58 =null; - ParserRuleReturnScope expr259 =null; + ParserRuleReturnScope expr54 =null; + ParserRuleReturnScope expr255 =null; - CommonTree char_literal54_tree=null; - CommonTree char_literal57_tree=null; - RewriteRuleTokenStream stream_23=new RewriteRuleTokenStream(adaptor,"token 23"); + CommonTree op_tree=null; RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24"); + RewriteRuleTokenStream stream_25=new RewriteRuleTokenStream(adaptor,"token 25"); RewriteRuleSubtreeStream stream_expr2=new RewriteRuleSubtreeStream(adaptor,"rule expr2"); RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:5: ( expr2 '+' expr -> ^( '+' expr2 expr ) | expr2 '-' expr -> ^( '-' expr2 expr ) | expr2 -> ^( expr2 ) ) - int alt6=3; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:5: ( expr2 (op= '+' |op= '-' ) expr -> ^( $op expr2 expr ) | expr2 ) + int alt9=2; switch ( input.LA(1) ) { - case FLOATCONST: - case INTCONST: + case 25: { - int LA6_1 = input.LA(2); - if ( (synpred12_X()) ) { - alt6=1; - } - else if ( (synpred13_X()) ) { - alt6=2; + int LA9_1 = input.LA(2); + if ( (synpred16_X()) ) { + alt9=1; } else if ( (true) ) { - alt6=3; + alt9=2; } } break; - case 24: + case FLOATCONST: + case INTCONST: { - int LA6_2 = input.LA(2); - if ( (synpred12_X()) ) { - alt6=1; - } - else if ( (synpred13_X()) ) { - alt6=2; + int LA9_2 = input.LA(2); + if ( (synpred16_X()) ) { + alt9=1; } else if ( (true) ) { - alt6=3; + alt9=2; } } break; case STRINGCONST: { - int LA6_3 = input.LA(2); - if ( (synpred12_X()) ) { - alt6=1; - } - else if ( (synpred13_X()) ) { - alt6=2; + int LA9_3 = input.LA(2); + if ( (synpred16_X()) ) { + alt9=1; } else if ( (true) ) { - alt6=3; + alt9=2; } } break; - case 20: + case 21: { - int LA6_4 = input.LA(2); - if ( (synpred12_X()) ) { - alt6=1; - } - else if ( (synpred13_X()) ) { - alt6=2; + int LA9_4 = input.LA(2); + if ( (synpred16_X()) ) { + alt9=1; } else if ( (true) ) { - alt6=3; + alt9=2; } } @@ -1517,44 +1568,79 @@ public class XParser extends Parser { default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = - new NoViableAltException("", 6, 0, input); + new NoViableAltException("", 9, 0, input); throw nvae; } - switch (alt6) { + switch (alt9) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:13: expr2 '+' expr + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:13: expr2 (op= '+' |op= '-' ) expr { - pushFollow(FOLLOW_expr2_in_expr848); + pushFollow(FOLLOW_expr2_in_expr846); expr253=expr2(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_expr2.add(expr253.getTree()); - char_literal54=(Token)match(input,23,FOLLOW_23_in_expr850); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_23.add(char_literal54); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:19: (op= '+' |op= '-' ) + int alt8=2; + int LA8_0 = input.LA(1); + if ( (LA8_0==24) ) { + alt8=1; + } + else if ( (LA8_0==25) ) { + alt8=2; + } - pushFollow(FOLLOW_expr_in_expr852); - expr55=expr(); + else { + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 8, 0, input); + throw nvae; + } + + switch (alt8) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:20: op= '+' + { + op=(Token)match(input,24,FOLLOW_24_in_expr851); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_24.add(op); + + } + break; + case 2 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:29: op= '-' + { + op=(Token)match(input,25,FOLLOW_25_in_expr857); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_25.add(op); + + } + break; + + } + + pushFollow(FOLLOW_expr_in_expr860); + expr54=expr(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr.add(expr55.getTree()); + if ( state.backtracking==0 ) stream_expr.add(expr54.getTree()); // AST REWRITE - // elements: expr, 23, expr2 - // token labels: + // elements: op, expr, expr2 + // token labels: op // rule labels: retval // token list labels: // rule list labels: // wildcard labels: if ( state.backtracking==0 ) { retval.tree = root_0; + RewriteRuleTokenStream stream_op=new RewriteRuleTokenStream(adaptor,"token op",op); RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 81:35: -> ^( '+' expr2 expr ) + // 82:45: -> ^( $op expr2 expr ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:38: ^( '+' expr2 expr ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:48: ^( $op expr2 expr ) { CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_23.nextNode(), root_1); + root_1 = (CommonTree)adaptor.becomeRoot(stream_op.nextNode(), root_1); adaptor.addChild(root_1, stream_expr2.nextTree()); adaptor.addChild(root_1, stream_expr.nextTree()); adaptor.addChild(root_0, root_1); @@ -1569,86 +1655,16 @@ public class XParser extends Parser { } break; case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:15: expr2 '-' expr - { - pushFollow(FOLLOW_expr2_in_expr885); - expr256=expr2(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr2.add(expr256.getTree()); - char_literal57=(Token)match(input,24,FOLLOW_24_in_expr887); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_24.add(char_literal57); - - pushFollow(FOLLOW_expr_in_expr889); - expr58=expr(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr.add(expr58.getTree()); - // AST REWRITE - // elements: 24, expr, expr2 - // token labels: - // rule labels: retval - // token list labels: - // rule list labels: - // wildcard labels: - if ( state.backtracking==0 ) { - retval.tree = root_0; - RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); - - root_0 = (CommonTree)adaptor.nil(); - // 82:34: -> ^( '-' expr2 expr ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:37: ^( '-' expr2 expr ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_24.nextNode(), root_1); - adaptor.addChild(root_1, stream_expr2.nextTree()); - adaptor.addChild(root_1, stream_expr.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - break; - case 3 : // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:83:15: expr2 { - pushFollow(FOLLOW_expr2_in_expr919); - expr259=expr2(); + root_0 = (CommonTree)adaptor.nil(); + + + pushFollow(FOLLOW_expr2_in_expr890); + expr255=expr2(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr2.add(expr259.getTree()); - // AST REWRITE - // elements: expr2 - // token labels: - // rule labels: retval - // token list labels: - // rule list labels: - // wildcard labels: - if ( state.backtracking==0 ) { - retval.tree = root_0; - RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); - - root_0 = (CommonTree)adaptor.nil(); - // 83:37: -> ^( expr2 ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:83:40: ^( expr2 ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_expr2.nextNode(), root_1); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } + if ( state.backtracking==0 ) adaptor.addChild(root_0, expr255.getTree()); } break; @@ -1682,89 +1698,73 @@ public class XParser extends Parser { // $ANTLR start "expr2" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:1: expr2 : ( expr3 '*' expr2 -> ^( '*' expr3 expr2 ) | expr3 '/' expr2 -> ^( '/' expr3 expr2 ) | expr3 -> ^( expr3 ) ); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:1: expr2 : ( expr3 (op= '*' |op= '/' ) expr -> ^( $op expr3 expr ) | expr3 ); public final XParser.expr2_return expr2() throws RecognitionException { XParser.expr2_return retval = new XParser.expr2_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token char_literal61=null; - Token char_literal64=null; - ParserRuleReturnScope expr360 =null; - ParserRuleReturnScope expr262 =null; - ParserRuleReturnScope expr363 =null; - ParserRuleReturnScope expr265 =null; - ParserRuleReturnScope expr366 =null; + Token op=null; + ParserRuleReturnScope expr356 =null; + ParserRuleReturnScope expr57 =null; + ParserRuleReturnScope expr358 =null; - CommonTree char_literal61_tree=null; - CommonTree char_literal64_tree=null; - RewriteRuleTokenStream stream_22=new RewriteRuleTokenStream(adaptor,"token 22"); - RewriteRuleTokenStream stream_26=new RewriteRuleTokenStream(adaptor,"token 26"); + CommonTree op_tree=null; + RewriteRuleTokenStream stream_23=new RewriteRuleTokenStream(adaptor,"token 23"); + RewriteRuleTokenStream stream_27=new RewriteRuleTokenStream(adaptor,"token 27"); RewriteRuleSubtreeStream stream_expr3=new RewriteRuleSubtreeStream(adaptor,"rule expr3"); - RewriteRuleSubtreeStream stream_expr2=new RewriteRuleSubtreeStream(adaptor,"rule expr2"); + RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:6: ( expr3 '*' expr2 -> ^( '*' expr3 expr2 ) | expr3 '/' expr2 -> ^( '/' expr3 expr2 ) | expr3 -> ^( expr3 ) ) - int alt7=3; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:6: ( expr3 (op= '*' |op= '/' ) expr -> ^( $op expr3 expr ) | expr3 ) + int alt11=2; switch ( input.LA(1) ) { - case FLOATCONST: - case INTCONST: + case 25: { - int LA7_1 = input.LA(2); - if ( (synpred14_X()) ) { - alt7=1; - } - else if ( (synpred15_X()) ) { - alt7=2; + int LA11_1 = input.LA(2); + if ( (synpred18_X()) ) { + alt11=1; } else if ( (true) ) { - alt7=3; + alt11=2; } } break; - case 24: + case FLOATCONST: + case INTCONST: { - int LA7_2 = input.LA(2); - if ( (synpred14_X()) ) { - alt7=1; - } - else if ( (synpred15_X()) ) { - alt7=2; + int LA11_2 = input.LA(2); + if ( (synpred18_X()) ) { + alt11=1; } else if ( (true) ) { - alt7=3; + alt11=2; } } break; case STRINGCONST: { - int LA7_3 = input.LA(2); - if ( (synpred14_X()) ) { - alt7=1; - } - else if ( (synpred15_X()) ) { - alt7=2; + int LA11_3 = input.LA(2); + if ( (synpred18_X()) ) { + alt11=1; } else if ( (true) ) { - alt7=3; + alt11=2; } } break; - case 20: + case 21: { - int LA7_4 = input.LA(2); - if ( (synpred14_X()) ) { - alt7=1; - } - else if ( (synpred15_X()) ) { - alt7=2; + int LA11_4 = input.LA(2); + if ( (synpred18_X()) ) { + alt11=1; } else if ( (true) ) { - alt7=3; + alt11=2; } } @@ -1772,46 +1772,81 @@ public class XParser extends Parser { default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = - new NoViableAltException("", 7, 0, input); + new NoViableAltException("", 11, 0, input); throw nvae; } - switch (alt7) { + switch (alt11) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:13: expr3 '*' expr2 + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:13: expr3 (op= '*' |op= '/' ) expr { - pushFollow(FOLLOW_expr3_in_expr2952); - expr360=expr3(); + pushFollow(FOLLOW_expr3_in_expr2901); + expr356=expr3(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr3.add(expr360.getTree()); - char_literal61=(Token)match(input,22,FOLLOW_22_in_expr2954); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_22.add(char_literal61); + if ( state.backtracking==0 ) stream_expr3.add(expr356.getTree()); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:19: (op= '*' |op= '/' ) + int alt10=2; + int LA10_0 = input.LA(1); + if ( (LA10_0==23) ) { + alt10=1; + } + else if ( (LA10_0==27) ) { + alt10=2; + } - pushFollow(FOLLOW_expr2_in_expr2956); - expr262=expr2(); + else { + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 10, 0, input); + throw nvae; + } + + switch (alt10) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:20: op= '*' + { + op=(Token)match(input,23,FOLLOW_23_in_expr2906); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_23.add(op); + + } + break; + case 2 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:29: op= '/' + { + op=(Token)match(input,27,FOLLOW_27_in_expr2912); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_27.add(op); + + } + break; + + } + + pushFollow(FOLLOW_expr_in_expr2915); + expr57=expr(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr2.add(expr262.getTree()); + if ( state.backtracking==0 ) stream_expr.add(expr57.getTree()); // AST REWRITE - // elements: 22, expr2, expr3 - // token labels: + // elements: expr3, op, expr + // token labels: op // rule labels: retval // token list labels: // rule list labels: // wildcard labels: if ( state.backtracking==0 ) { retval.tree = root_0; + RewriteRuleTokenStream stream_op=new RewriteRuleTokenStream(adaptor,"token op",op); RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); root_0 = (CommonTree)adaptor.nil(); - // 84:31: -> ^( '*' expr3 expr2 ) + // 84:45: -> ^( $op expr3 expr ) { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:34: ^( '*' expr3 expr2 ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:48: ^( $op expr3 expr ) { CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_22.nextNode(), root_1); + root_1 = (CommonTree)adaptor.becomeRoot(stream_op.nextNode(), root_1); adaptor.addChild(root_1, stream_expr3.nextTree()); - adaptor.addChild(root_1, stream_expr2.nextTree()); + adaptor.addChild(root_1, stream_expr.nextTree()); adaptor.addChild(root_0, root_1); } @@ -1824,86 +1859,16 @@ public class XParser extends Parser { } break; case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:85:15: expr3 '/' expr2 + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:85:15: expr3 { - pushFollow(FOLLOW_expr3_in_expr2984); - expr363=expr3(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr3.add(expr363.getTree()); - char_literal64=(Token)match(input,26,FOLLOW_26_in_expr2986); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_26.add(char_literal64); - - pushFollow(FOLLOW_expr2_in_expr2988); - expr265=expr2(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr2.add(expr265.getTree()); - // AST REWRITE - // elements: expr3, expr2, 26 - // token labels: - // rule labels: retval - // token list labels: - // rule list labels: - // wildcard labels: - if ( state.backtracking==0 ) { - retval.tree = root_0; - RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); - root_0 = (CommonTree)adaptor.nil(); - // 85:33: -> ^( '/' expr3 expr2 ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:85:36: ^( '/' expr3 expr2 ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_26.nextNode(), root_1); - adaptor.addChild(root_1, stream_expr3.nextTree()); - adaptor.addChild(root_1, stream_expr2.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - retval.tree = root_0; - } - - } - break; - case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:15: expr3 - { - pushFollow(FOLLOW_expr3_in_expr21016); - expr366=expr3(); + pushFollow(FOLLOW_expr3_in_expr2945); + expr358=expr3(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr3.add(expr366.getTree()); - // AST REWRITE - // elements: expr3 - // token labels: - // rule labels: retval - // token list labels: - // rule list labels: - // wildcard labels: - if ( state.backtracking==0 ) { - retval.tree = root_0; - RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); - - root_0 = (CommonTree)adaptor.nil(); - // 86:37: -> ^( expr3 ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:40: ^( expr3 ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_expr3.nextNode(), root_1); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } + if ( state.backtracking==0 ) adaptor.addChild(root_0, expr358.getTree()); } break; @@ -1937,124 +1902,143 @@ public class XParser extends Parser { // $ANTLR start "expr3" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:1: expr3 : ( number | '-' number | STRINGCONST | '(' ! expr ^ ')' ); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:1: expr3 : (op= '-' num= number -> ^( UMINUS[op,\"UMINUS\"] $num) | number | STRINGCONST | '(' ! expr ^ ')' !); public final XParser.expr3_return expr3() throws RecognitionException { XParser.expr3_return retval = new XParser.expr3_return(); retval.start = input.LT(1); CommonTree root_0 = null; - Token char_literal68=null; - Token STRINGCONST70=null; - Token char_literal71=null; - Token char_literal73=null; - ParserRuleReturnScope number67 =null; - ParserRuleReturnScope number69 =null; - ParserRuleReturnScope expr72 =null; + Token op=null; + Token STRINGCONST60=null; + Token char_literal61=null; + Token char_literal63=null; + ParserRuleReturnScope num =null; + ParserRuleReturnScope number59 =null; + ParserRuleReturnScope expr62 =null; - CommonTree char_literal68_tree=null; - CommonTree STRINGCONST70_tree=null; - CommonTree char_literal71_tree=null; - CommonTree char_literal73_tree=null; + CommonTree op_tree=null; + CommonTree STRINGCONST60_tree=null; + CommonTree char_literal61_tree=null; + CommonTree char_literal63_tree=null; + RewriteRuleTokenStream stream_25=new RewriteRuleTokenStream(adaptor,"token 25"); + RewriteRuleSubtreeStream stream_number=new RewriteRuleSubtreeStream(adaptor,"rule number"); try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:6: ( number | '-' number | STRINGCONST | '(' ! expr ^ ')' ) - int alt8=4; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:6: (op= '-' num= number -> ^( UMINUS[op,\"UMINUS\"] $num) | number | STRINGCONST | '(' ! expr ^ ')' !) + int alt12=4; switch ( input.LA(1) ) { + case 25: + { + alt12=1; + } + break; case FLOATCONST: case INTCONST: { - alt8=1; - } - break; - case 24: - { - alt8=2; + alt12=2; } break; case STRINGCONST: { - alt8=3; + alt12=3; } break; - case 20: + case 21: { - alt8=4; + alt12=4; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = - new NoViableAltException("", 8, 0, input); + new NoViableAltException("", 12, 0, input); throw nvae; } - switch (alt8) { + switch (alt12) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:13: number + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:13: op= '-' num= number { - root_0 = (CommonTree)adaptor.nil(); + op=(Token)match(input,25,FOLLOW_25_in_expr3958); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_25.add(op); - - pushFollow(FOLLOW_number_in_expr31049); - number67=number(); + pushFollow(FOLLOW_number_in_expr3962); + num=number(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, number67.getTree()); + if ( state.backtracking==0 ) stream_number.add(num.getTree()); + // AST REWRITE + // elements: num + // token labels: + // rule labels: num, retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_num=new RewriteRuleSubtreeStream(adaptor,"rule num",num!=null?num.getTree():null); + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); + + root_0 = (CommonTree)adaptor.nil(); + // 86:45: -> ^( UMINUS[op,\"UMINUS\"] $num) + { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:48: ^( UMINUS[op,\"UMINUS\"] $num) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(UMINUS, op, "UMINUS"), root_1); + adaptor.addChild(root_1, stream_num.nextTree()); + adaptor.addChild(root_0, root_1); + } + + } + + + retval.tree = root_0; + } } break; case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:22: '-' number + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:15: number { root_0 = (CommonTree)adaptor.nil(); - char_literal68=(Token)match(input,24,FOLLOW_24_in_expr31053); if (state.failed) return retval; - if ( state.backtracking==0 ) { - char_literal68_tree = (CommonTree)adaptor.create(char_literal68); - adaptor.addChild(root_0, char_literal68_tree); - } - - pushFollow(FOLLOW_number_in_expr31055); - number69=number(); + pushFollow(FOLLOW_number_in_expr31002); + number59=number(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, number69.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, number59.getTree()); } break; case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:35: STRINGCONST + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:24: STRINGCONST { root_0 = (CommonTree)adaptor.nil(); - STRINGCONST70=(Token)match(input,STRINGCONST,FOLLOW_STRINGCONST_in_expr31059); if (state.failed) return retval; + STRINGCONST60=(Token)match(input,STRINGCONST,FOLLOW_STRINGCONST_in_expr31006); if (state.failed) return retval; if ( state.backtracking==0 ) { - STRINGCONST70_tree = (CommonTree)adaptor.create(STRINGCONST70); - adaptor.addChild(root_0, STRINGCONST70_tree); + STRINGCONST60_tree = (CommonTree)adaptor.create(STRINGCONST60); + adaptor.addChild(root_0, STRINGCONST60_tree); } } break; case 4 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:49: '(' ! expr ^ ')' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:38: '(' ! expr ^ ')' ! { root_0 = (CommonTree)adaptor.nil(); - char_literal71=(Token)match(input,20,FOLLOW_20_in_expr31063); if (state.failed) return retval; - pushFollow(FOLLOW_expr_in_expr31066); - expr72=expr(); + char_literal61=(Token)match(input,21,FOLLOW_21_in_expr31010); if (state.failed) return retval; + pushFollow(FOLLOW_expr_in_expr31013); + expr62=expr(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot(expr72.getTree(), root_0); - char_literal73=(Token)match(input,21,FOLLOW_21_in_expr31069); if (state.failed) return retval; - if ( state.backtracking==0 ) { - char_literal73_tree = (CommonTree)adaptor.create(char_literal73); - adaptor.addChild(root_0, char_literal73_tree); - } - + if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot(expr62.getTree(), root_0); + char_literal63=(Token)match(input,22,FOLLOW_22_in_expr31016); if (state.failed) return retval; } break; @@ -2079,66 +2063,6 @@ public class XParser extends Parser { // $ANTLR end "expr3" - public static class number_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "number" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:88:1: number : ( INTCONST | FLOATCONST ); - public final XParser.number_return number() throws RecognitionException { - XParser.number_return retval = new XParser.number_return(); - retval.start = input.LT(1); - - CommonTree root_0 = null; - - Token set74=null; - - CommonTree set74_tree=null; - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:88:7: ( INTCONST | FLOATCONST ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g: - { - root_0 = (CommonTree)adaptor.nil(); - - - set74=input.LT(1); - if ( input.LA(1)==FLOATCONST||input.LA(1)==INTCONST ) { - input.consume(); - if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set74)); - state.errorRecovery=false; - state.failed=false; - } - else { - if (state.backtracking>0) {state.failed=true; return retval;} - MismatchedSetException mse = new MismatchedSetException(null,input); - throw mse; - } - } - - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "number" - - public static class compOp_return extends ParserRuleReturnScope { CommonTree tree; @Override @@ -2154,9 +2078,9 @@ public class XParser extends Parser { CommonTree root_0 = null; - Token set75=null; + Token set64=null; - CommonTree set75_tree=null; + CommonTree set64_tree=null; try { // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:90:7: ( '<' | '>' | '=' ) @@ -2165,10 +2089,10 @@ public class XParser extends Parser { root_0 = (CommonTree)adaptor.nil(); - set75=input.LT(1); - if ( (input.LA(1) >= 30 && input.LA(1) <= 32) ) { + set64=input.LT(1); + if ( (input.LA(1) >= 31 && input.LA(1) <= 33) ) { input.consume(); - if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set75)); + if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set64)); state.errorRecovery=false; state.failed=false; } @@ -2214,8 +2138,8 @@ public class XParser extends Parser { CommonTree root_0 = null; - ParserRuleReturnScope expr76 =null; - ParserRuleReturnScope cond277 =null; + ParserRuleReturnScope expr65 =null; + ParserRuleReturnScope cond266 =null; try { @@ -2225,17 +2149,17 @@ public class XParser extends Parser { root_0 = (CommonTree)adaptor.nil(); - pushFollow(FOLLOW_expr_in_cond1114); - expr76=expr(); + pushFollow(FOLLOW_expr_in_cond1049); + expr65=expr(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, expr76.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, expr65.getTree()); - pushFollow(FOLLOW_cond2_in_cond1116); - cond277=cond2(); + pushFollow(FOLLOW_cond2_in_cond1051); + cond266=cond2(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, cond277.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, cond266.getTree()); } @@ -2274,8 +2198,8 @@ public class XParser extends Parser { CommonTree root_0 = null; - ParserRuleReturnScope compOp78 =null; - ParserRuleReturnScope expr79 =null; + ParserRuleReturnScope compOp67 =null; + ParserRuleReturnScope expr68 =null; try { @@ -2285,17 +2209,17 @@ public class XParser extends Parser { root_0 = (CommonTree)adaptor.nil(); - pushFollow(FOLLOW_compOp_in_cond21127); - compOp78=compOp(); + pushFollow(FOLLOW_compOp_in_cond21062); + compOp67=compOp(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, compOp78.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, compOp67.getTree()); - pushFollow(FOLLOW_expr_in_cond21129); - expr79=expr(); + pushFollow(FOLLOW_expr_in_cond21064); + expr68=expr(); state._fsp--; if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, expr79.getTree()); + if ( state.backtracking==0 ) adaptor.addChild(root_0, expr68.getTree()); } @@ -2318,240 +2242,24 @@ public class XParser extends Parser { } // $ANTLR end "cond2" - - public static class minus_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "minus" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:97:1: minus : '-' ; - public final XParser.minus_return minus() throws RecognitionException { - XParser.minus_return retval = new XParser.minus_return(); - retval.start = input.LT(1); - - CommonTree root_0 = null; - - Token char_literal80=null; - - CommonTree char_literal80_tree=null; - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:97:6: ( '-' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:97:13: '-' - { - root_0 = (CommonTree)adaptor.nil(); - - - char_literal80=(Token)match(input,24,FOLLOW_24_in_minus1144); if (state.failed) return retval; - if ( state.backtracking==0 ) { - char_literal80_tree = (CommonTree)adaptor.create(char_literal80); - adaptor.addChild(root_0, char_literal80_tree); - } - - } - - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "minus" - - - public static class div_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "div" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:98:1: div : '/' ; - public final XParser.div_return div() throws RecognitionException { - XParser.div_return retval = new XParser.div_return(); - retval.start = input.LT(1); - - CommonTree root_0 = null; - - Token char_literal81=null; - - CommonTree char_literal81_tree=null; - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:98:4: ( '/' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:98:11: '/' - { - root_0 = (CommonTree)adaptor.nil(); - - - char_literal81=(Token)match(input,26,FOLLOW_26_in_div1155); if (state.failed) return retval; - if ( state.backtracking==0 ) { - char_literal81_tree = (CommonTree)adaptor.create(char_literal81); - adaptor.addChild(root_0, char_literal81_tree); - } - - } - - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "div" - - - public static class multiply_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "multiply" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:99:1: multiply : '*' ; - public final XParser.multiply_return multiply() throws RecognitionException { - XParser.multiply_return retval = new XParser.multiply_return(); - retval.start = input.LT(1); - - CommonTree root_0 = null; - - Token char_literal82=null; - - CommonTree char_literal82_tree=null; - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:99:9: ( '*' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:99:16: '*' - { - root_0 = (CommonTree)adaptor.nil(); - - - char_literal82=(Token)match(input,22,FOLLOW_22_in_multiply1166); if (state.failed) return retval; - if ( state.backtracking==0 ) { - char_literal82_tree = (CommonTree)adaptor.create(char_literal82); - adaptor.addChild(root_0, char_literal82_tree); - } - - } - - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "multiply" - - - public static class plus_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "plus" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:100:1: plus : '+' ; - public final XParser.plus_return plus() throws RecognitionException { - XParser.plus_return retval = new XParser.plus_return(); - retval.start = input.LT(1); - - CommonTree root_0 = null; - - Token char_literal83=null; - - CommonTree char_literal83_tree=null; - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:100:5: ( '+' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:100:13: '+' - { - root_0 = (CommonTree)adaptor.nil(); - - - char_literal83=(Token)match(input,23,FOLLOW_23_in_plus1178); if (state.failed) return retval; - if ( state.backtracking==0 ) { - char_literal83_tree = (CommonTree)adaptor.create(char_literal83); - adaptor.addChild(root_0, char_literal83_tree); - } - - } - - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "plus" - - // $ANTLR start synpred2_X - public final void synpred2_X_fragment() throws RecognitionException { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:17: ( 'read' ( 'print' )? ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:17: 'read' ( 'print' )? + // $ANTLR start synpred4_X + public final void synpred4_X_fragment() throws RecognitionException { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:17: ( 'read' ( 'print' )? ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:17: 'read' ( 'print' )? { - match(input,42,FOLLOW_42_in_synpred2_X571); if (state.failed) return; + match(input,43,FOLLOW_43_in_synpred4_X554); if (state.failed) return; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:24: ( 'print' )? - int alt9=2; - int LA9_0 = input.LA(1); - if ( (LA9_0==40) ) { - alt9=1; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:24: ( 'print' )? + int alt13=2; + int LA13_0 = input.LA(1); + if ( (LA13_0==41) ) { + alt13=1; } - switch (alt9) { + switch (alt13) { case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:24: 'print' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:24: 'print' { - match(input,40,FOLLOW_40_in_synpred2_X573); if (state.failed) return; + match(input,41,FOLLOW_41_in_synpred4_X556); if (state.failed) return; } break; @@ -2561,71 +2269,27 @@ public class XParser extends Parser { } } - // $ANTLR end synpred2_X + // $ANTLR end synpred4_X - // $ANTLR start synpred3_X - public final void synpred3_X_fragment() throws RecognitionException { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:35: ( 'read' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:35: 'read' + // $ANTLR start synpred5_X + public final void synpred5_X_fragment() throws RecognitionException { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:35: ( 'read' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:67:35: 'read' { - match(input,42,FOLLOW_42_in_synpred3_X578); if (state.failed) return; + match(input,43,FOLLOW_43_in_synpred5_X561); if (state.failed) return; } } - // $ANTLR end synpred3_X - - // $ANTLR start synpred11_X - public final void synpred11_X_fragment() throws RecognitionException { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:39: ( condElseStat ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:39: condElseStat - { - pushFollow(FOLLOW_condElseStat_in_synpred11_X714); - condElseStat(); - state._fsp--; - if (state.failed) return; - - } - - } - // $ANTLR end synpred11_X - - // $ANTLR start synpred12_X - public final void synpred12_X_fragment() throws RecognitionException { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:13: ( expr2 '+' expr ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:13: expr2 '+' expr - { - pushFollow(FOLLOW_expr2_in_synpred12_X848); - expr2(); - state._fsp--; - if (state.failed) return; - - match(input,23,FOLLOW_23_in_synpred12_X850); if (state.failed) return; - - pushFollow(FOLLOW_expr_in_synpred12_X852); - expr(); - state._fsp--; - if (state.failed) return; - - } - - } - // $ANTLR end synpred12_X + // $ANTLR end synpred5_X // $ANTLR start synpred13_X public final void synpred13_X_fragment() throws RecognitionException { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:15: ( expr2 '-' expr ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:15: expr2 '-' expr + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:39: ( condElseStat ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:39: condElseStat { - pushFollow(FOLLOW_expr2_in_synpred13_X885); - expr2(); - state._fsp--; - if (state.failed) return; - - match(input,24,FOLLOW_24_in_synpred13_X887); if (state.failed) return; - - pushFollow(FOLLOW_expr_in_synpred13_X889); - expr(); + pushFollow(FOLLOW_condElseStat_in_synpred13_X697); + condElseStat(); state._fsp--; if (state.failed) return; @@ -2634,57 +2298,143 @@ public class XParser extends Parser { } // $ANTLR end synpred13_X - // $ANTLR start synpred14_X - public final void synpred14_X_fragment() throws RecognitionException { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:13: ( expr3 '*' expr2 ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:13: expr3 '*' expr2 + // $ANTLR start synpred16_X + public final void synpred16_X_fragment() throws RecognitionException { + Token op=null; + + + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:13: ( expr2 (op= '+' |op= '-' ) expr ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:13: expr2 (op= '+' |op= '-' ) expr { - pushFollow(FOLLOW_expr3_in_synpred14_X952); - expr3(); + pushFollow(FOLLOW_expr2_in_synpred16_X846); + expr2(); state._fsp--; if (state.failed) return; - match(input,22,FOLLOW_22_in_synpred14_X954); if (state.failed) return; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:19: (op= '+' |op= '-' ) + int alt14=2; + int LA14_0 = input.LA(1); + if ( (LA14_0==24) ) { + alt14=1; + } + else if ( (LA14_0==25) ) { + alt14=2; + } - pushFollow(FOLLOW_expr2_in_synpred14_X956); - expr2(); + else { + if (state.backtracking>0) {state.failed=true; return;} + NoViableAltException nvae = + new NoViableAltException("", 14, 0, input); + throw nvae; + } + + switch (alt14) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:20: op= '+' + { + op=(Token)match(input,24,FOLLOW_24_in_synpred16_X851); if (state.failed) return; + + } + break; + case 2 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:82:29: op= '-' + { + op=(Token)match(input,25,FOLLOW_25_in_synpred16_X857); if (state.failed) return; + + } + break; + + } + + pushFollow(FOLLOW_expr_in_synpred16_X860); + expr(); state._fsp--; if (state.failed) return; } } - // $ANTLR end synpred14_X + // $ANTLR end synpred16_X - // $ANTLR start synpred15_X - public final void synpred15_X_fragment() throws RecognitionException { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:85:15: ( expr3 '/' expr2 ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:85:15: expr3 '/' expr2 + // $ANTLR start synpred18_X + public final void synpred18_X_fragment() throws RecognitionException { + Token op=null; + + + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:13: ( expr3 (op= '*' |op= '/' ) expr ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:13: expr3 (op= '*' |op= '/' ) expr { - pushFollow(FOLLOW_expr3_in_synpred15_X984); + pushFollow(FOLLOW_expr3_in_synpred18_X901); expr3(); state._fsp--; if (state.failed) return; - match(input,26,FOLLOW_26_in_synpred15_X986); if (state.failed) return; + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:19: (op= '*' |op= '/' ) + int alt15=2; + int LA15_0 = input.LA(1); + if ( (LA15_0==23) ) { + alt15=1; + } + else if ( (LA15_0==27) ) { + alt15=2; + } - pushFollow(FOLLOW_expr2_in_synpred15_X988); - expr2(); + else { + if (state.backtracking>0) {state.failed=true; return;} + NoViableAltException nvae = + new NoViableAltException("", 15, 0, input); + throw nvae; + } + + switch (alt15) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:20: op= '*' + { + op=(Token)match(input,23,FOLLOW_23_in_synpred18_X906); if (state.failed) return; + + } + break; + case 2 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:29: op= '/' + { + op=(Token)match(input,27,FOLLOW_27_in_synpred18_X912); if (state.failed) return; + + } + break; + + } + + pushFollow(FOLLOW_expr_in_synpred18_X915); + expr(); state._fsp--; if (state.failed) return; } } - // $ANTLR end synpred15_X + // $ANTLR end synpred18_X // Delegated rules - public final boolean synpred15_X() { + public final boolean synpred16_X() { state.backtracking++; int start = input.mark(); try { - synpred15_X_fragment(); // can never throw exception + synpred16_X_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 synpred5_X() { + state.backtracking++; + int start = input.mark(); + try { + synpred5_X_fragment(); // can never throw exception } catch (RecognitionException re) { System.err.println("impossible: "+re); } @@ -2708,11 +2458,11 @@ public class XParser extends Parser { state.failed=false; return success; } - public final boolean synpred14_X() { + public final boolean synpred4_X() { state.backtracking++; int start = input.mark(); try { - synpred14_X_fragment(); // can never throw exception + synpred4_X_fragment(); // can never throw exception } catch (RecognitionException re) { System.err.println("impossible: "+re); } @@ -2722,53 +2472,11 @@ public class XParser extends Parser { state.failed=false; return success; } - public final boolean synpred3_X() { + public final boolean synpred18_X() { state.backtracking++; int start = input.mark(); try { - synpred3_X_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 synpred11_X() { - state.backtracking++; - int start = input.mark(); - try { - synpred11_X_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 synpred2_X() { - state.backtracking++; - int start = input.mark(); - try { - synpred2_X_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 synpred12_X() { - state.backtracking++; - int start = input.mark(); - try { - synpred12_X_fragment(); // can never throw exception + synpred18_X_fragment(); // can never throw exception } catch (RecognitionException re) { System.err.println("impossible: "+re); } @@ -2781,100 +2489,87 @@ public class XParser extends Parser { - public static final BitSet FOLLOW_41_in_program473 = new BitSet(new long[]{0x0000000000000400L}); - public static final BitSet FOLLOW_ID_in_program475 = new BitSet(new long[]{0x0000000020000000L}); - public static final BitSet FOLLOW_29_in_program477 = new BitSet(new long[]{0x0000050000000000L}); - public static final BitSet FOLLOW_decllist_in_program479 = new BitSet(new long[]{0x0000000200000000L}); - public static final BitSet FOLLOW_statlist_in_program481 = new BitSet(new long[]{0x0000000002000000L}); - public static final BitSet FOLLOW_25_in_program483 = new BitSet(new long[]{0x0000000000000000L}); - public static final BitSet FOLLOW_EOF_in_program485 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_decl_in_decllist511 = new BitSet(new long[]{0x0000050000000000L}); - public static final BitSet FOLLOW_decllist_in_decllist513 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_modifier_in_decl539 = new BitSet(new long[]{0x0000000000000400L}); - public static final BitSet FOLLOW_ID_in_decl541 = new BitSet(new long[]{0x0000000008000000L}); - public static final BitSet FOLLOW_27_in_decl543 = new BitSet(new long[]{0x0000089000000000L}); - public static final BitSet FOLLOW_type_in_decl545 = new BitSet(new long[]{0x0000000020000000L}); - public static final BitSet FOLLOW_29_in_decl547 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_42_in_modifier571 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_40_in_modifier573 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_42_in_modifier578 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_40_in_modifier582 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_33_in_statlist620 = new BitSet(new long[]{0x0000206A00000400L}); - public static final BitSet FOLLOW_stat_in_statlist623 = new BitSet(new long[]{0x0000000020000000L}); - public static final BitSet FOLLOW_29_in_statlist625 = new BitSet(new long[]{0x0000206A00000400L}); - public static final BitSet FOLLOW_35_in_statlist629 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_assignstat_in_stat654 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_condstat_in_stat658 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_whilestat_in_stat662 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_forstat_in_stat666 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_statlist_in_stat670 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ID_in_assignstat680 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_28_in_assignstat682 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr_in_assignstat684 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_38_in_condstat706 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_cond_in_condstat708 = new BitSet(new long[]{0x0000100000000000L}); - public static final BitSet FOLLOW_44_in_condstat710 = new BitSet(new long[]{0x0000206200000400L}); - public static final BitSet FOLLOW_stat_in_condstat712 = new BitSet(new long[]{0x0000000400000002L}); - public static final BitSet FOLLOW_condElseStat_in_condstat714 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_34_in_condElseStat737 = new BitSet(new long[]{0x0000206200000400L}); - public static final BitSet FOLLOW_stat_in_condElseStat739 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_45_in_whilestat758 = new BitSet(new long[]{0x0000000000100000L}); - public static final BitSet FOLLOW_20_in_whilestat760 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_cond_in_whilestat762 = new BitSet(new long[]{0x0000000000200000L}); - public static final BitSet FOLLOW_21_in_whilestat764 = new BitSet(new long[]{0x0000206200000400L}); - public static final BitSet FOLLOW_stat_in_whilestat766 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_37_in_forstat789 = new BitSet(new long[]{0x0000000000100000L}); - public static final BitSet FOLLOW_20_in_forstat791 = new BitSet(new long[]{0x0000000000000400L}); - public static final BitSet FOLLOW_assignstat_in_forstat793 = new BitSet(new long[]{0x0000000020000000L}); - public static final BitSet FOLLOW_29_in_forstat795 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_cond_in_forstat797 = new BitSet(new long[]{0x0000000020000000L}); - public static final BitSet FOLLOW_29_in_forstat799 = new BitSet(new long[]{0x0000000000000400L}); - public static final BitSet FOLLOW_assignstat_in_forstat801 = new BitSet(new long[]{0x0000000000200000L}); - public static final BitSet FOLLOW_21_in_forstat803 = new BitSet(new long[]{0x0000206200000400L}); - public static final BitSet FOLLOW_stat_in_forstat805 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_expr848 = new BitSet(new long[]{0x0000000000800000L}); - public static final BitSet FOLLOW_23_in_expr850 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr_in_expr852 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_expr885 = new BitSet(new long[]{0x0000000001000000L}); - public static final BitSet FOLLOW_24_in_expr887 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr_in_expr889 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_expr919 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_expr2952 = new BitSet(new long[]{0x0000000000400000L}); - public static final BitSet FOLLOW_22_in_expr2954 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr2_in_expr2956 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_expr2984 = new BitSet(new long[]{0x0000000004000000L}); - public static final BitSet FOLLOW_26_in_expr2986 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr2_in_expr2988 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_expr21016 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_number_in_expr31049 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_24_in_expr31053 = new BitSet(new long[]{0x0000000000000A00L}); - public static final BitSet FOLLOW_number_in_expr31055 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_STRINGCONST_in_expr31059 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_20_in_expr31063 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr_in_expr31066 = new BitSet(new long[]{0x0000000000200000L}); - public static final BitSet FOLLOW_21_in_expr31069 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr_in_cond1114 = new BitSet(new long[]{0x00000001C0000000L}); - public static final BitSet FOLLOW_cond2_in_cond1116 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_compOp_in_cond21127 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr_in_cond21129 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_24_in_minus1144 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_26_in_div1155 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_22_in_multiply1166 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_23_in_plus1178 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_42_in_synpred2_X571 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_40_in_synpred2_X573 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_42_in_synpred3_X578 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_condElseStat_in_synpred11_X714 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_synpred12_X848 = new BitSet(new long[]{0x0000000000800000L}); - public static final BitSet FOLLOW_23_in_synpred12_X850 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr_in_synpred12_X852 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_synpred13_X885 = new BitSet(new long[]{0x0000000001000000L}); - public static final BitSet FOLLOW_24_in_synpred13_X887 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr_in_synpred13_X889 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_synpred14_X952 = new BitSet(new long[]{0x0000000000400000L}); - public static final BitSet FOLLOW_22_in_synpred14_X954 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr2_in_synpred14_X956 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_synpred15_X984 = new BitSet(new long[]{0x0000000004000000L}); - public static final BitSet FOLLOW_26_in_synpred15_X986 = new BitSet(new long[]{0x0000000001120A00L}); - public static final BitSet FOLLOW_expr2_in_synpred15_X988 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_42_in_program464 = new BitSet(new long[]{0x0000000000000400L}); + public static final BitSet FOLLOW_ID_in_program467 = new BitSet(new long[]{0x0000000040000000L}); + public static final BitSet FOLLOW_30_in_program469 = new BitSet(new long[]{0x00000A0400000400L}); + public static final BitSet FOLLOW_decllist_in_program472 = new BitSet(new long[]{0x0000000400000000L}); + public static final BitSet FOLLOW_statlist_in_program474 = new BitSet(new long[]{0x0000000004000000L}); + public static final BitSet FOLLOW_26_in_program476 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_EOF_in_program479 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_decl_in_decllist494 = new BitSet(new long[]{0x00000A0000000402L}); + public static final BitSet FOLLOW_modifier_in_decl520 = new BitSet(new long[]{0x0000000000000400L}); + public static final BitSet FOLLOW_ID_in_decl523 = new BitSet(new long[]{0x0000000010000000L}); + public static final BitSet FOLLOW_28_in_decl525 = new BitSet(new long[]{0x0000112000000000L}); + public static final BitSet FOLLOW_type_in_decl527 = new BitSet(new long[]{0x0000000040000000L}); + public static final BitSet FOLLOW_30_in_decl529 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_43_in_modifier554 = new BitSet(new long[]{0x0000020000000002L}); + public static final BitSet FOLLOW_41_in_modifier556 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_43_in_modifier561 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_41_in_modifier565 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_34_in_statlist603 = new BitSet(new long[]{0x000040D400000400L}); + public static final BitSet FOLLOW_stat_in_statlist606 = new BitSet(new long[]{0x0000000040000000L}); + public static final BitSet FOLLOW_30_in_statlist608 = new BitSet(new long[]{0x000040D400000400L}); + public static final BitSet FOLLOW_36_in_statlist612 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_assignstat_in_stat637 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_condstat_in_stat641 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_whilestat_in_stat645 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_forstat_in_stat649 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_statlist_in_stat653 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ID_in_assignstat663 = new BitSet(new long[]{0x0000000020000000L}); + public static final BitSet FOLLOW_29_in_assignstat665 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_expr_in_assignstat667 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_39_in_condstat689 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_cond_in_condstat691 = new BitSet(new long[]{0x0000200000000000L}); + public static final BitSet FOLLOW_45_in_condstat693 = new BitSet(new long[]{0x000040C400000400L}); + public static final BitSet FOLLOW_stat_in_condstat695 = new BitSet(new long[]{0x0000000800000002L}); + public static final BitSet FOLLOW_condElseStat_in_condstat697 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_35_in_condElseStat720 = new BitSet(new long[]{0x000040C400000400L}); + public static final BitSet FOLLOW_stat_in_condElseStat722 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_46_in_whilestat741 = new BitSet(new long[]{0x0000000000200000L}); + public static final BitSet FOLLOW_21_in_whilestat743 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_cond_in_whilestat745 = new BitSet(new long[]{0x0000000000400000L}); + public static final BitSet FOLLOW_22_in_whilestat747 = new BitSet(new long[]{0x000040C400000400L}); + public static final BitSet FOLLOW_stat_in_whilestat749 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_38_in_forstat772 = new BitSet(new long[]{0x0000000000200000L}); + public static final BitSet FOLLOW_21_in_forstat774 = new BitSet(new long[]{0x0000000000000400L}); + public static final BitSet FOLLOW_assignstat_in_forstat776 = new BitSet(new long[]{0x0000000040000000L}); + public static final BitSet FOLLOW_30_in_forstat778 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_cond_in_forstat780 = new BitSet(new long[]{0x0000000040000000L}); + public static final BitSet FOLLOW_30_in_forstat782 = new BitSet(new long[]{0x0000000000000400L}); + public static final BitSet FOLLOW_assignstat_in_forstat784 = new BitSet(new long[]{0x0000000000400000L}); + public static final BitSet FOLLOW_22_in_forstat786 = new BitSet(new long[]{0x000040C400000400L}); + public static final BitSet FOLLOW_stat_in_forstat788 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_expr2_in_expr846 = new BitSet(new long[]{0x0000000003000000L}); + public static final BitSet FOLLOW_24_in_expr851 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_25_in_expr857 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_expr_in_expr860 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_expr2_in_expr890 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_expr3_in_expr2901 = new BitSet(new long[]{0x0000000008800000L}); + public static final BitSet FOLLOW_23_in_expr2906 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_27_in_expr2912 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_expr_in_expr2915 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_expr3_in_expr2945 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_25_in_expr3958 = new BitSet(new long[]{0x0000000000000A00L}); + public static final BitSet FOLLOW_number_in_expr3962 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_number_in_expr31002 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_STRINGCONST_in_expr31006 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_21_in_expr31010 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_expr_in_expr31013 = new BitSet(new long[]{0x0000000000400000L}); + public static final BitSet FOLLOW_22_in_expr31016 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_expr_in_cond1049 = new BitSet(new long[]{0x0000000380000000L}); + public static final BitSet FOLLOW_cond2_in_cond1051 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_compOp_in_cond21062 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_expr_in_cond21064 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_43_in_synpred4_X554 = new BitSet(new long[]{0x0000020000000002L}); + public static final BitSet FOLLOW_41_in_synpred4_X556 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_43_in_synpred5_X561 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_condElseStat_in_synpred13_X697 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_expr2_in_synpred16_X846 = new BitSet(new long[]{0x0000000003000000L}); + public static final BitSet FOLLOW_24_in_synpred16_X851 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_25_in_synpred16_X857 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_expr_in_synpred16_X860 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_expr3_in_synpred18_X901 = new BitSet(new long[]{0x0000000008800000L}); + public static final BitSet FOLLOW_23_in_synpred18_X906 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_27_in_synpred18_X912 = new BitSet(new long[]{0x0000000002220A00L}); + public static final BitSet FOLLOW_expr_in_synpred18_X915 = new BitSet(new long[]{0x0000000000000002L}); } diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.g b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.g index d6cb0b7..d892806 100644 --- a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.g +++ b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.g @@ -25,7 +25,8 @@ tokens { FLOATCONST; WS; MODIFIER; - DECLIST; + DECLLIST; + UMINUS; PROGRAM; DECL; TYPE; @@ -54,17 +55,15 @@ ESCAPE: '\\' ('\"' |'\'' | '\\'); WS: ('\t' | ' ' | '\r' | '\n' | '\f')+ { skip(); }; -INVALID: .; - fragment DIGIT: ('0'..'9'); // -- Parser stuff -program: 'program' ID ';' decllist statlist '.' EOF -> ^(PROGRAM ID decllist statlist); +program: 'program'^ ID ';'! decllist statlist '.'! EOF!; // Declaration -decllist: decl decllist -> ^(DECLIST decl decllist); -decl: modifier ID ':' type ';' -> ^(DECL modifier ID type); +decllist: decl* -> ^(DECLLIST decl*); +decl: modifier? ID ':' type ';' -> ^(DECL modifier? ID type); modifier: 'read' 'print'? | 'read' | 'print'; type: 'int' | 'float' | 'string'; @@ -78,23 +77,16 @@ whilestat: 'while' '(' cond ')' stat -> ^('while' cond stat); forstat: 'for' '(' assignstat ';' cond ';' assignstat ')' stat -> ^('for' assignstat cond assignstat stat); -expr: expr2 '+' expr -> ^('+' expr2 expr) - | expr2 '-' expr -> ^('-' expr2 expr) - | expr2 -> ^(expr2); -expr2: expr3 '*' expr2 -> ^('*' expr3 expr2) - | expr3 '/' expr2 -> ^('/' expr3 expr2) - | expr3 -> ^(expr3); -expr3: number | '-' number | STRINGCONST | '('! expr^ ')'; +// Expressions number: INTCONST | FLOATCONST; +expr: expr2 (op='+' | op='-') expr -> ^($op expr2 expr) + | expr2; +expr2: expr3 (op='*' | op='/') expr -> ^($op expr3 expr) + | expr3; +expr3: op='-' num=number -> ^(UMINUS[op,"UMINUS"] $num) + | number | STRINGCONST | '('! expr^ ')'!; +// Conditions and comparison compOp: '<' | '>' | '='; cond: expr cond2; cond2: compOp expr; - -// -- Dummy rules -// Das sollte dafür sorgen, dass implizite Tokens auch ihre Tokens bekommen -// TODO: Remove this -minus: '-'; -div: '/'; -multiply: '*'; -plus: '+'; diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.tokens b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.tokens index f7075a8..e3113d8 100644 --- a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.tokens +++ b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.tokens @@ -1,4 +1,3 @@ -T__20=20 T__21=21 T__22=22 T__23=23 @@ -24,8 +23,9 @@ T__42=42 T__43=43 T__44=44 T__45=45 +T__46=46 DECL=4 -DECLIST=5 +DECLLIST=5 DIGIT=6 ESCAPE=7 EXPR=8 @@ -39,30 +39,31 @@ STAT=15 STATLIST=16 STRINGCONST=17 TYPE=18 -WS=19 -'('=20 -')'=21 -'*'=22 -'+'=23 -'-'=24 -'.'=25 -'/'=26 -':'=27 -':='=28 -';'=29 -'<'=30 -'='=31 -'>'=32 -'begin'=33 -'else'=34 -'end'=35 -'float'=36 -'for'=37 -'if'=38 -'int'=39 -'print'=40 -'program'=41 -'read'=42 -'string'=43 -'then'=44 -'while'=45 +UMINUS=19 +WS=20 +'('=21 +')'=22 +'*'=23 +'+'=24 +'-'=25 +'.'=26 +'/'=27 +':'=28 +':='=29 +';'=30 +'<'=31 +'='=32 +'>'=33 +'begin'=34 +'else'=35 +'end'=36 +'float'=37 +'for'=38 +'if'=39 +'int'=40 +'print'=41 +'program'=42 +'read'=43 +'string'=44 +'then'=45 +'while'=46 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer$DFA12.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer$DFA12.class index cb15dbf40bd14d4e3bee7d9e94f0903e11b8270c..0867e6d278710603038eb0fef7d53b303d7f74b4 100644 GIT binary patch delta 520 zcmXAmOD_Xa6vzL!k6UFT7DH9hL20M&sZyrYv-PSfX;?PVHfhr!QFanbYni1_Ar=w~ zu_ZRXkT_@D#qa#?y*cOH$A|A_;Qs6P?HxcCCtj!s_hT3lHk}dmB8E6yf-T9GVoS3b zY#FwBwk+EM+ag(ddqAAwK7C{`6r zVOl`}YaXmC*ubWOEygyZ$S7e)!7gKuvClZ*jWXkqQDGdRs^Az^A^e7Em|E?s+q&#& zrWVm^^?Jt8?(CT1Xmy>hZd%PQT0xiT*7E|<$Ip=U?b7_th<++C*laaAz0TET<@Vyd zbuA$Ftf2d6lFqBrqXA-Q2y_cF2LxTkPaLxzVdL8eiZ2F58zgOgao1R0N#U0>KnuVnX`LCEg2;ZbwkN74*3Yv(KMRO3J2 Ufmxb4Foz(;e%e#%hbH0r18=TFhX4Qo literal 3008 zcma);TWlLy9mc;iv5ymHoVsa}ZR?b}7rM5ayWMn~q}`-xvY2&~w)Uo%G|f(&X*!K# zr(>rL-G!y>!Y=FuiOWkXlvWrOL4{z2Tb7kTAn^hcNIW6IGlFLX5{PB_&delQ(TdHe zJ^%0bpL4!B=gj#}{OkYx^k)E4up6)wLqSAvRHQhRkmHM<&&nuNt>ZDQ=^_XnLDV(kYKKw9%GeIV^L9`*K)C&Pj1#nhCR<2m({XGH) zGV^Bl{FS*I-TBhevQ;qcZlhQ!*sIHiT_&8%n5(8e$Pq(U(W)F1cs{ndA(@iB;Cgl2 zE5(YnWOg4n%H|m}Us@kV<&DCWVOxs5 zq)$y-z<*+Vq_B)P&Q@%zxIpK&^0Jw?j6$|zRLq=h6w8*|e@`s^gy*D-6%I9x zrNMYwAdunOX8R5a2$FP&FG_HMa@Hy?uT%tf{a+Vukk?O}m5Y0BB& zkwRr`HE%kr;`~FLcz*GuvFvPn0Oz<_8~5oL%$8Q{ygAO}BGBj_kuJ3lI@+;I$0u-J z$J2=ExPYzzrgdDzjE+mHnN`h;sxdI9Bd?ly)tIWetZpo*=89@8)m+7*jsg~i*w;JI zI}pv47R_QgIuMOTbF;I3J<*q)*z3hUFDAX1^5P*c_IvTL7oYLs5jQ41zoh4v^!$>Z zU()kSdVWdIFX{OuJ-?*qm-75lo?puIOL=}N&o8C?(kE0iksFB~-r zt(RG{xEtE^DASHyPaCT$qgvf{H1etjSZC`ZakKR&xn{G^J&@ z6~0(n)paWN_@^TMF`ol&lHauLk}Ys>)Abvl!XAF>Bm7e%!eLdBRCN%1#k<)?Ne`eg z1B@pQ)*up(pd~tLs7r+P8hnX&;jck51Zt>fXs98`&{%`c5UQbxVM`5RhOIR;|Aqynr4#jl=RHj>#E}$xGPFF;RCW*oOlo&dHgv za1_5GbQbD_dNc22RQKwdxBZa8eXLX|X*hPed)u?)zM+G?qJXa*5&;f*zhffO?~8n2 z4ZrPpu;I0n|CRM{r|&(qXz2HAL#_Th2)Fv1TfdEl@W9Z0$Z-2mBQd9dC~vX>0U z?xNl|bYB~$j#K-oQ`8A+Ngbm;NFAVVr|zV#rw&th-KDweR7dDmz+U1XgaHNYCjLqo zRM0^96Jba}knlUgQ3Z{JUlNWf&PBG-&vlMzI&5d|5p#Q0 zhaH6P5iTm&N%$6_!8H$7v7My56skJ&j;f9kcI5i+IGOq?Om=Hr!zG3$xA*RC`RR%#3}i@n2~RYU&$|v-^;IvKg&18-{e~wswCH|pQ?vBmLXLy`dGS}_8yW{ zb?|Es`Qy0@K8@cb96~=`4s%CF(enYK0X!rAjdr2^3;qxIgI6^2(*NfQwS@T3uW!@! mP)Pb4TX==Ef70j(jeLA?8y`79tzi(KWDGL5lRvNb!}nj`fv2PZ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer$DFA9.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer$DFA9.class index 226d08d3dd014b32c06ecc5fb07ef957e412743b..fcf7a54411a1078ae0bb3dd67ca6c6782a87e94d 100644 GIT binary patch delta 67 zcmeC=>g3ws!o*~1u-T1Co=LNlfs?h1fseJDL4>u3L7KIfL5a1GL6fzg!GLuFgE{L& X20PYC46dw`C-<@VF;1I&mqiBv;xZ39 delta 67 zcmV-J0KET+3W*A^L;?adIkQFr9|9?(00{-801gGE02BqL02>9T03rpb04W8j05Aor Z05=7z06qn*07V6@la2&V0kD(Z1S|(M5PARr diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer.class index 24cf2b60ffef5ccc5e479ffaa26e672bfcf2c279..91d65e0964e3b910aef2b0d8a478eb8b286c809a 100644 GIT binary patch literal 16409 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

W4eE5_+IE;qJwm2nQ&80Ydz<9yy~T)-C^ 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]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 x;zXF4J@6Z_Bh delta 29 hcmcc4dYyHH0TW}%WJ4w!#`4K|KoZ0jp1hAq5&(%>2!j9s diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$compOp_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$compOp_return.class index 5b4e7dd8a11be5d97b201d7cf6551c35c25d198c..3a37e601ae549fd66c8a3531aa3f65d3f55ce04b 100644 GIT binary patch delta 25 fcmX@jdYW~E3KOHyWK|{`M$yShKvHP(d?pB}A`@fRWF;mW#@@;CK(cG{93~wAXD0`e delta 25 gcmX@XdV+O>A`|1a$x2K%j5jC81IcTX=P>C20C4jNb^rhX diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$condElseStat_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$condElseStat_return.class index c94606f9dc4c6604f3574b84d0f0a924138cc42b..1f2c1ee2a17e9f19bfecaf4d03ec809c41764c83 100644 GIT binary patch delta 29 hcmcc1dY5&B853jp70Lk-{mon)90CQsqmjD0& diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$decl_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$decl_return.class index 0e627a863619e8ce7b06ef1e16b5dd36253f4e9c..5dc301febf1f003daf6e46c1d699684dc42a919e 100644 GIT binary patch delta 25 fcmX@gdX#m8922ALWO*hVMuo{SKvH({OeP%wSN#S# delta 25 fcmX@gdX#m89229~WO*hVM%~FVKvHY+OeP%wS*iwL diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$decllist_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$decllist_return.class index 4ff9fcbfec9437808ebe95e5a425c2c3f65cdda8..33f687acd7d38b26cc391ec3b48b90955a19130c 100644 GIT binary patch delta 25 gcmcb}dXaU578B#v$=Xadj5{W00LiVBmon)90B{KiNdN!< delta 25 gcmcb}dXaU578B!@$=XadjMpb;0Ld$pmon)90CWflrT_o{ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$div_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$div_return.class deleted file mode 100644 index 3bc8f93958567beea554841eb26920d1b5604c6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmb7B%SyvQ6g|^dY>c+n`qqW0*t&2;+$n+-M6sx}BJO084sA*@Dbu9-Sqh@y!VmDH z#GAGtS{J&Q`#$%cd*}V*^$oxtR!pQZn?(w9CW(0iiw2e$QlXZTVXYeICKoF7G}n;| zU0?Dz!z+RB2kMH$7-_{|ohl`D#S`7Gq}*<`A$g-^-*G4KJFX}7fYNHy$ihi#%EDpQP>top_T!HODIbWSYL0(IavslVlTDk|ueabev0X zy?{NEk-#{~OdQOfz#`ik6kq~*@>skc$?xDNBp!Z%&ql%dBLYv4fS-~43I1(z0>%D_ P8RSTt)Fy=mOd|UUE+C!j diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$expr2_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$expr2_return.class index 25678972a66d87b00095af64cda1779b7eaad291..28f8e11032105971d23b0e622b95cc2694bcbce7 100644 GIT binary patch delta 25 gcmX@XdV+O>A`|1>$x2K%j0+~m1If9Q=P>C20BM>B%K!iX delta 25 fcmX@XdV+O>A`@fpWF;mW#tD<-fn@LGIZQeLXNm`# diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$expr3_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$expr3_return.class index a3da040cafb823c8c4ef7c7d624618aeee315e1c..cd9c5bcea35d5896ade2575c55ab93d410c3cbcf 100644 GIT binary patch delta 25 fcmX@XdV+O>A`@fgWF;mW#+=FVKr(ak93~wAV&(@g delta 25 fcmX@XdV+O>A`@fJWF;mW#{S9iK(c4@93~wAXK4qR diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$expr_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$expr_return.class index 42409790ad2ec8a9dfbdd5d2365505df46314767..e802c5b6f6c66b9d2908559e57d92a8ed75434ac 100644 GIT binary patch delta 25 gcmX@gdX#m8924Wk$?{A#j8`Vd0LhD!XENyk0BZlK>)VB>*t&2)x>E!x2trY5OK~UDbf_uGq)Za^vlK+Zg&*KY zi8pN*+PbKVx$krDxpzLl-ai0Tuw^2R|I+Azp+7I0Jy}sj0JtXzm7djy4=6axa ze>NdvMpuS0M~1ypd8$`Bl3o?T{Lo4L{PhJg3RTZ8YsLF0?R%tc45= z3ya7b*km~RKUs$T$x9EHsz5Zsg2dApxHt*Uoe_9x0{n{PIQXy02^0n+ PidZ0RQkxXkFpumvkj^NHAZx^ECV_`Om3q_EEAQTlX#hs+n&`!x@N}BPp5&R+!8}988Yvl;OOdH_p{+99 z#M%a-iNmTiWl>dB87oD;P!(Z< zB>ygEY$IqBI*gSKTI%k~NE;i?;2mo%O;L$FGoAoVv7$Qij#_jXy0kLAa*47F-Ek=cm=C^er`VFQVA^@`#3$yzhZq3DCm; z@*Z+~#Sc!U$z7*^%r|@-tG8J>-Xe^2i~P$NR`HNcWO| Vo1DT#XT&55PzBx(Cz% delta 28 hcmX@jdYW~EG7}Sr(qvU8YbFlW$w?qeY4Us~9ROzo27~|r diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$plus_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$plus_return.class deleted file mode 100644 index 3db831a420842067ae63e124dab173998289b5af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709 zcmb7B%SyvQ6g|_XjZLG~`hG1$#mB-ybf*YX5QL&)OK~TYbZ8^Vq)Za^vlNPg3qQb* z5^vfr)VipPx$krDxpzK3-`)WnV%0(pa|IZfw@56QSTeE9V8mKVhV^QwTU@Bv*IXwm z_5#V%46lSi5UM(vM-2I6PkHePLw0+oLD)*zBy6ebDS43uj?{JG_!KEuLs$3>p}o`} z1dX`uMGVD`pG3D>#)(!8_PJ70S9}pgl9C72rsU1G^T6FO=y<-=eNK-Zp(Ao`u6lao zTMwdTwq%?#WZ2x^8EKIjs=E{Sg8M?X_@#3v-Iy9#wJ_1HJfp!xZ7^&vEwnL)f{i>( z8&fEoSYg=zH&=$O;WPJFx=ws~-8)Ln4Lj*7BX!3beP)h+n9(D4B(r1_S&|lcoOGJY z?Y@FNlaWD@WIhcRy0FQ%`vn-sBzY{|kK|8q7n!GD;MZaBX diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$stat_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$stat_return.class index 336315f6763760361a2baf0e7e992efed2737c8d..78e11b3c93a69348b575be493e7e57e543268f88 100644 GIT binary patch delta 25 gcmX@gdX#m8924Wy$?{A#j4vj~0LiD5XENyk0CB|#kpKVy delta 25 gcmX@gdX#m8924Wc$?{A#j1MQr0LgokXENyk0C3(2d;kCd diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$statlist_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$statlist_return.class index 8ef0fb46f4a80fdb652e8c702d21351189514bc3..683cf5fb8df0123cbc1b1092d71756a3707c8ae6 100644 GIT binary patch delta 25 fcmcb}dXaU5787IkWNjuJ#=OZHKr(ysQYIY$W`753 delta 25 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 a1KtLB4B#5TL4dad<^kRTm;!hwh5rwX$mDeZ literal 54573 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 E9|0y(VE_OC