From 2e62631386c6418edc797422502264c4afa2abd8 Mon Sep 17 00:00:00 2001 From: Humenius Date: Wed, 3 Jun 2020 14:02:58 +0200 Subject: [PATCH] [11 - Antlr Parser] Fix Scanner tests --- .idea/modules.xml | 1 + .idea/runConfigurations/Run_Antlr_builder.xml | 4 +- .idea/workspace.xml | 71 +- CC-Praxis-Antlr Parser fuer X-Leer/X.tokens | 63 - .../XLexer.java | 1325 -------- .../XParser.java | 2820 ----------------- .../src/de/dhbw/compiler/antlrxparser/X.g | 51 +- .../de/dhbw/compiler/antlrxparser/X.tokens | 68 + .../de/dhbw/compiler/antlrxparser/XLexer.java | 1511 ++++++++- .../dhbw/compiler/antlrxparser/XParser.java | 2802 +++++++++++++++- .../de/dhbw/compiler/antlrxparser/X.g | 51 +- .../de/dhbw/compiler/antlrxparser/X.tokens | 68 + .../compiler/antlrxparser/XLexer$DFA12.class | Bin 0 -> 3008 bytes .../compiler/antlrxparser/XLexer$DFA4.class | Bin 1224 -> 0 bytes .../compiler/antlrxparser/XLexer$DFA9.class | Bin 0 -> 1289 bytes .../dhbw/compiler/antlrxparser/XLexer.class | Bin 5952 -> 16774 bytes .../XParser$assignstat_return.class | Bin 0 -> 727 bytes .../antlrxparser/XParser$compOp_return.class | Bin 0 -> 715 bytes .../antlrxparser/XParser$cond2_return.class | Bin 0 -> 712 bytes .../XParser$condElseStat_return.class | Bin 0 -> 733 bytes .../antlrxparser/XParser$cond_return.class | Bin 0 -> 709 bytes .../XParser$condstat_return.class | Bin 0 -> 721 bytes .../antlrxparser/XParser$decl_return.class | Bin 0 -> 709 bytes .../XParser$decllist_return.class | Bin 0 -> 721 bytes .../antlrxparser/XParser$div_return.class | Bin 0 -> 706 bytes .../antlrxparser/XParser$expr2_return.class | Bin 0 -> 712 bytes .../antlrxparser/XParser$expr3_return.class | Bin 0 -> 712 bytes .../antlrxparser/XParser$expr_return.class | Bin 0 -> 709 bytes .../antlrxparser/XParser$forstat_return.class | Bin 0 -> 718 bytes .../antlrxparser/XParser$minus_return.class | Bin 0 -> 712 bytes .../XParser$modifier_return.class | Bin 0 -> 721 bytes .../XParser$multiply_return.class | Bin 0 -> 721 bytes .../antlrxparser/XParser$number_return.class | Bin 0 -> 715 bytes .../antlrxparser/XParser$plus_return.class | Bin 0 -> 709 bytes .../antlrxparser/XParser$program_return.class | Bin 718 -> 718 bytes .../antlrxparser/XParser$stat_return.class | Bin 0 -> 709 bytes .../XParser$statlist_return.class | Bin 0 -> 721 bytes .../antlrxparser/XParser$type_return.class | Bin 0 -> 709 bytes .../XParser$whilestat_return.class | Bin 0 -> 724 bytes .../dhbw/compiler/antlrxparser/XParser.class | Bin 4258 -> 54573 bytes .../ÜB-Praxis-JFlex Scanner für AS-Leer.iml | 31 +- 41 files changed, 4415 insertions(+), 4451 deletions(-) delete mode 100644 CC-Praxis-Antlr Parser fuer X-Leer/X.tokens delete mode 100644 CC-Praxis-Antlr Parser fuer X-Leer/XLexer.java delete mode 100644 CC-Praxis-Antlr Parser fuer X-Leer/XParser.java create mode 100644 CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.tokens create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.tokens create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer$DFA12.class delete mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer$DFA4.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer$DFA9.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$assignstat_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$compOp_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$cond2_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$condElseStat_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$cond_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$condstat_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$decl_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$decllist_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$div_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$expr2_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$expr3_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$expr_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$forstat_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$minus_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$modifier_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$multiply_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$number_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$plus_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$stat_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$statlist_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$type_return.class create mode 100644 out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$whilestat_return.class diff --git a/.idea/modules.xml b/.idea/modules.xml index f77fb4f..a9a5ba8 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -3,6 +3,7 @@ + \ No newline at end of file diff --git a/.idea/runConfigurations/Run_Antlr_builder.xml b/.idea/runConfigurations/Run_Antlr_builder.xml index dd6be14..b4bf6d7 100644 --- a/.idea/runConfigurations/Run_Antlr_builder.xml +++ b/.idea/runConfigurations/Run_Antlr_builder.xml @@ -2,8 +2,8 @@ \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index bb31f4d..514751e 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,9 +2,21 @@ + + - + + + + + + + + + + + - + @@ -65,7 +78,7 @@ - + @@ -146,10 +159,9 @@ - - - + + @@ -166,7 +178,8 @@ 1591172713288 - + + @@ -182,42 +195,52 @@ - + - - + + - - + + + + + + + + + + - - + + - - + + - - + + - - - + + + - - + + + + \ No newline at end of file diff --git a/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens b/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens deleted file mode 100644 index 6d16bd0..0000000 --- a/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens +++ /dev/null @@ -1,63 +0,0 @@ -T__23=23 -T__24=24 -T__25=25 -T__26=26 -T__27=27 -T__28=28 -T__29=29 -T__30=30 -T__31=31 -T__32=32 -T__33=33 -T__34=34 -T__35=35 -T__36=36 -T__37=37 -T__38=38 -T__39=39 -T__40=40 -T__41=41 -T__42=42 -BINOP=4 -DECL=5 -DECLIST=6 -ESCAPE=7 -EXPR=8 -FLOATCONST=9 -ID=10 -INTCONST=11 -MODIFIER=12 -PROGRAM=13 -STAT=14 -STATLIST=15 -STRINGCONST=16 -TYPE=17 -UDIVIDE=18 -UMINUS=19 -UMULTIPLY=20 -UPLUS=21 -WS=22 -'('=23 -')'=24 -'*'=20 -'+'=21 -'-'=19 -'.'=25 -'/'=18 -':'=26 -':='=27 -';'=28 -'begin'=29 -'else'=30 -'end'=31 -'float'=32 -'for'=33 -'if'=34 -'int'=35 -'print'=36 -'program'=37 -'read print'=38 -'read'=39 -'string'=40 -'then'=41 -'while'=42 diff --git a/CC-Praxis-Antlr Parser fuer X-Leer/XLexer.java b/CC-Praxis-Antlr Parser fuer X-Leer/XLexer.java deleted file mode 100644 index de93c5b..0000000 --- a/CC-Praxis-Antlr Parser fuer X-Leer/XLexer.java +++ /dev/null @@ -1,1325 +0,0 @@ -// $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 13:09:27 -package de.dhbw.compiler.antlrxparser; - -import org.antlr.runtime.*; -import java.util.Stack; -import java.util.List; -import java.util.ArrayList; - -@SuppressWarnings("all") -public class XLexer extends Lexer { - public static final int EOF=-1; - public static final int T__23=23; - public static final int T__24=24; - public static final int T__25=25; - public static final int T__26=26; - public static final int T__27=27; - public static final int T__28=28; - public static final int T__29=29; - public static final int T__30=30; - public static final int T__31=31; - public static final int T__32=32; - public static final int T__33=33; - public static final int T__34=34; - public static final int T__35=35; - public static final int T__36=36; - public static final int T__37=37; - public static final int T__38=38; - public static final int T__39=39; - public static final int T__40=40; - public static final int T__41=41; - public static final int T__42=42; - public static final int BINOP=4; - public static final int DECL=5; - public static final int DECLIST=6; - public static final int ESCAPE=7; - public static final int EXPR=8; - public static final int FLOATCONST=9; - public static final int ID=10; - public static final int INTCONST=11; - public static final int MODIFIER=12; - public static final int PROGRAM=13; - public static final int STAT=14; - public static final int STATLIST=15; - public static final int STRINGCONST=16; - public static final int TYPE=17; - public static final int UDIVIDE=18; - public static final int UMINUS=19; - public static final int UMULTIPLY=20; - public static final int UPLUS=21; - public static final int WS=22; - - // delegates - // delegators - public Lexer[] getDelegates() { - return new Lexer[] {}; - } - - public XLexer() {} - public XLexer(CharStream input) { - this(input, new RecognizerSharedState()); - } - public XLexer(CharStream input, RecognizerSharedState state) { - super(input,state); - } - @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 "UDIVIDE" - public final void mUDIVIDE() throws RecognitionException { - try { - int _type = UDIVIDE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:9:9: ( '/' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:9:11: '/' - { - match('/'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "UDIVIDE" - - // $ANTLR start "UMINUS" - public final void mUMINUS() throws RecognitionException { - try { - int _type = UMINUS; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:10:8: ( '-' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:10:10: '-' - { - match('-'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "UMINUS" - - // $ANTLR start "UMULTIPLY" - public final void mUMULTIPLY() throws RecognitionException { - try { - int _type = UMULTIPLY; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:11:11: ( '*' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:11:13: '*' - { - match('*'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "UMULTIPLY" - - // $ANTLR start "UPLUS" - public final void mUPLUS() throws RecognitionException { - try { - int _type = UPLUS; - 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: '+' - { - match('+'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "UPLUS" - - // $ANTLR start "T__23" - public final void mT__23() throws RecognitionException { - 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:13:7: ( '(' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:13:9: '(' - { - match('('); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__23" - - // $ANTLR start "T__24" - public final void mT__24() throws RecognitionException { - 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:14:7: ( ')' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:14:9: ')' - { - match(')'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__24" - - // $ANTLR start "T__25" - public final void mT__25() throws RecognitionException { - 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:15:7: ( '.' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:15:9: '.' - { - match('.'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__25" - - // $ANTLR start "T__26" - public final void mT__26() throws RecognitionException { - 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:16:7: ( ':' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:16:9: ':' - { - match(':'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__26" - - // $ANTLR start "T__27" - public final void mT__27() throws RecognitionException { - 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:17:7: ( ':=' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:17:9: ':=' - { - match(":="); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__27" - - // $ANTLR start "T__28" - public final void mT__28() throws RecognitionException { - 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:18:7: ( ';' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:18:9: ';' - { - match(';'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__28" - - // $ANTLR start "T__29" - public final void mT__29() throws RecognitionException { - 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:19:7: ( 'begin' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:19:9: 'begin' - { - match("begin"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__29" - - // $ANTLR start "T__30" - public final void mT__30() throws RecognitionException { - 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:20:7: ( 'else' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:20:9: 'else' - { - match("else"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__30" - - // $ANTLR start "T__31" - public final void mT__31() throws RecognitionException { - 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:21:7: ( 'end' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:21:9: 'end' - { - match("end"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__31" - - // $ANTLR start "T__32" - public final void mT__32() throws RecognitionException { - 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:22:7: ( 'float' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:22:9: 'float' - { - match("float"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__32" - - // $ANTLR start "T__33" - public final void mT__33() throws RecognitionException { - 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:23:7: ( 'for' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:23:9: 'for' - { - match("for"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__33" - - // $ANTLR start "T__34" - public final void mT__34() throws RecognitionException { - 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:24:7: ( 'if' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:24:9: 'if' - { - match("if"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__34" - - // $ANTLR start "T__35" - public final void mT__35() throws RecognitionException { - 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:25:7: ( 'int' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:25:9: 'int' - { - match("int"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__35" - - // $ANTLR start "T__36" - public final void mT__36() throws RecognitionException { - 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:26:7: ( 'print' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:26:9: 'print' - { - match("print"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__36" - - // $ANTLR start "T__37" - public final void mT__37() throws RecognitionException { - 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:27:7: ( 'program' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:27:9: 'program' - { - match("program"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__37" - - // $ANTLR start "T__38" - public final void mT__38() throws RecognitionException { - 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:28:7: ( 'read print' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:28:9: 'read print' - { - match("read print"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__38" - - // $ANTLR start "T__39" - public final void mT__39() throws RecognitionException { - 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:29:7: ( 'read' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:29:9: 'read' - { - match("read"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__39" - - // $ANTLR start "T__40" - public final void mT__40() throws RecognitionException { - 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:30:7: ( 'string' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:30:9: 'string' - { - match("string"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__40" - - // $ANTLR start "T__41" - public final void mT__41() throws RecognitionException { - 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:31:7: ( 'then' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:31:9: 'then' - { - match("then"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__41" - - // $ANTLR start "T__42" - public final void mT__42() throws RecognitionException { - 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:32:7: ( 'while' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:32:9: 'while' - { - match("while"); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "T__42" - - // $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:46: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:46: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(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:47:13: ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* - loop1: - while (true) { - int alt1=4; - switch ( input.LA(1) ) { - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt1=1; - } - break; - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - { - alt1=2; - } - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - alt1=3; - } - break; - } - switch (alt1) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49: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:49: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:49:38: '0' .. '9' - { - matchRange('0','9'); - } - break; - - default : - break loop1; - } - } - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "ID" - - // $ANTLR start "INTCONST" - public final void mINTCONST() throws RecognitionException { - 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:51:9: ( ( '0' .. '9' )+ ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:51:17: ( '0' .. '9' )+ - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:51:17: ( '0' .. '9' )+ - int cnt2=0; - loop2: - while (true) { - int alt2=2; - int LA2_0 = input.LA(1); - if ( ((LA2_0 >= '0' && LA2_0 <= '9')) ) { - alt2=1; - } - - switch (alt2) { - case 1 : - // 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') ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - break; - - default : - if ( cnt2 >= 1 ) break loop2; - EarlyExitException eee = new EarlyExitException(2, input); - throw eee; - } - cnt2++; - } - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "INTCONST" - - // $ANTLR start "FLOATCONST" - public final void mFLOATCONST() throws RecognitionException { - 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:52:11: ( INTCONST '.' INTCONST ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:52:17: INTCONST '.' INTCONST - { - mINTCONST(); - - match('.'); - mINTCONST(); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "FLOATCONST" - - // $ANTLR start "STRINGCONST" - public final void mSTRINGCONST() throws RecognitionException { - 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:54:12: ( '\"' ( ESCAPE |~ ( '\\\\' | '\"' ) )* '\"' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:54:17: '\"' ( ESCAPE |~ ( '\\\\' | '\"' ) )* '\"' - { - match('\"'); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:54:21: ( ESCAPE |~ ( '\\\\' | '\"' ) )* - loop3: - while (true) { - int alt3=3; - int LA3_0 = input.LA(1); - if ( (LA3_0=='\\') ) { - alt3=1; - } - else if ( ((LA3_0 >= '\u0000' && LA3_0 <= '!')||(LA3_0 >= '#' && LA3_0 <= '[')||(LA3_0 >= ']' && LA3_0 <= '\uFFFF')) ) { - alt3=2; - } - - switch (alt3) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:54:22: ESCAPE - { - mESCAPE(); - - } - break; - case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:54:31: ~ ( '\\\\' | '\"' ) - { - if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '!')||(input.LA(1) >= '#' && input.LA(1) <= '[')||(input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - break; - - default : - break loop3; - } - } - - match('\"'); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "STRINGCONST" - - // $ANTLR start "ESCAPE" - public final void mESCAPE() throws RecognitionException { - 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:55:7: ( '\\\\' ( '\\\"' | '\\'' | '\\\\' ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:55:17: '\\\\' ( '\\\"' | '\\'' | '\\\\' ) - { - match('\\'); - if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\' ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "ESCAPE" - - // $ANTLR start "BINOP" - public final void mBINOP() throws RecognitionException { - try { - int _type = BINOP; - int _channel = DEFAULT_TOKEN_CHANNEL; - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:57:6: ( '+' | '-' | '*' | '/' | '<' | '>' | '=' ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g: - { - if ( (input.LA(1) >= '*' && input.LA(1) <= '+')||input.LA(1)=='-'||input.LA(1)=='/'||(input.LA(1) >= '<' && input.LA(1) <= '>') ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "BINOP" - - // $ANTLR start "WS" - public final void mWS() throws RecognitionException { - 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:59:3: ( ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:59:13: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:59:13: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ - int cnt4=0; - loop4: - while (true) { - int alt4=2; - int LA4_0 = input.LA(1); - if ( ((LA4_0 >= '\t' && LA4_0 <= '\n')||(LA4_0 >= '\f' && LA4_0 <= '\r')||LA4_0==' ') ) { - alt4=1; - } - - switch (alt4) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g: - { - if ( (input.LA(1) >= '\t' && input.LA(1) <= '\n')||(input.LA(1) >= '\f' && input.LA(1) <= '\r')||input.LA(1)==' ' ) { - input.consume(); - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse; - } - } - break; - - default : - if ( cnt4 >= 1 ) break loop4; - EarlyExitException eee = new EarlyExitException(4, input); - throw eee; - } - cnt4++; - } - - skip(); - } - - state.type = _type; - state.channel = _channel; - } - finally { - // do for sure before leaving - } - } - // $ANTLR end "WS" - - @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: ( UDIVIDE | UMINUS | UMULTIPLY | UPLUS | 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 | ID | INTCONST | FLOATCONST | STRINGCONST | ESCAPE | BINOP | WS ) - int alt5=31; - alt5 = dfa5.predict(input); - switch (alt5) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:10: UDIVIDE - { - mUDIVIDE(); - - } - break; - case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:18: UMINUS - { - mUMINUS(); - - } - break; - case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:25: UMULTIPLY - { - mUMULTIPLY(); - - } - break; - case 4 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:35: UPLUS - { - mUPLUS(); - - } - break; - case 5 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:41: T__23 - { - mT__23(); - - } - break; - case 6 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:47: T__24 - { - mT__24(); - - } - break; - case 7 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:53: T__25 - { - mT__25(); - - } - break; - case 8 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:59: T__26 - { - mT__26(); - - } - break; - case 9 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:65: T__27 - { - mT__27(); - - } - break; - case 10 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:71: T__28 - { - mT__28(); - - } - break; - case 11 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:77: T__29 - { - mT__29(); - - } - break; - case 12 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:83: T__30 - { - mT__30(); - - } - break; - case 13 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:89: T__31 - { - mT__31(); - - } - break; - case 14 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:95: T__32 - { - mT__32(); - - } - break; - case 15 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:101: T__33 - { - mT__33(); - - } - break; - case 16 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:107: T__34 - { - mT__34(); - - } - break; - case 17 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:113: T__35 - { - mT__35(); - - } - break; - case 18 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:119: T__36 - { - mT__36(); - - } - break; - case 19 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:125: T__37 - { - mT__37(); - - } - break; - case 20 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:131: T__38 - { - mT__38(); - - } - break; - case 21 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:137: T__39 - { - mT__39(); - - } - break; - case 22 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:143: T__40 - { - mT__40(); - - } - break; - case 23 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:149: T__41 - { - mT__41(); - - } - break; - case 24 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:155: T__42 - { - mT__42(); - - } - break; - case 25 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:161: ID - { - mID(); - - } - break; - case 26 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:164: INTCONST - { - mINTCONST(); - - } - break; - case 27 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:173: FLOATCONST - { - mFLOATCONST(); - - } - break; - case 28 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:184: STRINGCONST - { - mSTRINGCONST(); - - } - break; - case 29 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:196: ESCAPE - { - mESCAPE(); - - } - break; - case 30 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:203: BINOP - { - mBINOP(); - - } - break; - case 31 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:209: WS - { - mWS(); - - } - break; - - } - } - - - protected DFA5 dfa5 = new DFA5(this); - static final String DFA5_eotS = - "\10\uffff\1\36\1\uffff\11\23\1\uffff\1\53\12\uffff\5\23\1\62\6\23\2\uffff"+ - "\2\23\1\74\1\23\1\76\1\uffff\1\77\7\23\1\107\1\uffff\1\23\2\uffff\2\23"+ - "\1\114\1\23\1\116\1\23\1\120\1\uffff\1\121\1\122\1\23\2\uffff\1\23\1\uffff"+ - "\1\125\3\uffff\1\23\1\127\1\uffff\1\130\2\uffff"; - static final String DFA5_eofS = - "\131\uffff"; - static final String DFA5_minS = - "\1\11\7\uffff\1\75\1\uffff\1\145\2\154\1\146\1\162\1\145\1\164\2\150\1"+ - "\uffff\1\56\12\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\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\40\1\156\1\60\1\145\1\60\1\uffff\2\60\1\141\2\uffff\1\147"+ - "\1\uffff\1\60\3\uffff\1\155\1\60\1\uffff\1\60\2\uffff"; - static final String DFA5_maxS = - "\1\172\7\uffff\1\75\1\uffff\1\145\1\156\1\157\1\156\1\162\1\145\1\164"+ - "\2\150\1\uffff\1\71\12\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\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\2\uffff\1\147\1\uffff\1\172\3\uffff\1\155\1\172\1\uffff\1\172\2\uffff"; - static final String DFA5_acceptS = - "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\uffff\1\12\11\uffff\1\31\1\uffff"+ - "\1\34\1\35\1\36\1\37\1\1\1\2\1\3\1\4\1\11\1\10\14\uffff\1\32\1\33\5\uffff"+ - "\1\20\11\uffff\1\15\1\uffff\1\17\1\21\7\uffff\1\14\3\uffff\1\24\1\25\1"+ - "\uffff\1\27\1\uffff\1\13\1\16\1\22\2\uffff\1\30\1\uffff\1\26\1\23"; - static final String DFA5_specialS = - "\131\uffff}>"; - static final String[] DFA5_transitionS = { - "\2\30\1\uffff\2\30\22\uffff\1\30\1\uffff\1\25\5\uffff\1\5\1\6\1\3\1\4"+ - "\1\uffff\1\2\1\7\1\1\12\24\1\10\1\11\3\27\2\uffff\32\23\1\uffff\1\26"+ - "\4\uffff\1\23\1\12\2\23\1\13\1\14\2\23\1\15\6\23\1\16\1\23\1\17\1\20"+ - "\1\21\2\23\1\22\3\23", - "", - "", - "", - "", - "", - "", - "", - "\1\35", - "", - "\1\37", - "\1\40\1\uffff\1\41", - "\1\42\2\uffff\1\43", - "\1\44\7\uffff\1\45", - "\1\46", - "\1\47", - "\1\50", - "\1\51", - "\1\52", - "", - "\1\54\1\uffff\12\24", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "\1\55", - "\1\56", - "\1\57", - "\1\60", - "\1\61", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "\1\63", - "\1\64\5\uffff\1\65", - "\1\66", - "\1\67", - "\1\70", - "\1\71", - "", - "", - "\1\72", - "\1\73", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "\1\75", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "\1\100", - "\1\101", - "\1\102", - "\1\103", - "\1\104", - "\1\105", - "\1\106", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "", - "\1\110", - "", - "", - "\1\111", - "\1\112", - "\1\113\17\uffff\12\23\7\uffff\32\23\6\uffff\32\23", - "\1\115", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "\1\117", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "\1\123", - "", - "", - "\1\124", - "", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "", - "", - "", - "\1\126", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "", - "\12\23\7\uffff\32\23\6\uffff\32\23", - "", - "" - }; - - static final short[] DFA5_eot = DFA.unpackEncodedString(DFA5_eotS); - static final short[] DFA5_eof = DFA.unpackEncodedString(DFA5_eofS); - static final char[] DFA5_min = DFA.unpackEncodedStringToUnsignedChars(DFA5_minS); - static final char[] DFA5_max = DFA.unpackEncodedStringToUnsignedChars(DFA5_maxS); - static final short[] DFA5_accept = DFA.unpackEncodedString(DFA5_acceptS); - static final short[] DFA5_special = DFA.unpackEncodedString(DFA5_specialS); - static final short[][] DFA5_transition; - - static { - int numStates = DFA5_transitionS.length; - DFA5_transition = new short[numStates][]; - for (int i=0; i", "", "", "", "BINOP", "DECL", "DECLIST", "ESCAPE", - "EXPR", "FLOATCONST", "ID", "INTCONST", "MODIFIER", "PROGRAM", "STAT", - "STATLIST", "STRINGCONST", "TYPE", "UDIVIDE", "UMINUS", "UMULTIPLY", "UPLUS", - "WS", "'('", "')'", "'.'", "':'", "':='", "';'", "'begin'", "'else'", - "'end'", "'float'", "'for'", "'if'", "'int'", "'print'", "'program'", - "'read print'", "'read'", "'string'", "'then'", "'while'" - }; - public static final int EOF=-1; - public static final int T__23=23; - public static final int T__24=24; - public static final int T__25=25; - public static final int T__26=26; - public static final int T__27=27; - public static final int T__28=28; - public static final int T__29=29; - public static final int T__30=30; - public static final int T__31=31; - public static final int T__32=32; - public static final int T__33=33; - public static final int T__34=34; - public static final int T__35=35; - public static final int T__36=36; - public static final int T__37=37; - public static final int T__38=38; - public static final int T__39=39; - public static final int T__40=40; - public static final int T__41=41; - public static final int T__42=42; - public static final int BINOP=4; - public static final int DECL=5; - public static final int DECLIST=6; - public static final int ESCAPE=7; - public static final int EXPR=8; - public static final int FLOATCONST=9; - public static final int ID=10; - public static final int INTCONST=11; - public static final int MODIFIER=12; - public static final int PROGRAM=13; - public static final int STAT=14; - public static final int STATLIST=15; - public static final int STRINGCONST=16; - public static final int TYPE=17; - public static final int UDIVIDE=18; - public static final int UMINUS=19; - public static final int UMULTIPLY=20; - public static final int UPLUS=21; - public static final int WS=22; - - // delegates - public Parser[] getDelegates() { - return new Parser[] {}; - } - - // delegators - - - public XParser(TokenStream input) { - this(input, new RecognizerSharedState()); - } - public XParser(TokenStream input, RecognizerSharedState state) { - super(input, state); - } - - protected TreeAdaptor adaptor = new CommonTreeAdaptor(); - - public void setTreeAdaptor(TreeAdaptor adaptor) { - this.adaptor = adaptor; - } - public TreeAdaptor getTreeAdaptor() { - return adaptor; - } - @Override public String[] getTokenNames() { return XParser.tokenNames; } - @Override public String getGrammarFileName() { return "C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g"; } - - - public static class program_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $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 ) ; - public final XParser.program_return program() throws RecognitionException { - XParser.program_return retval = new XParser.program_return(); - retval.start = input.LT(1); - - CommonTree root_0 = null; - - Token string_literal1=null; - Token ID2=null; - Token char_literal3=null; - Token char_literal6=null; - Token EOF7=null; - ParserRuleReturnScope decllist4 =null; - ParserRuleReturnScope statlist5 =null; - - CommonTree string_literal1_tree=null; - CommonTree ID2_tree=null; - CommonTree char_literal3_tree=null; - CommonTree char_literal6_tree=null; - CommonTree EOF7_tree=null; - RewriteRuleTokenStream stream_25=new RewriteRuleTokenStream(adaptor,"token 25"); - RewriteRuleTokenStream stream_37=new RewriteRuleTokenStream(adaptor,"token 37"); - RewriteRuleTokenStream stream_28=new RewriteRuleTokenStream(adaptor,"token 28"); - RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); - 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:13: 'program' ID ';' decllist statlist '.' EOF - { - string_literal1=(Token)match(input,37,FOLLOW_37_in_program443); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_37.add(string_literal1); - - ID2=(Token)match(input,ID,FOLLOW_ID_in_program445); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_ID.add(ID2); - - char_literal3=(Token)match(input,28,FOLLOW_28_in_program447); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_28.add(char_literal3); - - pushFollow(FOLLOW_decllist_in_program449); - decllist4=decllist(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_decllist.add(decllist4.getTree()); - pushFollow(FOLLOW_statlist_in_program451); - 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_program453); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_25.add(char_literal6); - - EOF7=(Token)match(input,EOF,FOLLOW_EOF_in_program455); 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:56: -> ^( PROGRAM ID decllist statlist ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:63:59: ^( 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; - } - - } - - 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 "program" - - - public static class decllist_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $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 ) ; - public final XParser.decllist_return decllist() throws RecognitionException { - XParser.decllist_return retval = new XParser.decllist_return(); - retval.start = input.LT(1); - - 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 - { - pushFollow(FOLLOW_decl_in_decllist481); - decl8=decl(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_decl.add(decl8.getTree()); - pushFollow(FOLLOW_decllist_in_decllist483); - decllist9=decllist(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_decllist.add(decllist9.getTree()); - // AST REWRITE - // elements: decl, 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(); - // 66:31: -> ^( DECLIST decl decllist ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:34: ^( DECLIST decl decllist ) - { - 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()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "decllist" - - - public static class decl_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $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 ) ; - 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; - - CommonTree ID11_tree=null; - CommonTree char_literal12_tree=null; - CommonTree char_literal14_tree=null; - RewriteRuleTokenStream stream_26=new RewriteRuleTokenStream(adaptor,"token 26"); - RewriteRuleTokenStream stream_28=new RewriteRuleTokenStream(adaptor,"token 28"); - RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); - 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 ';' - { - pushFollow(FOLLOW_modifier_in_decl509); - modifier10=modifier(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_modifier.add(modifier10.getTree()); - ID11=(Token)match(input,ID,FOLLOW_ID_in_decl511); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_ID.add(ID11); - - char_literal12=(Token)match(input,26,FOLLOW_26_in_decl513); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_26.add(char_literal12); - - pushFollow(FOLLOW_type_in_decl515); - type13=type(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_type.add(type13.getTree()); - char_literal14=(Token)match(input,28,FOLLOW_28_in_decl517); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_28.add(char_literal14); - - // AST REWRITE - // elements: type, modifier, ID - // 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(); - // 67:42: -> ^( 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 ) - { - 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()); - adaptor.addChild(root_1, stream_ID.nextNode()); - adaptor.addChild(root_1, stream_type.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "decl" - - - public static class modifier_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "modifier" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:1: modifier : (mod= 'read' |mod= 'print' |mod= 'read print' -> ^( MODIFIER[mod] ) ); - 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 mod=null; - - CommonTree mod_tree=null; - RewriteRuleTokenStream stream_38=new RewriteRuleTokenStream(adaptor,"token 38"); - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:9: (mod= 'read' |mod= 'print' |mod= 'read print' -> ^( MODIFIER[mod] ) ) - int alt1=3; - switch ( input.LA(1) ) { - case 39: - { - alt1=1; - } - break; - case 36: - { - alt1=2; - } - break; - case 38: - { - alt1=3; - } - break; - default: - if (state.backtracking>0) {state.failed=true; return retval;} - NoViableAltException nvae = - new NoViableAltException("", 1, 0, input); - throw nvae; - } - switch (alt1) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:17: mod= 'read' - { - root_0 = (CommonTree)adaptor.nil(); - - - mod=(Token)match(input,39,FOLLOW_39_in_modifier543); if (state.failed) return retval; - if ( state.backtracking==0 ) { - mod_tree = (CommonTree)adaptor.create(mod); - adaptor.addChild(root_0, mod_tree); - } - - } - break; - case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:30: mod= 'print' - { - root_0 = (CommonTree)adaptor.nil(); - - - mod=(Token)match(input,36,FOLLOW_36_in_modifier549); if (state.failed) return retval; - if ( state.backtracking==0 ) { - mod_tree = (CommonTree)adaptor.create(mod); - adaptor.addChild(root_0, mod_tree); - } - - } - break; - case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:44: mod= 'read print' - { - mod=(Token)match(input,38,FOLLOW_38_in_modifier555); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_38.add(mod); - - // AST REWRITE - // elements: - // 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(); - // 68:61: -> ^( MODIFIER[mod] ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:64: ^( MODIFIER[mod] ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(MODIFIER, mod), root_1); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - break; - - } - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "modifier" - - - public static class type_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "type" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:69:1: type : (t= 'int' |t= 'float' |t= 'string' -> ^( TYPE[t] ) ); - 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 t=null; - - CommonTree t_tree=null; - RewriteRuleTokenStream stream_40=new RewriteRuleTokenStream(adaptor,"token 40"); - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:69:5: (t= 'int' |t= 'float' |t= 'string' -> ^( TYPE[t] ) ) - int alt2=3; - switch ( input.LA(1) ) { - case 35: - { - alt2=1; - } - break; - case 32: - { - alt2=2; - } - break; - case 40: - { - alt2=3; - } - break; - default: - if (state.backtracking>0) {state.failed=true; return retval;} - NoViableAltException nvae = - new NoViableAltException("", 2, 0, input); - throw nvae; - } - switch (alt2) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:69:17: t= 'int' - { - root_0 = (CommonTree)adaptor.nil(); - - - t=(Token)match(input,35,FOLLOW_35_in_type580); if (state.failed) return retval; - if ( state.backtracking==0 ) { - t_tree = (CommonTree)adaptor.create(t); - adaptor.addChild(root_0, t_tree); - } - - } - break; - case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:69:27: t= 'float' - { - root_0 = (CommonTree)adaptor.nil(); - - - t=(Token)match(input,32,FOLLOW_32_in_type586); if (state.failed) return retval; - if ( state.backtracking==0 ) { - t_tree = (CommonTree)adaptor.create(t); - adaptor.addChild(root_0, t_tree); - } - - } - break; - case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:69:39: t= 'string' - { - t=(Token)match(input,40,FOLLOW_40_in_type592); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_40.add(t); - - // AST REWRITE - // elements: - // 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(); - // 69:50: -> ^( TYPE[t] ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:69:53: ^( TYPE[t] ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TYPE, t), root_1); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - break; - - } - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "type" - - - public static class statlist_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $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 )* ) ; - 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_literal15=null; - Token char_literal17=null; - Token string_literal18=null; - ParserRuleReturnScope stat16 =null; - - CommonTree string_literal15_tree=null; - CommonTree char_literal17_tree=null; - CommonTree string_literal18_tree=null; - RewriteRuleTokenStream stream_28=new RewriteRuleTokenStream(adaptor,"token 28"); - RewriteRuleTokenStream stream_29=new RewriteRuleTokenStream(adaptor,"token 29"); - RewriteRuleTokenStream stream_31=new RewriteRuleTokenStream(adaptor,"token 31"); - 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' - { - string_literal15=(Token)match(input,29,FOLLOW_29_in_statlist613); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_29.add(string_literal15); - - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:25: ( stat ';' )* - loop3: - while (true) { - int alt3=2; - int LA3_0 = input.LA(1); - if ( (LA3_0==ID||LA3_0==29||(LA3_0 >= 33 && LA3_0 <= 34)||LA3_0==42) ) { - alt3=1; - } - - switch (alt3) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:26: stat ';' - { - pushFollow(FOLLOW_stat_in_statlist616); - stat16=stat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat16.getTree()); - char_literal17=(Token)match(input,28,FOLLOW_28_in_statlist618); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_28.add(char_literal17); - - } - break; - - default : - break loop3; - } - } - - string_literal18=(Token)match(input,31,FOLLOW_31_in_statlist622); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_31.add(string_literal18); - - // AST REWRITE - // elements: stat - // 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(); - // 72: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 )* ) - { - 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 )* - while ( stream_stat.hasNext() ) { - adaptor.addChild(root_1, stream_stat.nextTree()); - } - stream_stat.reset(); - - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "statlist" - - - public static class stat_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "stat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:1: stat : (t= assignstat |t= condstat |t= whilestat |t= forstat -> ^( STAT[t] ) | statlist -> ^( STATLIST 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 t =null; - ParserRuleReturnScope statlist19 =null; - - RewriteRuleSubtreeStream stream_statlist=new RewriteRuleSubtreeStream(adaptor,"rule statlist"); - RewriteRuleSubtreeStream stream_forstat=new RewriteRuleSubtreeStream(adaptor,"rule forstat"); - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:5: (t= assignstat |t= condstat |t= whilestat |t= forstat -> ^( STAT[t] ) | statlist -> ^( STATLIST statlist ) ) - int alt4=5; - switch ( input.LA(1) ) { - case ID: - { - alt4=1; - } - break; - case 34: - { - alt4=2; - } - break; - case 42: - { - alt4=3; - } - break; - case 33: - { - alt4=4; - } - break; - case 29: - { - alt4=5; - } - break; - default: - if (state.backtracking>0) {state.failed=true; return retval;} - NoViableAltException nvae = - new NoViableAltException("", 4, 0, input); - throw nvae; - } - switch (alt4) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:17: t= assignstat - { - root_0 = (CommonTree)adaptor.nil(); - - - pushFollow(FOLLOW_assignstat_in_stat649); - t=assignstat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, t.getTree()); - - } - break; - case 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:32: t= condstat - { - root_0 = (CommonTree)adaptor.nil(); - - - pushFollow(FOLLOW_condstat_in_stat655); - t=condstat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, t.getTree()); - - } - break; - case 3 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:45: t= whilestat - { - root_0 = (CommonTree)adaptor.nil(); - - - pushFollow(FOLLOW_whilestat_in_stat661); - t=whilestat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) adaptor.addChild(root_0, t.getTree()); - - } - break; - case 4 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:59: t= forstat - { - pushFollow(FOLLOW_forstat_in_stat667); - t=forstat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_forstat.add(t.getTree()); - // AST REWRITE - // elements: - // 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(); - // 73:69: -> ^( STAT[t] ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:72: ^( STAT[t] ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(STAT, t), root_1); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - break; - case 5 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:74:19: statlist - { - pushFollow(FOLLOW_statlist_in_stat694); - statlist19=statlist(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_statlist.add(statlist19.getTree()); - // AST REWRITE - // elements: statlist - // 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(); - // 75:17: -> ^( STATLIST statlist ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:75:20: ^( STATLIST statlist ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(STATLIST, "STATLIST"), root_1); - adaptor.addChild(root_1, stream_statlist.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - break; - - } - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "stat" - - - public static class assignstat_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "assignstat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76: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 ID20=null; - Token string_literal21=null; - ParserRuleReturnScope expr22 =null; - - CommonTree ID20_tree=null; - CommonTree string_literal21_tree=null; - RewriteRuleTokenStream stream_27=new RewriteRuleTokenStream(adaptor,"token 27"); - 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:76:11: ( ID ':=' expr -> ^( ':=' ID expr ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:17: ID ':=' expr - { - ID20=(Token)match(input,ID,FOLLOW_ID_in_assignstat728); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_ID.add(ID20); - - string_literal21=(Token)match(input,27,FOLLOW_27_in_assignstat730); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_27.add(string_literal21); - - pushFollow(FOLLOW_expr_in_assignstat732); - expr22=expr(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr.add(expr22.getTree()); - // AST REWRITE - // elements: ID, expr, 27 - // 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(); - // 76:30: -> ^( ':=' ID expr ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:76:33: ^( ':=' ID expr ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_27.nextNode(), root_1); - adaptor.addChild(root_1, stream_ID.nextNode()); - adaptor.addChild(root_1, stream_expr.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "assignstat" - - - public static class condstat_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "condstat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77: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_literal23=null; - Token string_literal25=null; - ParserRuleReturnScope cond24 =null; - ParserRuleReturnScope stat26 =null; - ParserRuleReturnScope condElseStat27 =null; - - CommonTree string_literal23_tree=null; - CommonTree string_literal25_tree=null; - RewriteRuleTokenStream stream_34=new RewriteRuleTokenStream(adaptor,"token 34"); - RewriteRuleTokenStream stream_41=new RewriteRuleTokenStream(adaptor,"token 41"); - 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:77: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:77:17: 'if' cond 'then' stat ( condElseStat )? - { - string_literal23=(Token)match(input,34,FOLLOW_34_in_condstat754); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_34.add(string_literal23); - - pushFollow(FOLLOW_cond_in_condstat756); - cond24=cond(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_cond.add(cond24.getTree()); - string_literal25=(Token)match(input,41,FOLLOW_41_in_condstat758); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_41.add(string_literal25); - - pushFollow(FOLLOW_stat_in_condstat760); - stat26=stat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat26.getTree()); - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:39: ( condElseStat )? - int alt5=2; - int LA5_0 = input.LA(1); - if ( (LA5_0==30) ) { - int LA5_1 = input.LA(2); - if ( (synpred10_X()) ) { - alt5=1; - } - } - switch (alt5) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:39: condElseStat - { - pushFollow(FOLLOW_condElseStat_in_condstat762); - condElseStat27=condElseStat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_condElseStat.add(condElseStat27.getTree()); - } - break; - - } - - // AST REWRITE - // elements: cond, 34, stat, condElseStat - // 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(); - // 77:53: -> ^( 'if' cond stat ( condElseStat )? ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:56: ^( 'if' cond stat ( condElseStat )? ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_34.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:77:73: ( condElseStat )? - if ( stream_condElseStat.hasNext() ) { - adaptor.addChild(root_1, stream_condElseStat.nextTree()); - } - stream_condElseStat.reset(); - - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "condstat" - - - public static class condElseStat_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "condElseStat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:78: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_literal28=null; - ParserRuleReturnScope stat29 =null; - - CommonTree string_literal28_tree=null; - 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:78:13: ( 'else' stat -> ^( 'else' stat ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:78:17: 'else' stat - { - string_literal28=(Token)match(input,30,FOLLOW_30_in_condElseStat785); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_30.add(string_literal28); - - pushFollow(FOLLOW_stat_in_condElseStat787); - stat29=stat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat29.getTree()); - // AST REWRITE - // elements: 30, stat - // 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(); - // 78:29: -> ^( 'else' stat ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:78:32: ^( 'else' stat ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_30.nextNode(), root_1); - adaptor.addChild(root_1, stream_stat.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "condElseStat" - - - public static class whilestat_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "whilestat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:79: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_literal30=null; - Token char_literal31=null; - Token char_literal33=null; - ParserRuleReturnScope cond32 =null; - ParserRuleReturnScope stat34 =null; - - CommonTree string_literal30_tree=null; - CommonTree char_literal31_tree=null; - CommonTree char_literal33_tree=null; - RewriteRuleTokenStream stream_23=new RewriteRuleTokenStream(adaptor,"token 23"); - RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24"); - RewriteRuleTokenStream stream_42=new RewriteRuleTokenStream(adaptor,"token 42"); - 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:79: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:79:17: 'while' '(' cond ')' stat - { - string_literal30=(Token)match(input,42,FOLLOW_42_in_whilestat806); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_42.add(string_literal30); - - char_literal31=(Token)match(input,23,FOLLOW_23_in_whilestat808); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_23.add(char_literal31); - - pushFollow(FOLLOW_cond_in_whilestat810); - cond32=cond(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_cond.add(cond32.getTree()); - char_literal33=(Token)match(input,24,FOLLOW_24_in_whilestat812); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_24.add(char_literal33); - - pushFollow(FOLLOW_stat_in_whilestat814); - stat34=stat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat34.getTree()); - // AST REWRITE - // elements: cond, stat, 42 - // 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(); - // 79:43: -> ^( 'while' cond stat ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:79:46: ^( 'while' cond stat ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_42.nextNode(), root_1); - adaptor.addChild(root_1, stream_cond.nextTree()); - adaptor.addChild(root_1, stream_stat.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "whilestat" - - - public static class forstat_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "forstat" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:80: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_literal35=null; - Token char_literal36=null; - Token char_literal38=null; - Token char_literal40=null; - Token char_literal42=null; - ParserRuleReturnScope assignstat37 =null; - ParserRuleReturnScope cond39 =null; - ParserRuleReturnScope assignstat41 =null; - ParserRuleReturnScope stat43 =null; - - CommonTree string_literal35_tree=null; - CommonTree char_literal36_tree=null; - CommonTree char_literal38_tree=null; - CommonTree char_literal40_tree=null; - CommonTree char_literal42_tree=null; - RewriteRuleTokenStream stream_33=new RewriteRuleTokenStream(adaptor,"token 33"); - RewriteRuleTokenStream stream_23=new RewriteRuleTokenStream(adaptor,"token 23"); - RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24"); - RewriteRuleTokenStream stream_28=new RewriteRuleTokenStream(adaptor,"token 28"); - 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:80: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:80:17: 'for' '(' assignstat ';' cond ';' assignstat ')' stat - { - string_literal35=(Token)match(input,33,FOLLOW_33_in_forstat837); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_33.add(string_literal35); - - char_literal36=(Token)match(input,23,FOLLOW_23_in_forstat839); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_23.add(char_literal36); - - pushFollow(FOLLOW_assignstat_in_forstat841); - assignstat37=assignstat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_assignstat.add(assignstat37.getTree()); - char_literal38=(Token)match(input,28,FOLLOW_28_in_forstat843); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_28.add(char_literal38); - - pushFollow(FOLLOW_cond_in_forstat845); - cond39=cond(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_cond.add(cond39.getTree()); - char_literal40=(Token)match(input,28,FOLLOW_28_in_forstat847); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_28.add(char_literal40); - - pushFollow(FOLLOW_assignstat_in_forstat849); - assignstat41=assignstat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_assignstat.add(assignstat41.getTree()); - char_literal42=(Token)match(input,24,FOLLOW_24_in_forstat851); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_24.add(char_literal42); - - pushFollow(FOLLOW_stat_in_forstat853); - stat43=stat(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_stat.add(stat43.getTree()); - // AST REWRITE - // elements: cond, stat, assignstat, 33, assignstat - // 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(); - // 81:17: -> ^( 'for' assignstat cond assignstat stat ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:20: ^( 'for' assignstat cond assignstat stat ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_33.nextNode(), root_1); - adaptor.addChild(root_1, stream_assignstat.nextTree()); - adaptor.addChild(root_1, stream_cond.nextTree()); - adaptor.addChild(root_1, stream_assignstat.nextTree()); - adaptor.addChild(root_1, stream_stat.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "forstat" - - - public static class expr_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "expr" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:83:1: expr : ( expr2 UPLUS expr -> ^( UPLUS expr2 expr ) | expr2 UMINUS expr -> ^( UMINUS expr2 expr ) | expr2 -> ^( 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 UPLUS45=null; - Token UMINUS48=null; - ParserRuleReturnScope expr244 =null; - ParserRuleReturnScope expr46 =null; - ParserRuleReturnScope expr247 =null; - ParserRuleReturnScope expr49 =null; - ParserRuleReturnScope expr250 =null; - - CommonTree UPLUS45_tree=null; - CommonTree UMINUS48_tree=null; - RewriteRuleTokenStream stream_UMINUS=new RewriteRuleTokenStream(adaptor,"token UMINUS"); - RewriteRuleTokenStream stream_UPLUS=new RewriteRuleTokenStream(adaptor,"token UPLUS"); - 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:83:5: ( expr2 UPLUS expr -> ^( UPLUS expr2 expr ) | expr2 UMINUS expr -> ^( UMINUS expr2 expr ) | expr2 -> ^( expr2 ) ) - int alt6=3; - switch ( input.LA(1) ) { - case FLOATCONST: - case INTCONST: - { - int LA6_1 = input.LA(2); - if ( (synpred11_X()) ) { - alt6=1; - } - else if ( (synpred12_X()) ) { - alt6=2; - } - else if ( (true) ) { - alt6=3; - } - - } - break; - case UMINUS: - { - int LA6_2 = input.LA(2); - if ( (synpred11_X()) ) { - alt6=1; - } - else if ( (synpred12_X()) ) { - alt6=2; - } - else if ( (true) ) { - alt6=3; - } - - } - break; - case STRINGCONST: - { - int LA6_3 = input.LA(2); - if ( (synpred11_X()) ) { - alt6=1; - } - else if ( (synpred12_X()) ) { - alt6=2; - } - else if ( (true) ) { - alt6=3; - } - - } - break; - case ID: - { - int LA6_4 = input.LA(2); - if ( (synpred11_X()) ) { - alt6=1; - } - else if ( (synpred12_X()) ) { - alt6=2; - } - else if ( (true) ) { - alt6=3; - } - - } - break; - case 23: - { - int LA6_5 = input.LA(2); - if ( (synpred11_X()) ) { - alt6=1; - } - else if ( (synpred12_X()) ) { - alt6=2; - } - else if ( (true) ) { - alt6=3; - } - - } - break; - default: - if (state.backtracking>0) {state.failed=true; return retval;} - NoViableAltException nvae = - new NoViableAltException("", 6, 0, input); - throw nvae; - } - switch (alt6) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:83:13: expr2 UPLUS expr - { - pushFollow(FOLLOW_expr2_in_expr896); - expr244=expr2(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr2.add(expr244.getTree()); - UPLUS45=(Token)match(input,UPLUS,FOLLOW_UPLUS_in_expr898); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_UPLUS.add(UPLUS45); - - pushFollow(FOLLOW_expr_in_expr900); - expr46=expr(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr.add(expr46.getTree()); - // AST REWRITE - // elements: UPLUS, 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(); - // 83:37: -> ^( UPLUS expr2 expr ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:83:40: ^( UPLUS expr2 expr ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_UPLUS.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 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:15: expr2 UMINUS expr - { - pushFollow(FOLLOW_expr2_in_expr933); - expr247=expr2(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr2.add(expr247.getTree()); - UMINUS48=(Token)match(input,UMINUS,FOLLOW_UMINUS_in_expr935); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_UMINUS.add(UMINUS48); - - pushFollow(FOLLOW_expr_in_expr937); - expr49=expr(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr.add(expr49.getTree()); - // AST REWRITE - // elements: expr, expr2, UMINUS - // 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(); - // 84:37: -> ^( UMINUS expr2 expr ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:40: ^( UMINUS expr2 expr ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_UMINUS.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:85:15: expr2 - { - pushFollow(FOLLOW_expr2_in_expr967); - expr250=expr2(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr2.add(expr250.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(); - // 85:37: -> ^( expr2 ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:85: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; - } - - } - break; - - } - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "expr" - - - public static class expr2_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "expr2" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:1: expr2 : ( expr3 UMULTIPLY expr2 -> ^( UMULTIPLY expr3 expr2 ) | expr3 UDIVIDE expr2 -> ^( UDIVIDE expr3 expr2 ) | expr3 -> ^( 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 UMULTIPLY52=null; - Token UDIVIDE55=null; - ParserRuleReturnScope expr351 =null; - ParserRuleReturnScope expr253 =null; - ParserRuleReturnScope expr354 =null; - ParserRuleReturnScope expr256 =null; - ParserRuleReturnScope expr357 =null; - - CommonTree UMULTIPLY52_tree=null; - CommonTree UDIVIDE55_tree=null; - RewriteRuleTokenStream stream_UDIVIDE=new RewriteRuleTokenStream(adaptor,"token UDIVIDE"); - RewriteRuleTokenStream stream_UMULTIPLY=new RewriteRuleTokenStream(adaptor,"token UMULTIPLY"); - RewriteRuleSubtreeStream stream_expr3=new RewriteRuleSubtreeStream(adaptor,"rule expr3"); - RewriteRuleSubtreeStream stream_expr2=new RewriteRuleSubtreeStream(adaptor,"rule expr2"); - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:6: ( expr3 UMULTIPLY expr2 -> ^( UMULTIPLY expr3 expr2 ) | expr3 UDIVIDE expr2 -> ^( UDIVIDE expr3 expr2 ) | expr3 -> ^( expr3 ) ) - int alt7=3; - switch ( input.LA(1) ) { - case FLOATCONST: - case INTCONST: - { - int LA7_1 = input.LA(2); - if ( (synpred13_X()) ) { - alt7=1; - } - else if ( (synpred14_X()) ) { - alt7=2; - } - else if ( (true) ) { - alt7=3; - } - - } - break; - case UMINUS: - { - int LA7_2 = input.LA(2); - if ( (synpred13_X()) ) { - alt7=1; - } - else if ( (synpred14_X()) ) { - alt7=2; - } - else if ( (true) ) { - alt7=3; - } - - } - break; - case STRINGCONST: - { - int LA7_3 = input.LA(2); - if ( (synpred13_X()) ) { - alt7=1; - } - else if ( (synpred14_X()) ) { - alt7=2; - } - else if ( (true) ) { - alt7=3; - } - - } - break; - case ID: - { - int LA7_4 = input.LA(2); - if ( (synpred13_X()) ) { - alt7=1; - } - else if ( (synpred14_X()) ) { - alt7=2; - } - else if ( (true) ) { - alt7=3; - } - - } - break; - case 23: - { - int LA7_5 = input.LA(2); - if ( (synpred13_X()) ) { - alt7=1; - } - else if ( (synpred14_X()) ) { - alt7=2; - } - else if ( (true) ) { - alt7=3; - } - - } - break; - default: - if (state.backtracking>0) {state.failed=true; return retval;} - NoViableAltException nvae = - new NoViableAltException("", 7, 0, input); - throw nvae; - } - switch (alt7) { - case 1 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:13: expr3 UMULTIPLY expr2 - { - pushFollow(FOLLOW_expr3_in_expr21000); - expr351=expr3(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr3.add(expr351.getTree()); - UMULTIPLY52=(Token)match(input,UMULTIPLY,FOLLOW_UMULTIPLY_in_expr21002); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_UMULTIPLY.add(UMULTIPLY52); - - pushFollow(FOLLOW_expr2_in_expr21004); - expr253=expr2(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr2.add(expr253.getTree()); - // AST REWRITE - // elements: expr2, expr3, UMULTIPLY - // 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: -> ^( UMULTIPLY expr3 expr2 ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:40: ^( UMULTIPLY expr3 expr2 ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_UMULTIPLY.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 2 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:15: expr3 UDIVIDE expr2 - { - pushFollow(FOLLOW_expr3_in_expr21032); - expr354=expr3(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr3.add(expr354.getTree()); - UDIVIDE55=(Token)match(input,UDIVIDE,FOLLOW_UDIVIDE_in_expr21034); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_UDIVIDE.add(UDIVIDE55); - - pushFollow(FOLLOW_expr2_in_expr21036); - expr256=expr2(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr2.add(expr256.getTree()); - // AST REWRITE - // elements: UDIVIDE, expr3, 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(); - // 87:37: -> ^( UDIVIDE expr3 expr2 ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:40: ^( UDIVIDE expr3 expr2 ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_UDIVIDE.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:88:15: expr3 - { - pushFollow(FOLLOW_expr3_in_expr21064); - expr357=expr3(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr3.add(expr357.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(); - // 88:37: -> ^( expr3 ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:88: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; - } - - } - break; - - } - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $ANTLR end "expr2" - - - public static class expr3_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "expr3" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:89:1: expr3 : ( number -> ^( number ) | UMINUS number -> ^( UMINUS number ) |t= STRINGCONST |t= ID -> ^( $t) | '(' expr ')' -> ^( 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 t=null; - Token UMINUS59=null; - Token char_literal61=null; - Token char_literal63=null; - ParserRuleReturnScope number58 =null; - ParserRuleReturnScope number60 =null; - ParserRuleReturnScope expr62 =null; - - CommonTree t_tree=null; - CommonTree UMINUS59_tree=null; - CommonTree char_literal61_tree=null; - CommonTree char_literal63_tree=null; - RewriteRuleTokenStream stream_UMINUS=new RewriteRuleTokenStream(adaptor,"token UMINUS"); - RewriteRuleTokenStream stream_23=new RewriteRuleTokenStream(adaptor,"token 23"); - RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24"); - RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); - RewriteRuleSubtreeStream stream_number=new RewriteRuleSubtreeStream(adaptor,"rule number"); - 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:89:6: ( number -> ^( number ) | UMINUS number -> ^( UMINUS number ) |t= STRINGCONST |t= ID -> ^( $t) | '(' expr ')' -> ^( expr ) ) - int alt8=5; - switch ( input.LA(1) ) { - case FLOATCONST: - case INTCONST: - { - alt8=1; - } - break; - case UMINUS: - { - alt8=2; - } - break; - case STRINGCONST: - { - alt8=3; - } - break; - case ID: - { - alt8=4; - } - break; - case 23: - { - alt8=5; - } - break; - default: - 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:89:13: number - { - pushFollow(FOLLOW_number_in_expr31097); - number58=number(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_number.add(number58.getTree()); - // AST REWRITE - // elements: number - // 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(); - // 89:37: -> ^( number ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:89:40: ^( number ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_number.nextNode(), root_1); - 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:90:15: UMINUS number - { - UMINUS59=(Token)match(input,UMINUS,FOLLOW_UMINUS_in_expr31136); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_UMINUS.add(UMINUS59); - - pushFollow(FOLLOW_number_in_expr31138); - number60=number(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_number.add(number60.getTree()); - // AST REWRITE - // elements: UMINUS, number - // 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(); - // 90:37: -> ^( UMINUS number ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:90:40: ^( UMINUS number ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_UMINUS.nextNode(), root_1); - adaptor.addChild(root_1, stream_number.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:91:15: t= STRINGCONST - { - root_0 = (CommonTree)adaptor.nil(); - - - t=(Token)match(input,STRINGCONST,FOLLOW_STRINGCONST_in_expr31172); if (state.failed) return retval; - if ( state.backtracking==0 ) { - t_tree = (CommonTree)adaptor.create(t); - adaptor.addChild(root_0, t_tree); - } - - } - break; - case 4 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:91:31: t= ID - { - t=(Token)match(input,ID,FOLLOW_ID_in_expr31178); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_ID.add(t); - - // AST REWRITE - // elements: t - // token labels: t - // rule labels: retval - // token list labels: - // rule list labels: - // wildcard labels: - if ( state.backtracking==0 ) { - retval.tree = root_0; - RewriteRuleTokenStream stream_t=new RewriteRuleTokenStream(adaptor,"token t",t); - RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null); - - root_0 = (CommonTree)adaptor.nil(); - // 91:37: -> ^( $t) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:91:40: ^( $t) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_t.nextNode(), root_1); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - break; - case 5 : - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:92:15: '(' expr ')' - { - char_literal61=(Token)match(input,23,FOLLOW_23_in_expr31202); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_23.add(char_literal61); - - pushFollow(FOLLOW_expr_in_expr31204); - expr62=expr(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr.add(expr62.getTree()); - char_literal63=(Token)match(input,24,FOLLOW_24_in_expr31206); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_24.add(char_literal63); - - // AST REWRITE - // elements: expr - // 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(); - // 92:37: -> ^( expr ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:92:40: ^( expr ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_expr.nextNode(), root_1); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - break; - - } - retval.stop = input.LT(-1); - - if ( state.backtracking==0 ) { - retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); - adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); - } - finally { - // do for sure before leaving - } - return retval; - } - // $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:93: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 set64=null; - - CommonTree set64_tree=null; - - try { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:93: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(); - - - set64=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(set64)); - 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 cond_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "cond" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:95:1: cond : expr cond2 -> ^( expr cond2 ) ; - public final XParser.cond_return cond() throws RecognitionException { - XParser.cond_return retval = new XParser.cond_return(); - retval.start = input.LT(1); - - CommonTree root_0 = null; - - ParserRuleReturnScope expr65 =null; - ParserRuleReturnScope cond266 =null; - - RewriteRuleSubtreeStream stream_cond2=new RewriteRuleSubtreeStream(adaptor,"rule cond2"); - 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:95:5: ( expr cond2 -> ^( expr cond2 ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:95:13: expr cond2 - { - pushFollow(FOLLOW_expr_in_cond1248); - expr65=expr(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr.add(expr65.getTree()); - pushFollow(FOLLOW_cond2_in_cond1250); - cond266=cond2(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_cond2.add(cond266.getTree()); - // AST REWRITE - // elements: cond2, expr - // 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(); - // 95:29: -> ^( expr cond2 ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:95:32: ^( expr cond2 ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_expr.nextNode(), root_1); - adaptor.addChild(root_1, stream_cond2.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "cond" - - - public static class cond2_return extends ParserRuleReturnScope { - CommonTree tree; - @Override - public CommonTree getTree() { return tree; } - }; - - - // $ANTLR start "cond2" - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:96:1: cond2 : BINOP expr -> ^( BINOP expr ) ; - public final XParser.cond2_return cond2() throws RecognitionException { - XParser.cond2_return retval = new XParser.cond2_return(); - retval.start = input.LT(1); - - CommonTree root_0 = null; - - Token BINOP67=null; - ParserRuleReturnScope expr68 =null; - - CommonTree BINOP67_tree=null; - RewriteRuleTokenStream stream_BINOP=new RewriteRuleTokenStream(adaptor,"token BINOP"); - 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:96:6: ( BINOP expr -> ^( BINOP expr ) ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:96:13: BINOP expr - { - BINOP67=(Token)match(input,BINOP,FOLLOW_BINOP_in_cond21274); if (state.failed) return retval; - if ( state.backtracking==0 ) stream_BINOP.add(BINOP67); - - pushFollow(FOLLOW_expr_in_cond21276); - expr68=expr(); - state._fsp--; - if (state.failed) return retval; - if ( state.backtracking==0 ) stream_expr.add(expr68.getTree()); - // AST REWRITE - // elements: BINOP, expr - // 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(); - // 96:29: -> ^( BINOP expr ) - { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:96:32: ^( BINOP expr ) - { - CommonTree root_1 = (CommonTree)adaptor.nil(); - root_1 = (CommonTree)adaptor.becomeRoot(stream_BINOP.nextNode(), root_1); - adaptor.addChild(root_1, stream_expr.nextTree()); - adaptor.addChild(root_0, root_1); - } - - } - - - retval.tree = root_0; - } - - } - - 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 "cond2" - - // $ANTLR start synpred10_X - public final void synpred10_X_fragment() throws RecognitionException { - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:39: ( condElseStat ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:77:39: condElseStat - { - pushFollow(FOLLOW_condElseStat_in_synpred10_X762); - condElseStat(); - state._fsp--; - if (state.failed) return; - - } - - } - // $ANTLR end synpred10_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:83:13: ( expr2 UPLUS expr ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:83:13: expr2 UPLUS expr - { - pushFollow(FOLLOW_expr2_in_synpred11_X896); - expr2(); - state._fsp--; - if (state.failed) return; - - match(input,UPLUS,FOLLOW_UPLUS_in_synpred11_X898); if (state.failed) return; - - pushFollow(FOLLOW_expr_in_synpred11_X900); - expr(); - 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:84:15: ( expr2 UMINUS expr ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:15: expr2 UMINUS expr - { - pushFollow(FOLLOW_expr2_in_synpred12_X933); - expr2(); - state._fsp--; - if (state.failed) return; - - match(input,UMINUS,FOLLOW_UMINUS_in_synpred12_X935); if (state.failed) return; - - pushFollow(FOLLOW_expr_in_synpred12_X937); - expr(); - state._fsp--; - if (state.failed) return; - - } - - } - // $ANTLR end synpred12_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:86:13: ( expr3 UMULTIPLY expr2 ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:86:13: expr3 UMULTIPLY expr2 - { - pushFollow(FOLLOW_expr3_in_synpred13_X1000); - expr3(); - state._fsp--; - if (state.failed) return; - - match(input,UMULTIPLY,FOLLOW_UMULTIPLY_in_synpred13_X1002); if (state.failed) return; - - pushFollow(FOLLOW_expr2_in_synpred13_X1004); - expr2(); - state._fsp--; - if (state.failed) return; - - } - - } - // $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:87:15: ( expr3 UDIVIDE expr2 ) - // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:15: expr3 UDIVIDE expr2 - { - pushFollow(FOLLOW_expr3_in_synpred14_X1032); - expr3(); - state._fsp--; - if (state.failed) return; - - match(input,UDIVIDE,FOLLOW_UDIVIDE_in_synpred14_X1034); if (state.failed) return; - - pushFollow(FOLLOW_expr2_in_synpred14_X1036); - expr2(); - state._fsp--; - if (state.failed) return; - - } - - } - // $ANTLR end synpred14_X - - // Delegated rules - - public final boolean synpred13_X() { - state.backtracking++; - int start = input.mark(); - try { - synpred13_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 synpred14_X() { - state.backtracking++; - int start = input.mark(); - try { - synpred14_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 synpred12_X() { - state.backtracking++; - int start = input.mark(); - try { - synpred12_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 synpred10_X() { - state.backtracking++; - int start = input.mark(); - try { - synpred10_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 static final BitSet FOLLOW_37_in_program443 = new BitSet(new long[]{0x0000000000000400L}); - public static final BitSet FOLLOW_ID_in_program445 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_28_in_program447 = new BitSet(new long[]{0x000000D000000000L}); - public static final BitSet FOLLOW_decllist_in_program449 = new BitSet(new long[]{0x0000000020000000L}); - public static final BitSet FOLLOW_statlist_in_program451 = new BitSet(new long[]{0x0000000002000000L}); - public static final BitSet FOLLOW_25_in_program453 = new BitSet(new long[]{0x0000000000000000L}); - public static final BitSet FOLLOW_EOF_in_program455 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_decl_in_decllist481 = new BitSet(new long[]{0x000000D000000000L}); - public static final BitSet FOLLOW_decllist_in_decllist483 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_modifier_in_decl509 = new BitSet(new long[]{0x0000000000000400L}); - public static final BitSet FOLLOW_ID_in_decl511 = new BitSet(new long[]{0x0000000004000000L}); - public static final BitSet FOLLOW_26_in_decl513 = new BitSet(new long[]{0x0000010900000000L}); - public static final BitSet FOLLOW_type_in_decl515 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_28_in_decl517 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_39_in_modifier543 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_36_in_modifier549 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_38_in_modifier555 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_35_in_type580 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_32_in_type586 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_40_in_type592 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_29_in_statlist613 = new BitSet(new long[]{0x00000406A0000400L}); - public static final BitSet FOLLOW_stat_in_statlist616 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_28_in_statlist618 = new BitSet(new long[]{0x00000406A0000400L}); - public static final BitSet FOLLOW_31_in_statlist622 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_assignstat_in_stat649 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_condstat_in_stat655 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_whilestat_in_stat661 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_forstat_in_stat667 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_statlist_in_stat694 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ID_in_assignstat728 = new BitSet(new long[]{0x0000000008000000L}); - public static final BitSet FOLLOW_27_in_assignstat730 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr_in_assignstat732 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_34_in_condstat754 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_cond_in_condstat756 = new BitSet(new long[]{0x0000020000000000L}); - public static final BitSet FOLLOW_41_in_condstat758 = new BitSet(new long[]{0x0000040620000400L}); - public static final BitSet FOLLOW_stat_in_condstat760 = new BitSet(new long[]{0x0000000040000002L}); - public static final BitSet FOLLOW_condElseStat_in_condstat762 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_30_in_condElseStat785 = new BitSet(new long[]{0x0000040620000400L}); - public static final BitSet FOLLOW_stat_in_condElseStat787 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_42_in_whilestat806 = new BitSet(new long[]{0x0000000000800000L}); - public static final BitSet FOLLOW_23_in_whilestat808 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_cond_in_whilestat810 = new BitSet(new long[]{0x0000000001000000L}); - public static final BitSet FOLLOW_24_in_whilestat812 = new BitSet(new long[]{0x0000040620000400L}); - public static final BitSet FOLLOW_stat_in_whilestat814 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_33_in_forstat837 = new BitSet(new long[]{0x0000000000800000L}); - public static final BitSet FOLLOW_23_in_forstat839 = new BitSet(new long[]{0x0000000000000400L}); - public static final BitSet FOLLOW_assignstat_in_forstat841 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_28_in_forstat843 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_cond_in_forstat845 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_28_in_forstat847 = new BitSet(new long[]{0x0000000000000400L}); - public static final BitSet FOLLOW_assignstat_in_forstat849 = new BitSet(new long[]{0x0000000001000000L}); - public static final BitSet FOLLOW_24_in_forstat851 = new BitSet(new long[]{0x0000040620000400L}); - public static final BitSet FOLLOW_stat_in_forstat853 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_expr896 = new BitSet(new long[]{0x0000000000200000L}); - public static final BitSet FOLLOW_UPLUS_in_expr898 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr_in_expr900 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_expr933 = new BitSet(new long[]{0x0000000000080000L}); - public static final BitSet FOLLOW_UMINUS_in_expr935 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr_in_expr937 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_expr967 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_expr21000 = new BitSet(new long[]{0x0000000000100000L}); - public static final BitSet FOLLOW_UMULTIPLY_in_expr21002 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr2_in_expr21004 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_expr21032 = new BitSet(new long[]{0x0000000000040000L}); - public static final BitSet FOLLOW_UDIVIDE_in_expr21034 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr2_in_expr21036 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_expr21064 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_number_in_expr31097 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_UMINUS_in_expr31136 = new BitSet(new long[]{0x0000000000000A00L}); - public static final BitSet FOLLOW_number_in_expr31138 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_STRINGCONST_in_expr31172 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ID_in_expr31178 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_23_in_expr31202 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr_in_expr31204 = new BitSet(new long[]{0x0000000001000000L}); - public static final BitSet FOLLOW_24_in_expr31206 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr_in_cond1248 = new BitSet(new long[]{0x0000000000000010L}); - public static final BitSet FOLLOW_cond2_in_cond1250 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_BINOP_in_cond21274 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr_in_cond21276 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_condElseStat_in_synpred10_X762 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_synpred11_X896 = new BitSet(new long[]{0x0000000000200000L}); - public static final BitSet FOLLOW_UPLUS_in_synpred11_X898 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr_in_synpred11_X900 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr2_in_synpred12_X933 = new BitSet(new long[]{0x0000000000080000L}); - public static final BitSet FOLLOW_UMINUS_in_synpred12_X935 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr_in_synpred12_X937 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_synpred13_X1000 = new BitSet(new long[]{0x0000000000100000L}); - public static final BitSet FOLLOW_UMULTIPLY_in_synpred13_X1002 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr2_in_synpred13_X1004 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_expr3_in_synpred14_X1032 = new BitSet(new long[]{0x0000000000040000L}); - public static final BitSet FOLLOW_UDIVIDE_in_synpred14_X1034 = new BitSet(new long[]{0x0000000000890E00L}); - public static final BitSet FOLLOW_expr2_in_synpred14_X1036 = new BitSet(new long[]{0x0000000000000002L}); -} 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 7711ce3..d6cb0b7 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,10 +25,6 @@ tokens { FLOATCONST; WS; MODIFIER; - UMINUS='-'; - UPLUS='+'; - UMULTIPLY='*'; - UDIVIDE='/'; DECLIST; PROGRAM; DECL; @@ -36,6 +32,7 @@ tokens { STAT; STATLIST; EXPR; + INVALID; } @parser::header {package de.dhbw.compiler.antlrxparser;} @@ -48,31 +45,32 @@ ID: ('a'..'z' | 'A'..'Z') greedy = true; // Lese alle möglichen Zeichen ein -> Zahlen in ID -> bleibt weiterhin ID }: 'a'..'z' | 'A'..'Z' | '0'..'9')*; -INTCONST: ('0'..'9')+; -FLOATCONST: INTCONST '.' INTCONST; +INTCONST: '0' | ('1'..'9') ('0'..'9')*; +FLOATCONST: INTCONST ('.' DIGIT*)? ('e'|'E')('+' |'-' )? INTCONST + | INTCONST ('.' DIGIT*)?; STRINGCONST: '"' (ESCAPE | ~('\\' | '"'))* '"'; ESCAPE: '\\' ('\"' |'\'' | '\\'); -BINOP: '+' | '-' | '*' | '/' | '<' | '>' | '='; +WS: ('\t' | ' ' | '\r' | '\n' | '\f')+ { skip(); }; -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 -> ^(PROGRAM ID decllist statlist); // Declaration decllist: decl decllist -> ^(DECLIST decl decllist); decl: modifier ID ':' type ';' -> ^(DECL modifier ID type); -modifier: mod='read' | mod='print' | mod='read print' -> ^(MODIFIER[mod]); -type: t='int' | t='float' | t='string' -> ^(TYPE[t]); +modifier: 'read' 'print'? | 'read' | 'print'; +type: 'int' | 'float' | 'string'; // Block statlist: 'begin' (stat ';')* 'end' -> ^(STATLIST stat*); -stat: t=assignstat | t=condstat | t=whilestat | t=forstat -> ^(STAT[t]) - | statlist - -> ^(STATLIST statlist); +stat: assignstat | condstat | whilestat | forstat | statlist; assignstat: ID ':=' expr -> ^(':=' ID expr); condstat: 'if' cond 'then' stat condElseStat? -> ^('if' cond stat condElseStat? ); condElseStat: 'else' stat -> ^('else' stat); @@ -80,18 +78,23 @@ whilestat: 'while' '(' cond ')' stat -> ^('while' cond stat); forstat: 'for' '(' assignstat ';' cond ';' assignstat ')' stat -> ^('for' assignstat cond assignstat stat); -expr: expr2 UPLUS expr -> ^(UPLUS expr2 expr) - | expr2 UMINUS expr -> ^(UMINUS expr2 expr) +expr: expr2 '+' expr -> ^('+' expr2 expr) + | expr2 '-' expr -> ^('-' expr2 expr) | expr2 -> ^(expr2); -expr2: expr3 UMULTIPLY expr2 -> ^(UMULTIPLY expr3 expr2) - | expr3 UDIVIDE expr2 -> ^(UDIVIDE expr3 expr2) +expr2: expr3 '*' expr2 -> ^('*' expr3 expr2) + | expr3 '/' expr2 -> ^('/' expr3 expr2) | expr3 -> ^(expr3); -expr3: number -> ^(number) - | UMINUS number -> ^(UMINUS number) - | t=STRINGCONST | t=ID -> ^($t) - | '(' expr ')' -> ^(expr); +expr3: number | '-' number | STRINGCONST | '('! expr^ ')'; number: INTCONST | FLOATCONST; -cond: expr cond2 -> ^(expr cond2); -cond2: BINOP expr -> ^(BINOP expr); +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 new file mode 100644 index 0000000..f7075a8 --- /dev/null +++ b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.tokens @@ -0,0 +1,68 @@ +T__20=20 +T__21=21 +T__22=22 +T__23=23 +T__24=24 +T__25=25 +T__26=26 +T__27=27 +T__28=28 +T__29=29 +T__30=30 +T__31=31 +T__32=32 +T__33=33 +T__34=34 +T__35=35 +T__36=36 +T__37=37 +T__38=38 +T__39=39 +T__40=40 +T__41=41 +T__42=42 +T__43=43 +T__44=44 +T__45=45 +DECL=4 +DECLIST=5 +DIGIT=6 +ESCAPE=7 +EXPR=8 +FLOATCONST=9 +ID=10 +INTCONST=11 +INVALID=12 +MODIFIER=13 +PROGRAM=14 +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 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 4e892a5..b3cf828 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 /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g 2020-06-03 10:22:37 +// $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 package de.dhbw.compiler.antlrxparser; import org.antlr.runtime.*; @@ -9,11 +9,48 @@ import java.util.ArrayList; @SuppressWarnings("all") public class XLexer extends Lexer { public static final int EOF=-1; - public static final int T__8=8; - public static final int FLOATCONST=4; - public static final int ID=5; - public static final int INTCONST=6; - public static final int WS=7; + 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; + public static final int T__24=24; + public static final int T__25=25; + public static final int T__26=26; + public static final int T__27=27; + public static final int T__28=28; + public static final int T__29=29; + public static final int T__30=30; + public static final int T__31=31; + public static final int T__32=32; + public static final int T__33=33; + public static final int T__34=34; + public static final int T__35=35; + public static final int T__36=36; + public static final int T__37=37; + public static final int T__38=38; + public static final int T__39=39; + public static final int T__40=40; + public static final int T__41=41; + public static final int T__42=42; + 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 DECL=4; + public static final int DECLIST=5; + public static final int DIGIT=6; + public static final int ESCAPE=7; + public static final int EXPR=8; + public static final int FLOATCONST=9; + public static final int ID=10; + public static final int INTCONST=11; + public static final int INVALID=12; + public static final int MODIFIER=13; + public static final int PROGRAM=14; + public static final int STAT=15; + public static final int STATLIST=16; + public static final int STRINGCONST=17; + public static final int TYPE=18; + public static final int WS=19; // delegates // delegators @@ -28,17 +65,177 @@ public class XLexer extends Lexer { public XLexer(CharStream input, RecognizerSharedState state) { super(input,state); } - @Override public String getGrammarFileName() { return "/Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g"; } + @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__8" - public final void mT__8() throws RecognitionException { + // $ANTLR start "T__20" + public final void mT__20() throws RecognitionException { try { - int _type = T__8; + int _type = T__20; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:9:6: ( 'TODO' ) - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:9:8: 'TODO' + // 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("TODO"); + 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: ')' + { + match(')'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__21" + + // $ANTLR start "T__22" + public final void mT__22() throws RecognitionException { + 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: '*' + { + match('*'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__22" + + // $ANTLR start "T__23" + public final void mT__23() throws RecognitionException { + 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: '+' + { + match('+'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__23" + + // $ANTLR start "T__24" + public final void mT__24() throws RecognitionException { + 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: '-' + { + match('-'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__24" + + // $ANTLR start "T__25" + public final void mT__25() throws RecognitionException { + 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: '.' + { + match('.'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__25" + + // $ANTLR start "T__26" + public final void mT__26() throws RecognitionException { + 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: '/' + { + match('/'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__26" + + // $ANTLR start "T__27" + public final void mT__27() throws RecognitionException { + 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: ':' + { + match(':'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__27" + + // $ANTLR start "T__28" + public final void mT__28() throws RecognitionException { + 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: ':=' + { + match(":="); } @@ -49,15 +246,368 @@ public class XLexer extends Lexer { // do for sure before leaving } } - // $ANTLR end "T__8" + // $ANTLR end "T__28" + + // $ANTLR start "T__29" + public final void mT__29() throws RecognitionException { + 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: ';' + { + match(';'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__29" + + // $ANTLR start "T__30" + public final void mT__30() throws RecognitionException { + 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: '<' + { + match('<'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__30" + + // $ANTLR start "T__31" + public final void mT__31() throws RecognitionException { + 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: '=' + { + match('='); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__31" + + // $ANTLR start "T__32" + public final void mT__32() throws RecognitionException { + 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: '>' + { + match('>'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__32" + + // $ANTLR start "T__33" + public final void mT__33() throws RecognitionException { + 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' + { + match("begin"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__33" + + // $ANTLR start "T__34" + public final void mT__34() throws RecognitionException { + 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' + { + match("else"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__34" + + // $ANTLR start "T__35" + public final void mT__35() throws RecognitionException { + 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' + { + match("end"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__35" + + // $ANTLR start "T__36" + public final void mT__36() throws RecognitionException { + 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' + { + match("float"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__36" + + // $ANTLR start "T__37" + public final void mT__37() throws RecognitionException { + 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' + { + match("for"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__37" + + // $ANTLR start "T__38" + public final void mT__38() throws RecognitionException { + 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' + { + match("if"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__38" + + // $ANTLR start "T__39" + public final void mT__39() throws RecognitionException { + 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' + { + match("int"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__39" + + // $ANTLR start "T__40" + public final void mT__40() throws RecognitionException { + 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' + { + match("print"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__40" + + // $ANTLR start "T__41" + public final void mT__41() throws RecognitionException { + 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' + { + match("program"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__41" + + // $ANTLR start "T__42" + public final void mT__42() throws RecognitionException { + 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' + { + match("read"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__42" + + // $ANTLR start "T__43" + public final void mT__43() throws RecognitionException { + 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' + { + match("string"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__43" + + // $ANTLR start "T__44" + public final void mT__44() throws RecognitionException { + 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' + { + match("then"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__44" + + // $ANTLR start "T__45" + public final void mT__45() throws RecognitionException { + 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:34:7: ( 'while' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:34:9: 'while' + { + match("while"); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "T__45" // $ANTLR start "ID" public final void mID() throws RecognitionException { try { int _type = ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:34:3: ( ( 'a' .. 'z' | 'A' .. 'Z' ) ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* ) - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:34: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: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' )* { if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) { input.consume(); @@ -67,7 +617,7 @@ public class XLexer extends Lexer { recover(mse); throw mse; } - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:35: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:44:13: ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )* loop1: while (true) { int alt1=4; @@ -149,19 +699,19 @@ public class XLexer extends Lexer { } switch (alt1) { case 1 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:37:16: 'a' .. 'z' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:46:16: 'a' .. 'z' { matchRange('a','z'); } break; case 2 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:37:27: 'A' .. 'Z' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:46:27: 'A' .. 'Z' { matchRange('A','Z'); } break; case 3 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:37:38: '0' .. '9' + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:46:38: '0' .. '9' { matchRange('0','9'); } @@ -188,24 +738,33 @@ public class XLexer extends Lexer { try { int _type = INTCONST; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:38:9: ( ( '0' .. '9' )+ ) - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:38:13: ( '0' .. '9' )+ - { - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:38:13: ( '0' .. '9' )+ - int cnt2=0; - loop2: - while (true) { - int alt2=2; - int LA2_0 = input.LA(1); - if ( ((LA2_0 >= '0' && LA2_0 <= '9')) ) { - alt2=1; - } + // 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' )* ) + int alt3=2; + int LA3_0 = input.LA(1); + if ( (LA3_0=='0') ) { + alt3=1; + } + else if ( ((LA3_0 >= '1' && LA3_0 <= '9')) ) { + alt3=2; + } - switch (alt2) { + else { + NoViableAltException nvae = + new NoViableAltException("", 3, 0, input); + throw nvae; + } + + switch (alt3) { case 1 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g: + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:48:17: '0' { - if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) { + 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' )* + { + if ( (input.LA(1) >= '1' && input.LA(1) <= '9') ) { input.consume(); } else { @@ -213,19 +772,39 @@ 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' )* + loop2: + while (true) { + int alt2=2; + int LA2_0 = input.LA(1); + if ( ((LA2_0 >= '0' && LA2_0 <= '9')) ) { + alt2=1; + } + + switch (alt2) { + case 1 : + // 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') ) { + input.consume(); + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse; + } + } + break; + + default : + break loop2; + } + } + } break; - default : - if ( cnt2 >= 1 ) break loop2; - EarlyExitException eee = new EarlyExitException(2, input); - throw eee; - } - cnt2++; } - - } - state.type = _type; state.channel = _channel; } @@ -240,16 +819,149 @@ public class XLexer extends Lexer { try { int _type = FLOATCONST; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:39:11: ( INTCONST '.' INTCONST ) - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:39:13: INTCONST '.' INTCONST - { - mINTCONST(); + // 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 )* )? ) + 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 + { + mINTCONST(); - match('.'); - mINTCONST(); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:26: ( '.' ( DIGIT )* )? + int alt5=2; + int LA5_0 = input.LA(1); + if ( (LA5_0=='.') ) { + alt5=1; + } + 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 )* + { + match('.'); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:31: ( DIGIT )* + loop4: + while (true) { + int alt4=2; + int LA4_0 = input.LA(1); + if ( ((LA4_0 >= '0' && LA4_0 <= '9')) ) { + alt4=1; + } + + switch (alt4) { + case 1 : + // 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') ) { + input.consume(); + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse; + } + } + break; + + default : + break loop4; + } + } + + } + break; + + } + + if ( input.LA(1)=='E'||input.LA(1)=='e' ) { + input.consume(); + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse; + } + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:49:49: ( '+' | '-' )? + int alt6=2; + int LA6_0 = input.LA(1); + if ( (LA6_0=='+'||LA6_0=='-') ) { + alt6=1; + } + switch (alt6) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g: + { + if ( input.LA(1)=='+'||input.LA(1)=='-' ) { + input.consume(); + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse; + } + } + break; + + } + + mINTCONST(); + + } + 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 )* )? + { + mINTCONST(); + + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:28: ( '.' ( DIGIT )* )? + int alt8=2; + int LA8_0 = input.LA(1); + if ( (LA8_0=='.') ) { + alt8=1; + } + 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 )* + { + match('.'); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:50:33: ( DIGIT )* + loop7: + while (true) { + int alt7=2; + int LA7_0 = input.LA(1); + if ( ((LA7_0 >= '0' && LA7_0 <= '9')) ) { + alt7=1; + } + + switch (alt7) { + case 1 : + // 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') ) { + input.consume(); + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse; + } + } + break; + + default : + break loop7; + } + } + + } + break; + + } + + } + break; } - state.type = _type; state.channel = _channel; } @@ -259,27 +971,115 @@ public class XLexer extends Lexer { } // $ANTLR end "FLOATCONST" + // $ANTLR start "STRINGCONST" + public final void mSTRINGCONST() throws RecognitionException { + 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 |~ ( '\\\\' | '\"' ) )* '\"' + { + match('\"'); + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:52:21: ( ESCAPE |~ ( '\\\\' | '\"' ) )* + loop10: + while (true) { + int alt10=3; + int LA10_0 = input.LA(1); + if ( (LA10_0=='\\') ) { + alt10=1; + } + else if ( ((LA10_0 >= '\u0000' && LA10_0 <= '!')||(LA10_0 >= '#' && LA10_0 <= '[')||(LA10_0 >= ']' && LA10_0 <= '\uFFFF')) ) { + alt10=2; + } + + 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 + { + mESCAPE(); + + } + break; + case 2 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:52:31: ~ ( '\\\\' | '\"' ) + { + if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '!')||(input.LA(1) >= '#' && input.LA(1) <= '[')||(input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) { + input.consume(); + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse; + } + } + break; + + default : + break loop10; + } + } + + match('\"'); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "STRINGCONST" + + // $ANTLR start "ESCAPE" + public final void mESCAPE() throws RecognitionException { + 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: '\\\\' ( '\\\"' | '\\'' | '\\\\' ) + { + match('\\'); + if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\' ) { + input.consume(); + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse; + } + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "ESCAPE" + // $ANTLR start "WS" public final void mWS() throws RecognitionException { try { int _type = WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:41:3: ( ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ ) - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:41:13: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ + // 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' )+ { - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:41:13: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ - int cnt3=0; - loop3: + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:55:17: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ + int cnt11=0; + loop11: while (true) { - int alt3=2; - int LA3_0 = input.LA(1); - if ( ((LA3_0 >= '\t' && LA3_0 <= '\n')||(LA3_0 >= '\f' && LA3_0 <= '\r')||LA3_0==' ') ) { - alt3=1; + int alt11=2; + int LA11_0 = input.LA(1); + if ( ((LA11_0 >= '\t' && LA11_0 <= '\n')||(LA11_0 >= '\f' && LA11_0 <= '\r')||LA11_0==' ') ) { + alt11=1; } - switch (alt3) { + switch (alt11) { case 1 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g: + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g: { if ( (input.LA(1) >= '\t' && input.LA(1) <= '\n')||(input.LA(1) >= '\f' && input.LA(1) <= '\r')||input.LA(1)==' ' ) { input.consume(); @@ -293,11 +1093,11 @@ public class XLexer extends Lexer { break; default : - if ( cnt3 >= 1 ) break loop3; - EarlyExitException eee = new EarlyExitException(3, input); + if ( cnt11 >= 1 ) break loop11; + EarlyExitException eee = new EarlyExitException(11, input); throw eee; } - cnt3++; + cnt11++; } skip(); @@ -312,45 +1112,284 @@ 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: + { + if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) { + input.consume(); + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse; + } + } + + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "DIGIT" + @Override public void mTokens() throws RecognitionException { - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:1:8: ( T__8 | ID | INTCONST | FLOATCONST | WS ) - int alt4=5; - alt4 = dfa4.predict(input); - switch (alt4) { + // 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; + alt12 = dfa12.predict(input); + switch (alt12) { case 1 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:1:10: T__8 + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:10: T__20 { - mT__8(); + mT__20(); } break; case 2 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:1:15: ID + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:16: 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + 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 + { + mT__45(); + + } + break; + case 27 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:166: ID { mID(); } break; - case 3 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:1:18: INTCONST + case 28 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:169: INTCONST { mINTCONST(); } break; - case 4 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:1:27: FLOATCONST + case 29 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:178: FLOATCONST { mFLOATCONST(); } break; - case 5 : - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:1:38: WS + case 30 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:189: STRINGCONST + { + mSTRINGCONST(); + + } + break; + case 31 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:201: ESCAPE + { + mESCAPE(); + + } + break; + case 32 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:1:208: WS { 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; @@ -358,66 +1397,292 @@ public class XLexer extends Lexer { } - protected DFA4 dfa4 = new DFA4(this); - static final String DFA4_eotS = - "\1\uffff\1\2\1\uffff\1\6\1\uffff\1\2\2\uffff\1\2\1\12\1\uffff"; - static final String DFA4_eofS = - "\13\uffff"; - static final String DFA4_minS = - "\1\11\1\117\1\uffff\1\56\1\uffff\1\104\2\uffff\1\117\1\60\1\uffff"; - static final String DFA4_maxS = - "\1\172\1\117\1\uffff\1\71\1\uffff\1\104\2\uffff\1\117\1\172\1\uffff"; - static final String DFA4_acceptS = - "\2\uffff\1\2\1\uffff\1\5\1\uffff\1\3\1\4\2\uffff\1\1"; - static final String DFA4_specialS = - "\13\uffff}>"; - static final String[] DFA4_transitionS = { - "\2\4\1\uffff\2\4\22\uffff\1\4\17\uffff\12\3\7\uffff\23\2\1\1\6\2\6\uffff"+ - "\32\2", - "\1\5", + protected DFA9 dfa9 = new DFA9(this); + protected DFA12 dfa12 = new DFA12(this); + static final String DFA9_eotS = + "\1\uffff\2\3\1\uffff\1\3\1\uffff\2\3"; + static final String DFA9_eofS = + "\10\uffff"; + static final String DFA9_minS = + "\1\60\2\56\1\uffff\1\60\1\uffff\1\56\1\60"; + static final String DFA9_maxS = + "\1\71\2\145\1\uffff\1\145\1\uffff\2\145"; + static final String DFA9_acceptS = + "\3\uffff\1\2\1\uffff\1\1\2\uffff"; + static final String DFA9_specialS = + "\10\uffff}>"; + static final String[] DFA9_transitionS = { + "\1\1\11\2", + "\1\4\26\uffff\1\5\37\uffff\1\5", + "\1\4\1\uffff\12\6\13\uffff\1\5\37\uffff\1\5", "", - "\1\7\1\uffff\12\3", + "\12\7\13\uffff\1\5\37\uffff\1\5", "", - "\1\10", - "", - "", - "\1\11", - "\12\2\7\uffff\32\2\6\uffff\32\2", - "" + "\1\4\1\uffff\12\6\13\uffff\1\5\37\uffff\1\5", + "\12\7\13\uffff\1\5\37\uffff\1\5" }; - static final short[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS); - static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS); - static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS); - static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS); - static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS); - static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS); - static final short[][] DFA4_transition; + static final short[] DFA9_eot = DFA.unpackEncodedString(DFA9_eotS); + static final short[] DFA9_eof = DFA.unpackEncodedString(DFA9_eofS); + static final char[] DFA9_min = DFA.unpackEncodedStringToUnsignedChars(DFA9_minS); + static final char[] DFA9_max = DFA.unpackEncodedStringToUnsignedChars(DFA9_maxS); + static final short[] DFA9_accept = DFA.unpackEncodedString(DFA9_acceptS); + static final short[] DFA9_special = DFA.unpackEncodedString(DFA9_specialS); + static final short[][] DFA9_transition; static { - int numStates = DFA4_transitionS.length; - DFA4_transition = new short[numStates][]; + int numStates = DFA9_transitionS.length; + DFA9_transition = new short[numStates][]; for (int i=0; i"; + 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", + "", + "", + "", + "", + "", + "", + "", + "\1\44", + "", + "", + "", + "", + "\1\52", + "\1\54\1\uffff\1\55", + "\1\56\2\uffff\1\57", + "\1\60\7\uffff\1\61", + "\1\62", + "\1\63", + "\1\64", + "\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\75", + "", + "\1\76", + "\1\77", + "\1\100", + "\1\101", + "\12\53\7\uffff\32\53\6\uffff\32\53", + "\1\103", + "\1\104\5\uffff\1\105", + "\1\106", + "\1\107", + "\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\53\7\uffff\32\53\6\uffff\32\53", + "\1\120", + "\1\121", + "\1\122", + "\1\123", + "\1\124", + "\1\125", + "\1\126", + "\12\53\7\uffff\32\53\6\uffff\32\53", + "", + "\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", + "", + "" + }; + + static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS); + static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS); + static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS); + static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS); + static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS); + static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS); + static final short[][] DFA12_transition; + + static { + int numStates = DFA12_transitionS.length; + DFA12_transition = new short[numStates][]; + for (int i=0; i= '\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; } } 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 6584c8e..adbdfb2 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 /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g 2020-06-03 10:22:37 +// $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 package de.dhbw.compiler.antlrxparser; import org.antlr.runtime.*; @@ -14,15 +14,56 @@ import org.antlr.runtime.tree.*; @SuppressWarnings("all") public class XParser extends Parser { public static final String[] tokenNames = new String[] { - "", "", "", "", "FLOATCONST", "ID", "INTCONST", - "WS", "'TODO'" + "", "", "", "", "DECL", "DECLIST", "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'" }; public static final int EOF=-1; - public static final int T__8=8; - public static final int FLOATCONST=4; - public static final int ID=5; - public static final int INTCONST=6; - public static final int WS=7; + 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; + public static final int T__24=24; + public static final int T__25=25; + public static final int T__26=26; + public static final int T__27=27; + public static final int T__28=28; + public static final int T__29=29; + public static final int T__30=30; + public static final int T__31=31; + public static final int T__32=32; + public static final int T__33=33; + public static final int T__34=34; + public static final int T__35=35; + public static final int T__36=36; + public static final int T__37=37; + public static final int T__38=38; + public static final int T__39=39; + public static final int T__40=40; + public static final int T__41=41; + public static final int T__42=42; + 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 DECL=4; + public static final int DECLIST=5; + public static final int DIGIT=6; + public static final int ESCAPE=7; + public static final int EXPR=8; + public static final int FLOATCONST=9; + public static final int ID=10; + public static final int INTCONST=11; + public static final int INVALID=12; + public static final int MODIFIER=13; + public static final int PROGRAM=14; + public static final int STAT=15; + public static final int STATLIST=16; + public static final int STRINGCONST=17; + public static final int TYPE=18; + public static final int WS=19; // delegates public Parser[] getDelegates() { @@ -48,7 +89,7 @@ public class XParser extends Parser { return adaptor; } @Override public String[] getTokenNames() { return XParser.tokenNames; } - @Override public String getGrammarFileName() { return "/Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g"; } + @Override public String getGrammarFileName() { return "C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g"; } public static class program_return extends ParserRuleReturnScope { @@ -59,7 +100,7 @@ public class XParser extends Parser { // $ANTLR start "program" - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:44:1: program : 'TODO' ; + // 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 ) ; public final XParser.program_return program() throws RecognitionException { XParser.program_return retval = new XParser.program_return(); retval.start = input.LT(1); @@ -67,20 +108,83 @@ public class XParser extends Parser { CommonTree root_0 = null; Token string_literal1=null; + Token ID2=null; + Token char_literal3=null; + Token char_literal6=null; + Token EOF7=null; + ParserRuleReturnScope decllist4 =null; + ParserRuleReturnScope statlist5 =null; CommonTree string_literal1_tree=null; + CommonTree ID2_tree=null; + 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 { - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:44:8: ( 'TODO' ) - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:44:13: 'TODO' + // 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 { - root_0 = (CommonTree)adaptor.nil(); + string_literal1=(Token)match(input,41,FOLLOW_41_in_program473); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_41.add(string_literal1); + ID2=(Token)match(input,ID,FOLLOW_ID_in_program475); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ID.add(ID2); - string_literal1=(Token)match(input,8,FOLLOW_8_in_program272); if (state.failed) return retval; + char_literal3=(Token)match(input,29,FOLLOW_29_in_program477); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_29.add(char_literal3); + + pushFollow(FOLLOW_decllist_in_program479); + decllist4=decllist(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_decllist.add(decllist4.getTree()); + pushFollow(FOLLOW_statlist_in_program481); + 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 ) { - string_literal1_tree = (CommonTree)adaptor.create(string_literal1); - adaptor.addChild(root_0, string_literal1_tree); + 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; } } @@ -104,9 +208,2673 @@ public class XParser extends Parser { } // $ANTLR end "program" + + public static class decllist_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ) ; + public final XParser.decllist_return decllist() throws RecognitionException { + XParser.decllist_return retval = new XParser.decllist_return(); + retval.start = input.LT(1); + + 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 + { + 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()); + // AST REWRITE + // elements: decl, 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(); + // 66:31: -> ^( DECLIST decl decllist ) + { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:66:34: ^( DECLIST decl decllist ) + { + 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()); + adaptor.addChild(root_0, root_1); + } + + } + + + retval.tree = root_0; + } + + } + + 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 "decllist" + + + public static class decl_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ) ; + 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; + + 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"); + RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); + 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 ';' + { + pushFollow(FOLLOW_modifier_in_decl539); + modifier10=modifier(); + 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); + + // AST REWRITE + // elements: modifier, type, ID + // 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(); + // 67:42: -> ^( 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 ) + { + 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()); + adaptor.addChild(root_1, stream_ID.nextNode()); + adaptor.addChild(root_1, stream_type.nextTree()); + adaptor.addChild(root_0, root_1); + } + + } + + + retval.tree = root_0; + } + + } + + 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 "decl" + + + public static class modifier_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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' ); + 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_literal15=null; + Token string_literal16=null; + Token string_literal17=null; + Token string_literal18=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; + } + else if ( (synpred3_X()) ) { + alt2=2; + } + + else { + if (state.backtracking>0) {state.failed=true; return retval;} + int nvaeMark = input.mark(); + try { + input.consume(); + NoViableAltException nvae = + new NoViableAltException("", 2, 1, input); + throw nvae; + } finally { + input.rewind(nvaeMark); + } + } + + } + else if ( (LA2_0==40) ) { + alt2=3; + } + + else { + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 2, 0, input); + throw nvae; + } + + switch (alt2) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:17: 'read' ( 'print' )? + { + root_0 = (CommonTree)adaptor.nil(); + + + string_literal15=(Token)match(input,42,FOLLOW_42_in_modifier571); if (state.failed) return retval; + if ( state.backtracking==0 ) { + string_literal15_tree = (CommonTree)adaptor.create(string_literal15); + adaptor.addChild(root_0, string_literal15_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; + } + switch (alt1) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:24: 'print' + { + string_literal16=(Token)match(input,40,FOLLOW_40_in_modifier573); if (state.failed) return retval; + if ( state.backtracking==0 ) { + string_literal16_tree = (CommonTree)adaptor.create(string_literal16); + adaptor.addChild(root_0, string_literal16_tree); + } + + } + break; + + } + + } + break; + case 2 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:35: 'read' + { + root_0 = (CommonTree)adaptor.nil(); + + + string_literal17=(Token)match(input,42,FOLLOW_42_in_modifier578); if (state.failed) return retval; + if ( state.backtracking==0 ) { + string_literal17_tree = (CommonTree)adaptor.create(string_literal17); + adaptor.addChild(root_0, string_literal17_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' + { + root_0 = (CommonTree)adaptor.nil(); + + + string_literal18=(Token)match(input,40,FOLLOW_40_in_modifier582); if (state.failed) return retval; + if ( state.backtracking==0 ) { + string_literal18_tree = (CommonTree)adaptor.create(string_literal18); + adaptor.addChild(root_0, string_literal18_tree); + } + + } + break; + + } + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + } + finally { + // do for sure before leaving + } + return retval; + } + // $ANTLR end "modifier" + + + public static class type_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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' ); + 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; + + CommonTree set19_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: + { + root_0 = (CommonTree)adaptor.nil(); + + + set19=input.LT(1); + if ( input.LA(1)==36||input.LA(1)==39||input.LA(1)==43 ) { + input.consume(); + if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set19)); + 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 "type" + + + public static class statlist_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 )* ) ; + 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; + + 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"); + 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' + { + string_literal20=(Token)match(input,33,FOLLOW_33_in_statlist620); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_33.add(string_literal20); + + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:25: ( stat ';' )* + loop3: + 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; + } + + switch (alt3) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:72:26: stat ';' + { + pushFollow(FOLLOW_stat_in_statlist623); + stat21=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); + + } + break; + + default : + break loop3; + } + } + + string_literal23=(Token)match(input,35,FOLLOW_35_in_statlist629); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_35.add(string_literal23); + + // AST REWRITE + // elements: stat + // 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(); + // 72: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 )* ) + { + 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 )* + while ( stream_stat.hasNext() ) { + adaptor.addChild(root_1, stream_stat.nextTree()); + } + stream_stat.reset(); + + adaptor.addChild(root_0, root_1); + } + + } + + + retval.tree = root_0; + } + + } + + 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 "statlist" + + + public static class stat_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ); + 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; + + + 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; + switch ( input.LA(1) ) { + case ID: + { + alt4=1; + } + break; + case 38: + { + alt4=2; + } + break; + case 45: + { + alt4=3; + } + break; + case 37: + { + alt4=4; + } + break; + case 33: + { + alt4=5; + } + break; + default: + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 4, 0, input); + throw nvae; + } + switch (alt4) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:73:17: assignstat + { + root_0 = (CommonTree)adaptor.nil(); + + + pushFollow(FOLLOW_assignstat_in_stat654); + assignstat24=assignstat(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, assignstat24.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 + { + root_0 = (CommonTree)adaptor.nil(); + + + pushFollow(FOLLOW_condstat_in_stat658); + condstat25=condstat(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, condstat25.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 + { + root_0 = (CommonTree)adaptor.nil(); + + + pushFollow(FOLLOW_whilestat_in_stat662); + whilestat26=whilestat(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, whilestat26.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 + { + root_0 = (CommonTree)adaptor.nil(); + + + pushFollow(FOLLOW_forstat_in_stat666); + forstat27=forstat(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, forstat27.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 + { + root_0 = (CommonTree)adaptor.nil(); + + + pushFollow(FOLLOW_statlist_in_stat670); + statlist28=statlist(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, statlist28.getTree()); + + } + break; + + } + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + } + finally { + // do for sure before leaving + } + return retval; + } + // $ANTLR end "stat" + + + public static class assignstat_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ) ; + 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; + + CommonTree ID29_tree=null; + CommonTree string_literal30_tree=null; + RewriteRuleTokenStream stream_28=new RewriteRuleTokenStream(adaptor,"token 28"); + 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 + { + ID29=(Token)match(input,ID,FOLLOW_ID_in_assignstat680); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ID.add(ID29); + + string_literal30=(Token)match(input,28,FOLLOW_28_in_assignstat682); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_28.add(string_literal30); + + pushFollow(FOLLOW_expr_in_assignstat684); + expr31=expr(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_expr.add(expr31.getTree()); + // AST REWRITE + // elements: 28, expr, ID + // 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(); + // 74: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 ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_28.nextNode(), root_1); + adaptor.addChild(root_1, stream_ID.nextNode()); + adaptor.addChild(root_1, stream_expr.nextTree()); + adaptor.addChild(root_0, root_1); + } + + } + + + retval.tree = root_0; + } + + } + + 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 "assignstat" + + + public static class condstat_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 )? ) ; + 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; + + 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"); + 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 )? + { + string_literal32=(Token)match(input,38,FOLLOW_38_in_condstat706); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_38.add(string_literal32); + + pushFollow(FOLLOW_cond_in_condstat708); + cond33=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); + + pushFollow(FOLLOW_stat_in_condstat712); + stat35=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; + } + } + switch (alt5) { + case 1 : + // 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_condstat714); + condElseStat36=condElseStat(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_condElseStat.add(condElseStat36.getTree()); + } + break; + + } + + // AST REWRITE + // elements: stat, 38, cond, condElseStat + // 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(); + // 75: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 )? ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_38.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 )? + if ( stream_condElseStat.hasNext() ) { + adaptor.addChild(root_1, stream_condElseStat.nextTree()); + } + stream_condElseStat.reset(); + + adaptor.addChild(root_0, root_1); + } + + } + + + retval.tree = root_0; + } + + } + + 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 "condstat" + + + public static class condElseStat_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ) ; + 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; + + CommonTree string_literal37_tree=null; + RewriteRuleTokenStream stream_34=new RewriteRuleTokenStream(adaptor,"token 34"); + 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 + { + string_literal37=(Token)match(input,34,FOLLOW_34_in_condElseStat737); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_34.add(string_literal37); + + pushFollow(FOLLOW_stat_in_condElseStat739); + stat38=stat(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_stat.add(stat38.getTree()); + // AST REWRITE + // elements: 34, stat + // 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(); + // 76: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 ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_34.nextNode(), root_1); + adaptor.addChild(root_1, stream_stat.nextTree()); + adaptor.addChild(root_0, root_1); + } + + } + + + retval.tree = root_0; + } + + } + + 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 "condElseStat" + + + public static class whilestat_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ) ; + 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; + + 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"); + 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 + { + string_literal39=(Token)match(input,45,FOLLOW_45_in_whilestat758); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_45.add(string_literal39); + + char_literal40=(Token)match(input,20,FOLLOW_20_in_whilestat760); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_20.add(char_literal40); + + pushFollow(FOLLOW_cond_in_whilestat762); + cond41=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); + + pushFollow(FOLLOW_stat_in_whilestat766); + stat43=stat(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_stat.add(stat43.getTree()); + // AST REWRITE + // elements: stat, 45, cond + // 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(); + // 77: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 ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_45.nextNode(), root_1); + adaptor.addChild(root_1, stream_cond.nextTree()); + adaptor.addChild(root_1, stream_stat.nextTree()); + adaptor.addChild(root_0, root_1); + } + + } + + + retval.tree = root_0; + } + + } + + 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 "whilestat" + + + public static class forstat_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ) ; + 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; + + 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"); + 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 + { + string_literal44=(Token)match(input,37,FOLLOW_37_in_forstat789); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_37.add(string_literal44); + + char_literal45=(Token)match(input,20,FOLLOW_20_in_forstat791); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_20.add(char_literal45); + + pushFollow(FOLLOW_assignstat_in_forstat793); + assignstat46=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); + + pushFollow(FOLLOW_cond_in_forstat797); + cond48=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); + + pushFollow(FOLLOW_assignstat_in_forstat801); + assignstat50=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); + + pushFollow(FOLLOW_stat_in_forstat805); + stat52=stat(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_stat.add(stat52.getTree()); + // AST REWRITE + // elements: assignstat, 37, stat, assignstat, cond + // 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(); + // 79: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 ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_37.nextNode(), root_1); + adaptor.addChild(root_1, stream_assignstat.nextTree()); + adaptor.addChild(root_1, stream_cond.nextTree()); + adaptor.addChild(root_1, stream_assignstat.nextTree()); + adaptor.addChild(root_1, stream_stat.nextTree()); + adaptor.addChild(root_0, root_1); + } + + } + + + retval.tree = root_0; + } + + } + + 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 "forstat" + + + public static class expr_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ) ); + 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; + ParserRuleReturnScope expr253 =null; + ParserRuleReturnScope expr55 =null; + ParserRuleReturnScope expr256 =null; + ParserRuleReturnScope expr58 =null; + ParserRuleReturnScope expr259 =null; + + CommonTree char_literal54_tree=null; + CommonTree char_literal57_tree=null; + RewriteRuleTokenStream stream_23=new RewriteRuleTokenStream(adaptor,"token 23"); + RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24"); + 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; + switch ( input.LA(1) ) { + case FLOATCONST: + case INTCONST: + { + int LA6_1 = input.LA(2); + if ( (synpred12_X()) ) { + alt6=1; + } + else if ( (synpred13_X()) ) { + alt6=2; + } + else if ( (true) ) { + alt6=3; + } + + } + break; + case 24: + { + int LA6_2 = input.LA(2); + if ( (synpred12_X()) ) { + alt6=1; + } + else if ( (synpred13_X()) ) { + alt6=2; + } + else if ( (true) ) { + alt6=3; + } + + } + break; + case STRINGCONST: + { + int LA6_3 = input.LA(2); + if ( (synpred12_X()) ) { + alt6=1; + } + else if ( (synpred13_X()) ) { + alt6=2; + } + else if ( (true) ) { + alt6=3; + } + + } + break; + case 20: + { + int LA6_4 = input.LA(2); + if ( (synpred12_X()) ) { + alt6=1; + } + else if ( (synpred13_X()) ) { + alt6=2; + } + else if ( (true) ) { + alt6=3; + } + + } + break; + default: + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 6, 0, input); + throw nvae; + } + switch (alt6) { + case 1 : + // 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_expr848); + 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); + + pushFollow(FOLLOW_expr_in_expr852); + expr55=expr(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_expr.add(expr55.getTree()); + // AST REWRITE + // elements: expr, 23, 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(); + // 81:35: -> ^( '+' expr2 expr ) + { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:81:38: ^( '+' expr2 expr ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_23.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 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(); + 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; + } + + } + break; + + } + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + } + finally { + // do for sure before leaving + } + return retval; + } + // $ANTLR end "expr" + + + public static class expr2_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ) ); + 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; + + 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"); + RewriteRuleSubtreeStream stream_expr3=new RewriteRuleSubtreeStream(adaptor,"rule expr3"); + RewriteRuleSubtreeStream stream_expr2=new RewriteRuleSubtreeStream(adaptor,"rule expr2"); + + 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; + switch ( input.LA(1) ) { + case FLOATCONST: + case INTCONST: + { + int LA7_1 = input.LA(2); + if ( (synpred14_X()) ) { + alt7=1; + } + else if ( (synpred15_X()) ) { + alt7=2; + } + else if ( (true) ) { + alt7=3; + } + + } + break; + case 24: + { + int LA7_2 = input.LA(2); + if ( (synpred14_X()) ) { + alt7=1; + } + else if ( (synpred15_X()) ) { + alt7=2; + } + else if ( (true) ) { + alt7=3; + } + + } + break; + case STRINGCONST: + { + int LA7_3 = input.LA(2); + if ( (synpred14_X()) ) { + alt7=1; + } + else if ( (synpred15_X()) ) { + alt7=2; + } + else if ( (true) ) { + alt7=3; + } + + } + break; + case 20: + { + int LA7_4 = input.LA(2); + if ( (synpred14_X()) ) { + alt7=1; + } + else if ( (synpred15_X()) ) { + alt7=2; + } + else if ( (true) ) { + alt7=3; + } + + } + break; + default: + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 7, 0, input); + throw nvae; + } + switch (alt7) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:13: expr3 '*' expr2 + { + pushFollow(FOLLOW_expr3_in_expr2952); + expr360=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); + + pushFollow(FOLLOW_expr2_in_expr2956); + expr262=expr2(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_expr2.add(expr262.getTree()); + // AST REWRITE + // elements: 22, expr2, 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(); + // 84:31: -> ^( '*' expr3 expr2 ) + { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:84:34: ^( '*' expr3 expr2 ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_22.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 2 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:85:15: expr3 '/' expr2 + { + 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(); + 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; + } + + } + break; + + } + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + } + finally { + // do for sure before leaving + } + return retval; + } + // $ANTLR end "expr2" + + + public static class expr3_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $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 ^ ')' ); + 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; + + CommonTree char_literal68_tree=null; + CommonTree STRINGCONST70_tree=null; + CommonTree char_literal71_tree=null; + CommonTree char_literal73_tree=null; + + 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; + switch ( input.LA(1) ) { + case FLOATCONST: + case INTCONST: + { + alt8=1; + } + break; + case 24: + { + alt8=2; + } + break; + case STRINGCONST: + { + alt8=3; + } + break; + case 20: + { + alt8=4; + } + break; + default: + 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:87:13: number + { + root_0 = (CommonTree)adaptor.nil(); + + + pushFollow(FOLLOW_number_in_expr31049); + number67=number(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, number67.getTree()); + + } + break; + case 2 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:87:22: '-' 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(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, number69.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 + { + root_0 = (CommonTree)adaptor.nil(); + + + STRINGCONST70=(Token)match(input,STRINGCONST,FOLLOW_STRINGCONST_in_expr31059); if (state.failed) return retval; + if ( state.backtracking==0 ) { + STRINGCONST70_tree = (CommonTree)adaptor.create(STRINGCONST70); + adaptor.addChild(root_0, STRINGCONST70_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 ^ ')' + { + 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(); + 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); + } + + } + break; + + } + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + } + finally { + // do for sure before leaving + } + return retval; + } + // $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 + public CommonTree getTree() { return tree; } + }; + + + // $ANTLR start "compOp" + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:90:1: compOp : ( '<' | '>' | '=' ); + public final XParser.compOp_return compOp() throws RecognitionException { + XParser.compOp_return retval = new XParser.compOp_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token set75=null; + + CommonTree set75_tree=null; + + try { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:90:7: ( '<' | '>' | '=' ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g: + { + root_0 = (CommonTree)adaptor.nil(); + + + set75=input.LT(1); + if ( (input.LA(1) >= 30 && input.LA(1) <= 32) ) { + input.consume(); + if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set75)); + 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 "compOp" + + + public static class cond_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $ANTLR start "cond" + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:91:1: cond : expr cond2 ; + public final XParser.cond_return cond() throws RecognitionException { + XParser.cond_return retval = new XParser.cond_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + ParserRuleReturnScope expr76 =null; + ParserRuleReturnScope cond277 =null; + + + try { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:91:5: ( expr cond2 ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:91:13: expr cond2 + { + root_0 = (CommonTree)adaptor.nil(); + + + pushFollow(FOLLOW_expr_in_cond1114); + expr76=expr(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, expr76.getTree()); + + pushFollow(FOLLOW_cond2_in_cond1116); + cond277=cond2(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, cond277.getTree()); + + } + + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + } + finally { + // do for sure before leaving + } + return retval; + } + // $ANTLR end "cond" + + + public static class cond2_return extends ParserRuleReturnScope { + CommonTree tree; + @Override + public CommonTree getTree() { return tree; } + }; + + + // $ANTLR start "cond2" + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:92:1: cond2 : compOp expr ; + public final XParser.cond2_return cond2() throws RecognitionException { + XParser.cond2_return retval = new XParser.cond2_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + ParserRuleReturnScope compOp78 =null; + ParserRuleReturnScope expr79 =null; + + + try { + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:92:6: ( compOp expr ) + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:92:13: compOp expr + { + root_0 = (CommonTree)adaptor.nil(); + + + pushFollow(FOLLOW_compOp_in_cond21127); + compOp78=compOp(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, compOp78.getTree()); + + pushFollow(FOLLOW_expr_in_cond21129); + expr79=expr(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, expr79.getTree()); + + } + + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + } + finally { + // do for sure before leaving + } + return retval; + } + // $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' )? + { + match(input,42,FOLLOW_42_in_synpred2_X571); 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; + } + switch (alt9) { + case 1 : + // C:\\Development\\Schule\\Compilerbau\\CC-Praxis-Antlr Parser fuer X-Leer\\src/de/dhbw/compiler/antlrxparser/X.g:68:24: 'print' + { + match(input,40,FOLLOW_40_in_synpred2_X573); if (state.failed) return; + + } + break; + + } + + } + + } + // $ANTLR end synpred2_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' + { + match(input,42,FOLLOW_42_in_synpred3_X578); 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 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 + { + 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(); + state._fsp--; + if (state.failed) return; + + } + + } + // $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 + { + pushFollow(FOLLOW_expr3_in_synpred14_X952); + expr3(); + state._fsp--; + if (state.failed) return; + + match(input,22,FOLLOW_22_in_synpred14_X954); if (state.failed) return; + + pushFollow(FOLLOW_expr2_in_synpred14_X956); + expr2(); + state._fsp--; + if (state.failed) return; + + } + + } + // $ANTLR end synpred14_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 + { + pushFollow(FOLLOW_expr3_in_synpred15_X984); + expr3(); + state._fsp--; + if (state.failed) return; + + match(input,26,FOLLOW_26_in_synpred15_X986); if (state.failed) return; + + pushFollow(FOLLOW_expr2_in_synpred15_X988); + expr2(); + state._fsp--; + if (state.failed) return; + + } + + } + // $ANTLR end synpred15_X + // Delegated rules + public final boolean synpred15_X() { + state.backtracking++; + int start = input.mark(); + try { + synpred15_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 synpred13_X() { + state.backtracking++; + int start = input.mark(); + try { + synpred13_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 synpred14_X() { + state.backtracking++; + int start = input.mark(); + try { + synpred14_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 synpred3_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 + } catch (RecognitionException re) { + System.err.println("impossible: "+re); + } + boolean success = !state.failed; + input.rewind(start); + state.backtracking--; + state.failed=false; + return success; + } - public static final BitSet FOLLOW_8_in_program272 = new BitSet(new long[]{0x0000000000000002L}); + + 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}); } 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 7711ce3..d6cb0b7 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,10 +25,6 @@ tokens { FLOATCONST; WS; MODIFIER; - UMINUS='-'; - UPLUS='+'; - UMULTIPLY='*'; - UDIVIDE='/'; DECLIST; PROGRAM; DECL; @@ -36,6 +32,7 @@ tokens { STAT; STATLIST; EXPR; + INVALID; } @parser::header {package de.dhbw.compiler.antlrxparser;} @@ -48,31 +45,32 @@ ID: ('a'..'z' | 'A'..'Z') greedy = true; // Lese alle möglichen Zeichen ein -> Zahlen in ID -> bleibt weiterhin ID }: 'a'..'z' | 'A'..'Z' | '0'..'9')*; -INTCONST: ('0'..'9')+; -FLOATCONST: INTCONST '.' INTCONST; +INTCONST: '0' | ('1'..'9') ('0'..'9')*; +FLOATCONST: INTCONST ('.' DIGIT*)? ('e'|'E')('+' |'-' )? INTCONST + | INTCONST ('.' DIGIT*)?; STRINGCONST: '"' (ESCAPE | ~('\\' | '"'))* '"'; ESCAPE: '\\' ('\"' |'\'' | '\\'); -BINOP: '+' | '-' | '*' | '/' | '<' | '>' | '='; +WS: ('\t' | ' ' | '\r' | '\n' | '\f')+ { skip(); }; -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 -> ^(PROGRAM ID decllist statlist); // Declaration decllist: decl decllist -> ^(DECLIST decl decllist); decl: modifier ID ':' type ';' -> ^(DECL modifier ID type); -modifier: mod='read' | mod='print' | mod='read print' -> ^(MODIFIER[mod]); -type: t='int' | t='float' | t='string' -> ^(TYPE[t]); +modifier: 'read' 'print'? | 'read' | 'print'; +type: 'int' | 'float' | 'string'; // Block statlist: 'begin' (stat ';')* 'end' -> ^(STATLIST stat*); -stat: t=assignstat | t=condstat | t=whilestat | t=forstat -> ^(STAT[t]) - | statlist - -> ^(STATLIST statlist); +stat: assignstat | condstat | whilestat | forstat | statlist; assignstat: ID ':=' expr -> ^(':=' ID expr); condstat: 'if' cond 'then' stat condElseStat? -> ^('if' cond stat condElseStat? ); condElseStat: 'else' stat -> ^('else' stat); @@ -80,18 +78,23 @@ whilestat: 'while' '(' cond ')' stat -> ^('while' cond stat); forstat: 'for' '(' assignstat ';' cond ';' assignstat ')' stat -> ^('for' assignstat cond assignstat stat); -expr: expr2 UPLUS expr -> ^(UPLUS expr2 expr) - | expr2 UMINUS expr -> ^(UMINUS expr2 expr) +expr: expr2 '+' expr -> ^('+' expr2 expr) + | expr2 '-' expr -> ^('-' expr2 expr) | expr2 -> ^(expr2); -expr2: expr3 UMULTIPLY expr2 -> ^(UMULTIPLY expr3 expr2) - | expr3 UDIVIDE expr2 -> ^(UDIVIDE expr3 expr2) +expr2: expr3 '*' expr2 -> ^('*' expr3 expr2) + | expr3 '/' expr2 -> ^('/' expr3 expr2) | expr3 -> ^(expr3); -expr3: number -> ^(number) - | UMINUS number -> ^(UMINUS number) - | t=STRINGCONST | t=ID -> ^($t) - | '(' expr ')' -> ^(expr); +expr3: number | '-' number | STRINGCONST | '('! expr^ ')'; number: INTCONST | FLOATCONST; -cond: expr cond2 -> ^(expr cond2); -cond2: BINOP expr -> ^(BINOP expr); +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 new file mode 100644 index 0000000..f7075a8 --- /dev/null +++ b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/X.tokens @@ -0,0 +1,68 @@ +T__20=20 +T__21=21 +T__22=22 +T__23=23 +T__24=24 +T__25=25 +T__26=26 +T__27=27 +T__28=28 +T__29=29 +T__30=30 +T__31=31 +T__32=32 +T__33=33 +T__34=34 +T__35=35 +T__36=36 +T__37=37 +T__38=38 +T__39=39 +T__40=40 +T__41=41 +T__42=42 +T__43=43 +T__44=44 +T__45=45 +DECL=4 +DECLIST=5 +DIGIT=6 +ESCAPE=7 +EXPR=8 +FLOATCONST=9 +ID=10 +INTCONST=11 +INVALID=12 +MODIFIER=13 +PROGRAM=14 +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 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 new file mode 100644 index 0000000000000000000000000000000000000000..cb15dbf40bd14d4e3bee7d9e94f0903e11b8270c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer$DFA4.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer$DFA4.class deleted file mode 100644 index b4f107bd46ff1864e6fc4530ccf37fa05056d531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1224 zcma)+TT|0u5Qg7vE2Sj@a`1qsf{1N71Qe08LJL}{fV6|oaKVJ~S)wKBBtaR+|Ka&G z1a;QXK6_3Z+ESG4!HO zs9$J6NEaFu8WOrJbVX=b=&I0&&^4h^p|N_5M==q_B%#jRGTrV$LQj5E>6=>{PxO+# zT{SDp(GAP1IJ;HDaXGo4SG&rY;2o2uWqQ+uh2-J3%nX#@W4abyx&x}ahyeT_BGfdEOmZh9b z#c*B4ZttP`>XyCyf8x$TBZRL1H%n+ND=(|ul4Djq)3yk0$yENK@z~HShE>)Jo?}{N zsa&vkoRXU7!z47+4sbxO({LOoG@QhghE8;8n8x)eZfKantcHw8R%A|O9yc}I63L0& z7Fm#myvQAqMUf>eYq*PL!r0LG(0HO~KT?*P7*8Y<#r5^k#Ir;$E3#P3EG-s_jPv=W znS;|~!8oOeMHU!m-Qb|?0VBJ1wf$dhgO`}4H9#B)T;5mln znzaFk*QAU1UyH}q#&0G-&CN1QrVxlHdWyA!v(KD|InJefeNg&4Lg_vq;dInTB>fFX zeAIE^te!*6N1Q{04~@f7AB`NEd^B@7=A-3nQ2sRQ02=t7&k>^+Xrz~DrB~>n*XX1- zNYY#A^bRBR9#ixIS^9`GyeCm>1ZSD#Hy1Qa0rArpG=2fydyV&Vl(le6>lY3o$ZhMy dqEA6Nt+u>ZE`*E0RXsS*G0tmk{Fyn2$R9|s7AF7z 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 new file mode 100644 index 0000000000000000000000000000000000000000..226d08d3dd014b32c06ecc5fb07ef957e412743b GIT binary patch literal 1289 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]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 x;zXF4J@6Z_Bh-0Xo1+dL$0QJ-(oaH|`) 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 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$assignstat_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$assignstat_return.class new file mode 100644 index 0000000000000000000000000000000000000000..c14b0e9eab6a505ebb24a02db554f86348a48e1a GIT binary patch literal 727 zcmbVJ%SyvQ6g|^dY>e90`qqW0*t&2wf`}qWK@f_HE#gk5=}=RWNtsNnpQRuQF8lyL zO1x>i(Yg>9bKmFQbLW11zP$t3!1cJ{A#lE~6d{Dy;d&xq7nt^pXZ}{sUcsKoNMVv>E(xX$9I~BZ0j5wOk8Xw%$?xE2q#l2O`{Urk34v$Fz%NMu1phWU Th4Ns;9A-${)Fy)^Oe6mV+Zm^9 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..5b4e7dd8a11be5d97b201d7cf6551c35c25d198c GIT binary patch literal 715 zcmbVJ$w~u35Ph9(%s863?*~ya@n9d+lOjk!5Q32;h$p2pX_5&uJ)twBewKnLc<=-K zD6u;6lEi~}=-OY^tLo3M_YVMv*szhtViqYZ*(8=NtXf!ONJUyohOKg_TU@Bf*IdUc z@&d_ChL^%12vwcTV}{I$r@ZKtAz3J16SfpK37ac>N?yi6L+ZL{_!OBfhpzCih4zg9 z6HG;Iug5UuhC#Q|z0)#^wPJ8Cl#;sSi(XGs`l#HLyxDF%a8u{`QV&=?c7^Vdb92?# z+e2N5n$?n#Vac#lDE?`gd8+G(d%=C7TD;QeNH?NJb}fvxE6-^(k^339ZwehuAnPCl z%fSq0Evz#f{DUpS?)b3>YgJ=kR{Mvkxnb8V^QZpUq%Td=KQns7k7SZ;qD#^ykCQgJ z^xhlTGZ_g?lFXRk#4Q}Mok0PnkSC9s4M`4zUyyhj0gG{P{*1tLW8haLN5Q{MPGG)2 QVgWhQHnmA%1=GlW12)c~v;Y7A literal 0 HcmV?d00001 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$cond2_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$cond2_return.class new file mode 100644 index 0000000000000000000000000000000000000000..203dadcc1232acf327d387f5f696b46cf09a7bf2 GIT binary patch literal 712 zcmb7B%SyvQ6g|^d+8DKJed|J0Y+X1Y-6?_;1fi(3BJO0G4s9fvDU(F~ECo?;;RpBu zfVFYiy!0IFEFk;O~_8O+)w<}55&SY*gVMoNa&x;7myROB0O zVikFT92 z*K1#!5HYJGql6>Fdb#qaRZ3KMDXs+fh3fF*)}?eKYGgNcY+QLjlZo5sw5_DjK^_GM zIam%RFlk|lVf+7N88(J5Jy@y{`?AqLOVic8WS2j+#|r&tmOh!$BYGs$WD{GGHhG+M zlFM#Bg58mk!U)M+63oBCA=?=gU=&62Sh66=@8El+ZhwH^hQY;s0#6NrACUeD{%vv! SrT&O%jFYyhO$PHAL*WCpn4wVs literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..c94606f9dc4c6604f3574b84d0f0a924138cc42b GIT binary patch literal 733 zcmbVJ%Sr<=6g_FD9XpQi_iG_4wl2)ZjVOW?1)-?4BJL!ehB`8nluSnbECo?;;RpCp z;+@uwtqXCHb04|q-gA?W&$o8~J6Q2hz-$Q)<~)LV7mF^I7#wS)WLT?d)8<0i$Z(S? z8^)4nH@vFjSgQ+i_ZW)%p$hE*L%v+OByLr=h&xsbl{`)3rZg9#8Bu1krUMaO3KM4W zcha#pVZtyKXw^E364|iAUK?psqZs@XrKG7wB1t3_?bTY6w{DvEJkW6`jHKyld*}$0 zP;hnLwd=q1BAISm+DtLSM!E8*#ipt5R@@053DxFj&085*YUDL^Y65vo0!ZTb(Cw_y z#}Gjfq#=!zcQThURW2m73 literal 0 HcmV?d00001 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$cond_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$cond_return.class new file mode 100644 index 0000000000000000000000000000000000000000..3b00a063f6679c00748eb57fe1471381869649a3 GIT binary patch literal 709 zcmb7B$w~u35Ph9(l5sRK?%P3BTn;v(H${+uAOsZ^@g|*_CYdnP9Xd1Ww+Q}&f+%?K z1Npg{TD-DOa^Cf=gli z#P0<&QNwRD47pl)*G5LMQ4G$JQqoic(QZphZdX0Yy+-YpyE<(7fizuCcP(Ms= S@y>_|6iM6ECW9G_pzsBICZGfW literal 0 HcmV?d00001 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$condstat_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$condstat_return.class new file mode 100644 index 0000000000000000000000000000000000000000..01f4fcfb0a1b49df4d156768f45aaf76b9c4f7cb GIT binary patch literal 721 zcmbVJ%Sr<=6g}x{>^Q#PuZ5`iSeT9CLJ_1O2t}nW;!e_Os3S8;$z;^eQV<0fet;Xn z4-)UR-PpPi7rC#TbMLvy``7CmfE_Hk$YZ*Q9A;cHvkvAREHLD(k&(WkbVF zqHGXJp5E}1jv}pU6z($=4gwX}Lx$|e<^^#}xUI#IueXSa?752(Vn;6C5ohT(uDHL%m39wggNZz=v-*I0@tss=9qwBsUOian; zdE2k{^dWgpQ`%H1!`jB?pB9=V+>N*uJQS+Q&+0eQx75h3>csf+n1++Q?!fI7=wSdw z4+S_L#xU++kzw~=dKuRHpS-hLB?)Dv{Ww)$x6*a~Gy%)>v3dG!Mu!xV%~DK)$-0zr z^66cE>jmtQf(!=97Sdw&10Ka*2Y?}rQpVC9$^IliA@k5f{_H1@9uaw>kNk{mFZs90 T8BDfEOksq)OKozP!!U~9swAb< literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..0e627a863619e8ce7b06ef1e16b5dd36253f4e9c GIT binary patch literal 709 zcmb7B%SyvQ6g|_Xjg8UP_j@5KwgnwTcZwhdK?o{sDeh#N4sA*@Dbqy#ECo?;;RpCp z;!W#9tqWbueV=>Jz4P||@(SPpYZfw?&%wZgMPkv!vWXQ2BhpebY&fBAbD<(%a~-S5 z3nWi6yb=aMsOn@MGGvcD0+rt*h<(UY~JydJdcB>)OFGHDKhPZuJ9W|dx`%U zG@_2zXBclu*T2>>inU^}&y^Q#PuZ5`iSeT9CLJ_1O2t}nW;!e_Os3Vz7$z;^eQV<0fet>Ji zzY*`W-PpPi7rC#TbMLvy``7CmfE_Hk$YZ*Q9A;cHvkvAREHLD(k&n-|0_MGfMPlmjhKldvvLP1F@t#>U z=WV~*(}(0aO=(l53~L*ke_Cjga5v&sa3yq;pVe=qZ>f=6jS}O_V;WBKx&yaUpoakz zJrv-07{j=OMTXsf>19~&fAY?1l|;!(`*Es%)JoU+(*!Kj$L8s`868qcHcK%HChJnh z$)|VutrxII3NjcZTWA+Q;8E;#02sn3Wh~v1>`(F&G7mlE&wldg5s@eQ$j`|3l7E|= T!DM^H6h_Fq)Fy{H45RoBYOJNU literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..3bc8f93958567beea554841eb26920d1b5604c6a GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..25678972a66d87b00095af64cda1779b7eaad291 GIT binary patch literal 712 zcmb7B-AV#M6#mA)&239F`>%_rNV{l2yeonbfHqM(Z& zpofaisu!hQ)Ww|t@0{ETkBp(`&3XSuTdZnVpv+GCUcGfAJ!=n*}Vak7amNs~NI zI?5&YUcsKoh+&#!Dhj6VVUcYO3owH$c`RCxeun85QB;1|Tl!M{z8 TAwL+gfDCDq+9a@oS){)J>ARr8 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..a3da040cafb823c8c4ef7c7d624618aeee315e1c GIT binary patch literal 712 zcmb7B%SyvQ6g|_Xjg8UPTHm@56(0)+v^zzRf*=$X6>%ribZAqONtqwi46{o3FY`p2U7l>Pu1cC{nBjj_|I8 zb`!rJG@_;(GT5@y*1I=aMzL1p9xEkv#S>vDDO;}AC9gMYciaj5w(CjVBh_gO9g=f> z*43-un-DRxA)|yN!`jB?pH?YRT}#{w?g`c4r?r-JB5Gt^1hIDH5ltp;{b}1tp^Xvb zY-C~Dm_X6QBE!!A$ug`DU%I!{dF;va?pZFJpq=dUr}kK;|IE-QGkQdiWSVSZOVT2b zlTLD(tyi!oGEx{NnN5P`J#4b=UIE5XAde*rlKcsNM(S|@{4fkI91?hP2>gQdAo#b* TDU`Y+rjRFXQ5yqu7)S04?;4=Q literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..42409790ad2ec8a9dfbdd5d2365505df46314767 GIT binary patch literal 709 zcmb7B%}T>S5dOAJ8=FS0wf^ftRBS!Ch~5-I3W88nRK%NX)1{^)o3cr?Pa*gw3Zme_ z2k@c9N!x?A9`vyD|IK_e`|W*dl%nbc7qetvWrpYFsGT$)Dh7q#g&r55wTX0f8rnz%NJ-f`6Nw TLa94q3ge_LYGYsyW5|60`7EF) literal 0 HcmV?d00001 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$forstat_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$forstat_return.class new file mode 100644 index 0000000000000000000000000000000000000000..2db82cafb0cd3ca3e43a941c3f83cd62c028b00a GIT binary patch literal 718 zcmbVJ$w~u35Ph9(%s3j2`*si&jR*T8UKBwBf)G?Rh&Sm>+Bh=P9eR4y&r%Qt4}O3j zCDtUlB=H~~y7pJ~s`~5u;}gIxR$SyUTSN|XE{S;uiw>3;a@I)6uvXKi#f7q=;U-Zw zh$K%lysD!}t2&wc426S01@@33yH&X&Y*jZ2TdD<0o+eR4n!0F&6e-uVFTyKfg4FK? zbM`KX8OCq5iLJ0VM%u(E2Jb{EX{w=!V@dhFT2u1oUE`7aI%)@@G+kOxZDC?^uFpGq zy}u2Sb6V1-JQ+5&Dt}sMn(FSwgW#c1Eq>Oxm%gP&?xjwQFOO+9vFpv-NeexUpy;6h z$HOGb4we~q|3jBybNJrf#V(RiUUW`#>Faj7&7THfm3}o(U(M(dL6TXri7!c)JWe{z z<+tC#UdYH`lw=_d<~?|1d))$zVS+rCu1K;U{EE!;0Jt;^o;V`#)DZX$*+KAclQWp^ QjF>@*v`cMrSim@nKiN#8cK`qY literal 0 HcmV?d00001 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$minus_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$minus_return.class new file mode 100644 index 0000000000000000000000000000000000000000..6cde354da2e013106f9f4cfe90c4c3ddabb5b7d7 GIT binary patch literal 712 zcmb7B%SyvQ6g|^dY>ZlK>)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^NGj@7F?9v@Xm>aiIuO5QL(lrMQ!H8f#=GDd~**AA;YZAPO%0 z06$8+)4H*BAue)XIp^MUlaJ50cL1AMaFNAi9vMuzWTqX=I+$a~L{>_MrHZjlE_4)F zZety(Q1ax4mrWQNU8Qh`A-AiviuM@NYo!`-%ceoxLPcqL6o++btD+uIrC2e(2x`Kr zB>ygEqAS%VbZ8ptQb~JZWfWV@;2ml$Z8;F_wj{uIr6GCas(#CT6Sh^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&55^b)^VW5QL&)i@1|%I@CxqQ>KafSqh@y!VmDH z#GAAmTNmPD?)%((?w!xC_YVMjSaFcUY!Mdb91`<37HupsSdo#EVZEkJn+p{MhMQPL zekgg8;Z+@mS~bW#V8|c(%8!m1vX!kX!d7*Qu;Vpf$+I|YO4AU{fFe^h?TO$@7(em* zK`XlTy9}c$t-LWZij87$PnD9U8i;OJQhLAElDu`>eBhoAJANQdkJV#Gm@YZj7pdO( z(S@klZ5bsj8OoKdKP^+Dx;t?%cpy}ppEvKM7f~apu4CiL6B0#=g?j+0nsXtcfOLO$kj2`hLnI)U(l61)9q?253 z`wi@wj0{Fd=96Gy4KCSkuK=T%Ade**lKcsNLFQ=yTpk8b920nY2>godAo#b*8I;ly PGZ-iBP#X&i7(?+JekP$& literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..3db831a420842067ae63e124dab173998289b5af GIT binary patch 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 delta 25 fcmX@ddX9C2IuoPWWDO=8M$5^mK+@lRvm2<*Y!zN)zYo3xvanO+ZOf-Co6lP2R*U~lA$UY5Y?aBihOw@YAHj+XIL&!VG z!E!K;qJ;&9&3|)cSQ|WZccpsl%X;T1r*7CzR{2wREYW9X>4zCTVn;GfHjyQ1lgCLX zx$OEg*aI0U6iDWhVCo$X*-p0r!x$rvCHs;534TQCz7PB{2p-!f@WcT43F&_DZ^N$z^{oq0v2|fKiVH=Mf*=%?wun1Pr=d=n$&^e+{VWAhaN!5| zQR1Dp8(SCRBKMVZ?maj8{CfWYu#a^cSuEs{!Jg>6NYrTa!uT7*e32w%~SFs4q8$-Ma!p3u@<_*zZTj{ z@?kM!?!1W5krBrCB6F*yiM3*I&Xtn7>We6n1URgxz59eW5!1velKYp+FIneL6R<%ao2B1obVwoDG{q#CtW6mw zpWJ14-@u+JNMVv}E-9wka42>L08F7k8B2B~`;+{F)YAyLGfpm?5_xWn{EGA_`M1d_ Sl=>s)F+<*_HW@5q8u@Rg&7{}> literal 0 HcmV?d00001 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$type_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$type_return.class new file mode 100644 index 0000000000000000000000000000000000000000..f929342929188d71224a971c48af7f120ff9fccd GIT binary patch literal 709 zcmb7B%SyvQ6g|_Xjg8UPTHm@567Ov!7^G(hNW7h+gvCUXs%;r z{7~{F!>dskMygKc4nua=SH9U}NS7-O!d9aeVe>U#$)h-IN?jMtfFi|ONkij%1o_B1_UCkCRSv znYCxI2QpF^CYeowsWM!$-F^W^P#}*b`;q((enjg22Y7uDT-Yb@_yG6`>7U@=CZ|y9 QjhH~5v_owy%wQC`4~I>j_5c6? literal 0 HcmV?d00001 diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$whilestat_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$whilestat_return.class new file mode 100644 index 0000000000000000000000000000000000000000..7c794da2f9405196acce770d44dda6a08d2ebe8b GIT binary patch literal 724 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 E9|0y(VE_OC delta 1972 zcmZuy>vK~@6#v~M_mSkbwintag%%3bwrSeXw7d#^QmTct0a6|TBqV8QBYlyiPz9+d zDk>tnzKY7r2a1A)v_L?V8Nd128OFg6esgq~LH+>2v$vTV9W!&!?(gjRojrTb+0DfZ z#&acOKR&$i9e_IAl#!4zVu1nsELe>F76{lcW7Gl(`^=>^OacrYZG0vQP&&H)S&?XEi;u6!Y{FVwnBVU8 zc)VKz%LCEDKzaxFGPi(2w!uD&oo<$s+JiE7@Q6#q3mJL1UIL z5e)C?3=Ve(L;Vp7l+sAqq8!nwWqeGbtr-nRh7-}D!8paTD%>9(j3ycd7|Sa*v%@tZ zGrF)>C9#p+t8q4CHQH3vqE5g;*QR(R7I*E5MWS(6Z#2QbNU*wZWFRsa9f?;DL|i?6 zq5W0ip@HFOemM zu=_P778PsIuHrL%&d$`%al(gg73cAViZ8KL#RYt&;%i(~aS6Lse1i!Um(io*3X<$> zog*8Qm{M^S*Hm0birr~gVUfzZy=~qy0XFu?YE$_6ZU`u)m`d5!rX7+PPXuELHovJ% zF%Cxi13@V5T!K{BM}|!6(EIUkzgVspsHN2%Zb$zb2sO)yDdxD zoYpm>DG`fAk~>?E3u9vW_O%t8Q9{ioP?^oJ^K8=0jwM)1x@9ysU^(Fx8MvPC$_%`U za6<-eB;1sNn+dmM;8vJ;>9CP+MCsJG7Vrd~q%AuLxoG48iN;$HCiEEAl9Y615!TUM zoi>06orDC+nU`b-ySuJvDY!Ae$G{>oEY%75I?hTHfGl2WqHyX)om%Z#Fs4(p!JEE} z_H!T?3OK;F@MKw;emu+^RI!s9F9+ zb&|i@46ZTF&BasLNhhNd3lAwF@VqLM(CA%$!MrcgLTso;9WnZg{M zGljW?dzH#b%%$%!`U+DhGSL-nsTUn~@hax&@$lJvoy+}lQ$9}nw~Hy1h&%*xcOFW; zWS73LoS+jHQHx$iG3DYCAK5S0(=D?T1$6jk(5sAms-cbgx{x}$h}zRZt+I}KZ4>ob z4>ij$RrU}S>?pQloRUv31vv{KiCst`h#wHbZ>0N!tnblyAH90=8!3P!UC#j7@kjrG zUWPGx)bTsfLR38)enyyR2HN}%B1AS)2tSd79=daVL|O>x5qT43L}ffJV~>n}l5|rV zT4fB3$`~|Zhzw2Su9#d8V{f`W`t$+=o*eTnEbtq(g+9MY8(8G?i(0AAFKLha{IXW& z^DA1p&z~b{6(nWNK~m8weMy*a!s$1CYxNsvqiX#%xRTKL-4HVFMh?9;Lll3E^ajM? Orjh> - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file