diff --git a/.idea/libraries/antlr_3_5_2_complete.xml b/.idea/libraries/antlr_3_5_2_complete.xml
deleted file mode 100644
index 3cd6146..0000000
--- a/.idea/libraries/antlr_3_5_2_complete.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/jflex_1_6_1.xml b/.idea/libraries/jflex_1_6_1.xml
deleted file mode 100644
index 1aa5664..0000000
--- a/.idea/libraries/jflex_1_6_1.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/lib.xml b/.idea/libraries/lib.xml
index f890f5c..fa8838a 100644
--- a/.idea/libraries/lib.xml
+++ b/.idea/libraries/lib.xml
@@ -1,10 +1,10 @@
-
-
+
+
\ No newline at end of file
diff --git a/.idea/libraries/lib1.xml b/.idea/libraries/lib1.xml
deleted file mode 100644
index ff35171..0000000
--- a/.idea/libraries/lib1.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/lib2.xml b/.idea/libraries/lib2.xml
deleted file mode 100644
index 6a8d21c..0000000
--- a/.idea/libraries/lib2.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations/Run_Antlr_builder.xml b/.idea/runConfigurations/Run_Antlr_builder.xml
index 47bff95..b5f2a09 100644
--- a/.idea/runConfigurations/Run_Antlr_builder.xml
+++ b/.idea/runConfigurations/Run_Antlr_builder.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens b/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens
index 76de90c..2b5d962 100644
--- a/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens
+++ b/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens
@@ -1,5 +1,6 @@
-T__7=7
-ID=4
-INTCONST=5
-WS=6
-'TODO'=7
+T__8=8
+FLOATCONST=4
+ID=5
+INTCONST=6
+WS=7
+'TODO'=8
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 8445090..63a754d 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
@@ -22,6 +22,7 @@ options {
tokens {
ID;
INTCONST;
+ FLOATCONST;
WS;
}
@@ -35,6 +36,7 @@ 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;
WS: ('\t' | ' ' | '\r' | '\n' | '\f')+ { skip(); };
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 aa10a1b..91bfb0e 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-05-27 16:02:18
+// $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:07:23
package de.dhbw.compiler.antlrxparser;
import org.antlr.runtime.*;
@@ -9,10 +9,11 @@ import java.util.ArrayList;
@SuppressWarnings("all")
public class XLexer extends Lexer {
public static final int EOF=-1;
- public static final int T__7=7;
- public static final int ID=4;
- public static final int INTCONST=5;
- public static final int WS=6;
+ 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;
// delegates
// delegators
@@ -29,10 +30,10 @@ public class XLexer extends Lexer {
}
@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"; }
- // $ANTLR start "T__7"
- public final void mT__7() throws RecognitionException {
+ // $ANTLR start "T__8"
+ public final void mT__8() throws RecognitionException {
try {
- int _type = T__7;
+ int _type = T__8;
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'
@@ -48,15 +49,15 @@ public class XLexer extends Lexer {
// do for sure before leaving
}
}
- // $ANTLR end "T__7"
+ // $ANTLR end "T__8"
// $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:33: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:33:13: ( '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: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' )*
{
if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
input.consume();
@@ -66,7 +67,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:34:13: ( 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:35:13: ( options {greedy=true; } : 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )*
loop1:
while (true) {
int alt1=4;
@@ -148,19 +149,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:36:16: 'a' .. 'z'
+ // /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'
{
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:36:27: 'A' .. 'Z'
+ // /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'
{
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:36:38: '0' .. '9'
+ // /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'
{
matchRange('0','9');
}
@@ -187,10 +188,10 @@ 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:37: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:37: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: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:37: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) {
@@ -234,15 +235,39 @@ public class XLexer extends Lexer {
}
// $ANTLR end "INTCONST"
+ // $ANTLR start "FLOATCONST"
+ public final void mFLOATCONST() throws RecognitionException {
+ 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();
+
+ match('.');
+ mINTCONST();
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ // do for sure before leaving
+ }
+ }
+ // $ANTLR end "FLOATCONST"
+
// $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:39: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:39:13: ( '\\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: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' )+
{
- // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:39:13: ( '\\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:
while (true) {
@@ -289,134 +314,14 @@ public class XLexer extends Lexer {
@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__7 | ID | INTCONST | WS )
- int alt4=4;
- switch ( input.LA(1) ) {
- case 'T':
- {
- int LA4_1 = input.LA(2);
- if ( (LA4_1=='O') ) {
- int LA4_5 = input.LA(3);
- if ( (LA4_5=='D') ) {
- int LA4_6 = input.LA(4);
- if ( (LA4_6=='O') ) {
- int LA4_7 = input.LA(5);
- if ( ((LA4_7 >= '0' && LA4_7 <= '9')||(LA4_7 >= 'A' && LA4_7 <= 'Z')||(LA4_7 >= 'a' && LA4_7 <= 'z')) ) {
- alt4=2;
- }
-
- else {
- alt4=1;
- }
-
- }
-
- else {
- alt4=2;
- }
-
- }
-
- else {
- alt4=2;
- }
-
- }
-
- else {
- alt4=2;
- }
-
- }
- 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 'U':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'Z':
- 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':
- {
- alt4=2;
- }
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- {
- alt4=3;
- }
- break;
- case '\t':
- case '\n':
- case '\f':
- case '\r':
- case ' ':
- {
- alt4=4;
- }
- break;
- default:
- NoViableAltException nvae =
- new NoViableAltException("", 4, 0, input);
- throw nvae;
- }
+ // /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) {
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__7
+ // /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
{
- mT__7();
+ mT__8();
}
break;
@@ -435,7 +340,14 @@ public class XLexer extends Lexer {
}
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: WS
+ // /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
+ {
+ 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
{
mWS();
@@ -446,5 +358,67 @@ 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",
+ "",
+ "\1\7\1\uffff\12\3",
+ "",
+ "\1\10",
+ "",
+ "",
+ "\1\11",
+ "\12\2\7\uffff\32\2\6\uffff\32\2",
+ ""
+ };
+
+ 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 {
+ int numStates = DFA4_transitionS.length;
+ DFA4_transition = new short[numStates][];
+ for (int i=0; i", "", "", "", "ID", "INTCONST", "WS", "'TODO'"
+ "", "", "", "", "FLOATCONST", "ID", "INTCONST",
+ "WS", "'TODO'"
};
public static final int EOF=-1;
- public static final int T__7=7;
- public static final int ID=4;
- public static final int INTCONST=5;
- public static final int WS=6;
+ 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;
// delegates
public Parser[] getDelegates() {
@@ -57,7 +59,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:42:1: program : 'TODO' ;
+ // /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' ;
public final XParser.program_return program() throws RecognitionException {
XParser.program_return retval = new XParser.program_return();
retval.start = input.LT(1);
@@ -69,13 +71,13 @@ public class XParser extends Parser {
CommonTree string_literal1_tree=null;
try {
- // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:42:8: ( 'TODO' )
- // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:42:13: 'TODO'
+ // /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'
{
root_0 = (CommonTree)adaptor.nil();
- string_literal1=(Token)match(input,7,FOLLOW_7_in_program256); if (state.failed) return retval;
+ string_literal1=(Token)match(input,8,FOLLOW_8_in_program272); if (state.failed) return retval;
if ( state.backtracking==0 ) {
string_literal1_tree = (CommonTree)adaptor.create(string_literal1);
adaptor.addChild(root_0, string_literal1_tree);
@@ -106,5 +108,5 @@ public class XParser extends Parser {
- public static final BitSet FOLLOW_7_in_program256 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_8_in_program272 = new BitSet(new long[]{0x0000000000000002L});
}
diff --git a/lib/antlr-3.5.2-complete.jar b/lib/antlr-3.5.2-complete.jar
new file mode 100644
index 0000000..260de76
Binary files /dev/null and b/lib/antlr-3.5.2-complete.jar differ
diff --git a/out/production/ÜB-Praxis-Abstiegsparser für X-Leer/de/dhbw/compiler/xparser/JFlexXScanner.lex b/out/production/ÜB-Praxis-Abstiegsparser für X-Leer/de/dhbw/compiler/xparser/JFlexXScanner.lex
new file mode 100644
index 0000000..9373246
--- /dev/null
+++ b/out/production/ÜB-Praxis-Abstiegsparser für X-Leer/de/dhbw/compiler/xparser/JFlexXScanner.lex
@@ -0,0 +1,148 @@
+/* **********************************************
+ * Duale Hochschule Baden-Württemberg Karlsruhe
+ * Prof. Dr. Jörn Eisenbiegler
+ *
+ * Vorlesung Übersetzerbau
+ * Praxis X Abstiegsparser
+ * - Scanner-Definition
+ *
+ * **********************************************
+ */
+
+
+package de.dhbw.compiler.xparser;
+
+%%
+
+%class JFlexXScanner
+%type Token
+%function nextToken
+
+
+%unicode
+%line
+%column
+
+%public
+%final
+
+%xstate INT, FRACTION, EXPVZ, EXP, STRING
+
+%{
+ private int intvalue=0;
+ private String textvalue ="";
+ private int fracvalue=0;
+ private int fraclength=0;
+ private int expvalue=0;
+ private int expsign=1;
+ private int startline =0;
+ private int startcolumn =0;
+ private String stringvalue="";
+%}
+
+
+
+%%
+
+read { return new Token(Token.READ, yytext(), yyline+1, yycolumn+1); }
+print { return new Token(Token.PRINT, yytext(), yyline+1, yycolumn+1); }
+int { return new Token(Token.INT, yytext(), yyline+1, yycolumn+1); }
+float { return new Token(Token.FLOAT, yytext(), yyline+1, yycolumn+1); }
+string { return new Token(Token.STRING, yytext(), yyline+1, yycolumn+1); }
+\+ { return new Token(Token.PLUS, yytext(), yyline+1, yycolumn+1); }
+\- { return new Token(Token.MINUS, yytext(), yyline+1, yycolumn+1); }
+\* { return new Token(Token.MULT, yytext(), yyline+1, yycolumn+1); }
+\/ { return new Token(Token.DIV, yytext(), yyline+1, yycolumn+1); }
+:= { return new Token(Token.ASSIGN, yytext(), yyline+1, yycolumn+1); }
+\( { return new Token(Token.LBR, yytext(), yyline+1, yycolumn+1); }
+\) { return new Token(Token.RBR, yytext(), yyline+1, yycolumn+1); }
+\< { return new Token(Token.LESS, yytext(), yyline+1, yycolumn+1); }
+> { return new Token(Token.MORE, yytext(), yyline+1, yycolumn+1); }
+= { return new Token(Token.EQUALS, yytext(), yyline+1, yycolumn+1); }
+if { return new Token(Token.IF, yytext(), yyline+1, yycolumn+1); }
+then { return new Token(Token.THEN, yytext(), yyline+1, yycolumn+1); }
+else { return new Token(Token.ELSE, yytext(), yyline+1, yycolumn+1); }
+while { return new Token(Token.WHILE, yytext(), yyline+1, yycolumn+1); }
+for { return new Token(Token.FOR, yytext(), yyline+1, yycolumn+1); }
+; { return new Token(Token.SEMICOLON, yytext(), yyline+1, yycolumn+1); }
+begin { return new Token(Token.BEGIN, yytext(), yyline+1, yycolumn+1); }
+end { return new Token(Token.END, yytext(), yyline+1, yycolumn+1); }
+program { return new Token(Token.PROGRAM, yytext(), yyline+1, yycolumn+1); }
+\. { return new Token(Token.DOT, yytext(), yyline+1, yycolumn+1); }
+: { return new Token(Token.COLON, yytext(), yyline+1, yycolumn+1); }
+
+
+[a-zA-Z][a-zA-Z0-9]* { return new Token(Token.ID, yytext(), yyline+1, yycolumn+1); }
+
+0 { return new IntConstToken(Token.INTCONST, yytext(), yyline+1, yycolumn+1, 0); }
+0/\. { yybegin(INT); textvalue=yytext(); startline=yyline+1; startcolumn=yycolumn+1;
+ intvalue=yytext().charAt(0)-'0'; fracvalue=0; fraclength=0; expvalue=0; }
+[1-9] { yybegin(INT); textvalue=yytext(); startline=yyline+1; startcolumn=yycolumn+1;
+ intvalue=yytext().charAt(0)-'0'; fracvalue=0; fraclength=0; expvalue=0; }
+
+\" { yybegin(STRING); textvalue="\""; stringvalue=""; startline=yyline+1; startcolumn=yycolumn+1; }
+
+(\/\*)~(\*\/) { /* eat comments */ }
+[\ \t\b\f\r\n]+ { /* eat whitespace */ }
+<> { return new Token(Token.EOF, yytext(), yyline+1, yycolumn+1); }
+[^] { return new Token(Token.INVALID, yytext(), yyline+1, yycolumn+1); }
+
+ {
+ [a-zA-Z \.:] { textvalue+=yytext(); stringvalue+=yytext(); }
+ \\\" { textvalue+="\\\""; stringvalue+="\""; }
+ \" { yybegin(YYINITIAL); return new StringConstToken(Token.STRINGCONST, textvalue+"\"", startline, startcolumn, stringvalue); }
+ [^] { yybegin(YYINITIAL); return new Token(Token.INVALID, textvalue+yytext(), startline, startcolumn); }
+ <> { yybegin(YYINITIAL); return new Token(Token.INVALID, textvalue, startline, startcolumn); }
+}
+
+ {
+ [0-9] { intvalue = 10*intvalue + yytext().charAt(0)-'0';
+ textvalue+=yytext();}
+ \. { yybegin(FRACTION);
+ textvalue+=yytext();}
+ [eE]/-?[0-9] { yybegin(EXPVZ); textvalue += yytext(); }
+ [^] { yybegin(YYINITIAL);
+ yypushback(1);
+ return new IntConstToken(Token.INTCONST, textvalue, startline, startcolumn, intvalue); }
+ <> { yybegin(YYINITIAL);
+ yypushback(1);
+ return new IntConstToken(Token.INTCONST, textvalue, startline, startcolumn, intvalue);}
+}
+
+ {
+ [0-9] { fracvalue= 10*fracvalue+ yytext().charAt(0)-'0';
+ fraclength++;
+ textvalue+=yytext();}
+ [eE]/-?[0-9] { yybegin(EXPVZ);
+ textvalue+=yytext();}
+ [^] { yybegin(YYINITIAL);
+ yypushback(1);
+ return new FloatConstToken(Token.FLOATCONST, textvalue, startline, startcolumn,intvalue+fracvalue/Math.pow(10,fraclength)); }
+ <> { yybegin(YYINITIAL);
+ yypushback(1);
+ return new FloatConstToken(Token.FLOATCONST, textvalue, startline, startcolumn,intvalue+fracvalue/Math.pow(10,fraclength)); }
+}
+
+ {
+ -0|0 { yybegin(YYINITIAL);
+ return new FloatConstToken(Token.FLOATCONST, textvalue+yytext(), startline, startcolumn,intvalue+fracvalue/Math.pow(10,fraclength)); }
+ -[1-9] { yybegin(EXP); expvalue=yytext().charAt(1)-'0'; expsign=-1; textvalue+=yytext(); }
+ [1-9] { yybegin(EXP); expvalue=yytext().charAt(0)-'0'; expsign=1; textvalue+=yytext(); }
+ [^] { yybegin(YYINITIAL);
+ yypushback(1);
+ return new Token(Token.INVALID, textvalue, startline, startcolumn); }
+ <> { yybegin(YYINITIAL);
+ yypushback(1);
+ return new Token(Token.INVALID, textvalue, startline, startcolumn); }
+}
+
+ {
+ [0-9] { expvalue = 10* expvalue + yytext().charAt(0)-'0'; textvalue+=yytext(); }
+ [^] { yybegin(YYINITIAL);
+ yypushback(1);
+ return new FloatConstToken(Token.FLOATCONST, textvalue, startline, startcolumn, (intvalue+fracvalue/Math.pow(10,fraclength))*Math.pow(10,expvalue*expsign)); }
+ <> { yybegin(YYINITIAL);
+ yypushback(1);
+ return new FloatConstToken(Token.FLOATCONST, textvalue, startline, startcolumn, (intvalue+fracvalue/Math.pow(10,fraclength))*Math.pow(10,expvalue*expsign)); }
+}
+
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/FracToken.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/FracToken.class
deleted file mode 100644
index e7c32f3..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/FracToken.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.class
deleted file mode 100644
index 121c8c0..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.flex b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.flex
deleted file mode 100644
index 10a9644..0000000
--- a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.flex
+++ /dev/null
@@ -1,75 +0,0 @@
-/* **********************************************
- * Duale Hochschule Baden-Württemberg Karlsruhe
- * Prof. Dr. Jörn Eisenbiegler
- *
- * Vorlesung Übersetzerbau
- * Praxis AS-Scanner mit JFlex 4
- *
- * **********************************************
- */
-
-package de.dhbw.compiler.jflexasscanner;
-
-%%
-
-%class JFlexASScanner
-%function nextToken
-%type Token
-
-%unicode
-%line
-%column
-%public
-%final
-
-%xstate FRAC, EXP, STR, NULL, ID, NUM
-
-%{
- String idValue = "";
- int intValue = 0;
-%}
-
-WhiteSpace = [ \t\b\r\n]+
-SmallChars = [a-z]
-CapitalChars = [A-Z]
-Numbers = [0-9]
-AllChars = [a-zA-Z0-9]
-
-%eofval{
- return new Token(Token.EOF, "", yyline+1, yycolumn+1);
-%eofval}
-
-%%
-//[^] { return new Token(Token.INVALID, yytext(), yyline+1, yycolumn+1); }
-{WhiteSpace} { /* Ignore */ }
- {
- "null" { return new Token(Token.NULL, yytext(), yyline+1, yycolumn+1); }
- {AllChars} { yybegin(ID);
- idValue = yytext(); System.out.println("BEGIN ID <"+idValue+">"); }
- {Numbers} { yybegin(NUM);
- intValue = yycharat(0)-'0'; }
- [\[] { return new Token(Token.LSBR, yytext(), yyline+1, yycolumn+1); }
- [\]] { return new Token(Token.RSBR, yytext(), yyline+1, yycolumn+1); }
- [,] { return new Token(Token.COMMA, yytext(), yyline+1, yycolumn+1); }
-}
-
- {
- {Numbers} { intValue = intValue * 10 + yycharat(0) - '0'; }
- {SmallChars} | {CapitalChars} { yybegin(ID); idValue = String.valueOf(intValue); yypushback(1); }
- [^] { yybegin(YYINITIAL);
- yypushback(1);
- return new NumToken(String.valueOf(intValue), yyline+1, yycolumn+1); }
-
- {
- {AllChars} { idValue += yytext(); }
-}
- [^] { yybegin(YYINITIAL);System.out.println("PUSHBACK BEFORE <"+yytext()+">");
- yypushback(1); System.out.println("PUSHBACK AFTER <"+yytext()+">"); System.out.println("LINE <"+yyline+"> / COLUMN <"+yycolumn+">");
- return new Token(Token.ID, idValue, yyline+1, yycolumn); }
-
-
-[^] { return new Token(Token.INVALID, yytext(), yyline+1, yycolumn+1);
- /*throw new Error("Illegal character <" + yytext() + ">"); */}
-
-
-
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java~ b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java~
deleted file mode 100644
index ea54ce9..0000000
--- a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java~
+++ /dev/null
@@ -1,695 +0,0 @@
-/* The following code was generated by JFlex 1.6.1 */
-
-/* **********************************************
- * Duale Hochschule Baden-Württemberg Karlsruhe
- * Prof. Dr. Jörn Eisenbiegler
- *
- * Vorlesung Übersetzerbau
- * Praxis AS-Scanner mit JFlex 4
- *
- * **********************************************
- */
-
-package de.dhbw.compiler.jflexasscanner;
-
-
-/**
- * This class is a scanner generated by
- * JFlex 1.6.1
- * from the specification file C:/Development/Schule/Java/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.flex
- */
-public final class JFlexASScanner {
-
- /** This character denotes the end of file */
- public static final int YYEOF = -1;
-
- /** initial size of the lookahead buffer */
- private static final int ZZ_BUFFERSIZE = 16384;
-
- /** lexical states */
- public static final int YYINITIAL = 0;
- public static final int FRAC = 2;
- public static final int EXP = 4;
- public static final int STR = 6;
- public static final int NULL = 8;
- public static final int NUM = 10;
- public static final int ID = 12;
-
- /**
- * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
- * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
- * at the beginning of a line
- * l is of the form l = 2*k, k a non negative integer
- */
- private static final int ZZ_LEXSTATE[] = {
- 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3
- };
-
- /**
- * Translates characters to character classes
- */
- private static final String ZZ_CMAP_PACKED =
- "\10\0\3\1\2\0\1\1\22\0\1\1\13\0\1\11\3\0\12\3"+
- "\7\0\32\2\1\7\1\0\1\10\3\0\13\2\1\6\1\2\1\4"+
- "\6\2\1\5\5\2\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uff95\0";
-
- /**
- * Translates characters to character classes
- */
- private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
-
- /**
- * Translates DFA states to action switch labels.
- */
- private static final int [] ZZ_ACTION = zzUnpackAction();
-
- private static final String ZZ_ACTION_PACKED_0 =
- "\4\0\1\1\1\2\1\3\1\4\1\3\1\5\1\6"+
- "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\2\0"+
- "\1\16";
-
- private static int [] zzUnpackAction() {
- int [] result = new int[21];
- int offset = 0;
- offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackAction(String packed, int offset, int [] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int count = packed.charAt(i++);
- int value = packed.charAt(i++);
- do result[j++] = value; while (--count > 0);
- }
- return j;
- }
-
-
- /**
- * Translates a state to a row index in the transition table
- */
- private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
-
- private static final String ZZ_ROWMAP_PACKED_0 =
- "\0\0\0\12\0\24\0\36\0\12\0\50\0\12\0\12"+
- "\0\62\0\12\0\12\0\12\0\12\0\12\0\12\0\12"+
- "\0\74\0\12\0\106\0\120\0\12";
-
- private static int [] zzUnpackRowMap() {
- int [] result = new int[21];
- int offset = 0;
- offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackRowMap(String packed, int offset, int [] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int high = packed.charAt(i++) << 16;
- result[j++] = high | packed.charAt(i++);
- }
- return j;
- }
-
- /**
- * The transition table of the DFA
- */
- private static final int [] ZZ_TRANS = zzUnpackTrans();
-
- private static final String ZZ_TRANS_PACKED_0 =
- "\1\5\1\6\1\7\1\10\1\11\2\7\1\12\1\13"+
- "\1\14\12\0\2\15\1\16\1\17\3\16\3\15\1\20"+
- "\1\21\5\22\3\20\1\0\1\6\15\0\1\23\5\0"+
- "\1\21\16\0\1\24\11\0\1\25\3\0";
-
- private static int [] zzUnpackTrans() {
- int [] result = new int[90];
- int offset = 0;
- offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackTrans(String packed, int offset, int [] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int count = packed.charAt(i++);
- int value = packed.charAt(i++);
- value--;
- do result[j++] = value; while (--count > 0);
- }
- return j;
- }
-
-
- /* error codes */
- private static final int ZZ_UNKNOWN_ERROR = 0;
- private static final int ZZ_NO_MATCH = 1;
- private static final int ZZ_PUSHBACK_2BIG = 2;
-
- /* error messages for the codes above */
- private static final String ZZ_ERROR_MSG[] = {
- "Unknown internal scanner error",
- "Error: could not match input",
- "Error: pushback value was too large"
- };
-
- /**
- * ZZ_ATTRIBUTE[aState] contains the attributes of state aState
- */
- private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
-
- private static final String ZZ_ATTRIBUTE_PACKED_0 =
- "\1\0\1\10\2\0\1\11\1\1\2\11\1\1\7\11"+
- "\1\1\1\11\2\0\1\11";
-
- private static int [] zzUnpackAttribute() {
- int [] result = new int[21];
- int offset = 0;
- offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackAttribute(String packed, int offset, int [] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int count = packed.charAt(i++);
- int value = packed.charAt(i++);
- do result[j++] = value; while (--count > 0);
- }
- return j;
- }
-
- /** the input device */
- private java.io.Reader zzReader;
-
- /** the current state of the DFA */
- private int zzState;
-
- /** the current lexical state */
- private int zzLexicalState = YYINITIAL;
-
- /** this buffer contains the current text to be matched and is
- the source of the yytext() string */
- private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-
- /** the textposition at the last accepting state */
- private int zzMarkedPos;
-
- /** the current text position in the buffer */
- private int zzCurrentPos;
-
- /** startRead marks the beginning of the yytext() string in the buffer */
- private int zzStartRead;
-
- /** endRead marks the last character in the buffer, that has been read
- from input */
- private int zzEndRead;
-
- /** number of newlines encountered up to the start of the matched text */
- private int yyline;
-
- /** the number of characters up to the start of the matched text */
- private int yychar;
-
- /**
- * the number of characters from the last newline up to the start of the
- * matched text
- */
- private int yycolumn;
-
- /**
- * zzAtBOL == true <=> the scanner is currently at the beginning of a line
- */
- private boolean zzAtBOL = true;
-
- /** zzAtEOF == true <=> the scanner is at the EOF */
- private boolean zzAtEOF;
-
- /** denotes if the user-EOF-code has already been executed */
- private boolean zzEOFDone;
-
- /**
- * The number of occupied positions in zzBuffer beyond zzEndRead.
- * When a lead/high surrogate has been read from the input stream
- * into the final zzBuffer position, this will have a value of 1;
- * otherwise, it will have a value of 0.
- */
- private int zzFinalHighSurrogate = 0;
-
- /* user code: */
- int intValue = 0;
- String idValue = "";
-
-
- /**
- * Creates a new scanner
- *
- * @param in the java.io.Reader to read input from.
- */
- public JFlexASScanner(java.io.Reader in) {
- this.zzReader = in;
- }
-
-
- /**
- * Unpacks the compressed character translation table.
- *
- * @param packed the packed character translation table
- * @return the unpacked character translation table
- */
- private static char [] zzUnpackCMap(String packed) {
- char [] map = new char[0x110000];
- int i = 0; /* index in packed string */
- int j = 0; /* index in unpacked array */
- while (i < 80) {
- int count = packed.charAt(i++);
- char value = packed.charAt(i++);
- do map[j++] = value; while (--count > 0);
- }
- return map;
- }
-
-
- /**
- * Refills the input buffer.
- *
- * @return false, iff there was new input.
- *
- * @exception java.io.IOException if any I/O-Error occurs
- */
- private boolean zzRefill() throws java.io.IOException {
-
- /* first: make room (if you can) */
- if (zzStartRead > 0) {
- zzEndRead += zzFinalHighSurrogate;
- zzFinalHighSurrogate = 0;
- System.arraycopy(zzBuffer, zzStartRead,
- zzBuffer, 0,
- zzEndRead-zzStartRead);
-
- /* translate stored positions */
- zzEndRead-= zzStartRead;
- zzCurrentPos-= zzStartRead;
- zzMarkedPos-= zzStartRead;
- zzStartRead = 0;
- }
-
- /* is the buffer big enough? */
- if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) {
- /* if not: blow it up */
- char newBuffer[] = new char[zzBuffer.length*2];
- System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
- zzBuffer = newBuffer;
- zzEndRead += zzFinalHighSurrogate;
- zzFinalHighSurrogate = 0;
- }
-
- /* fill the buffer with new input */
- int requested = zzBuffer.length - zzEndRead;
- int numRead = zzReader.read(zzBuffer, zzEndRead, requested);
-
- /* not supposed to occur according to specification of java.io.Reader */
- if (numRead == 0) {
- throw new java.io.IOException("Reader returned 0 characters. See JFlex examples for workaround.");
- }
- if (numRead > 0) {
- zzEndRead += numRead;
- /* If numRead == requested, we might have requested to few chars to
- encode a full Unicode character. We assume that a Reader would
- otherwise never return half characters. */
- if (numRead == requested) {
- if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) {
- --zzEndRead;
- zzFinalHighSurrogate = 1;
- }
- }
- /* potentially more input available */
- return false;
- }
-
- /* numRead < 0 ==> end of stream */
- return true;
- }
-
-
- /**
- * Closes the input stream.
- */
- public final void yyclose() throws java.io.IOException {
- zzAtEOF = true; /* indicate end of file */
- zzEndRead = zzStartRead; /* invalidate buffer */
-
- if (zzReader != null)
- zzReader.close();
- }
-
-
- /**
- * Resets the scanner to read from a new input stream.
- * Does not close the old reader.
- *
- * All internal variables are reset, the old input stream
- * cannot be reused (internal buffer is discarded and lost).
- * Lexical state is set to ZZ_INITIAL.
- *
- * Internal scan buffer is resized down to its initial length, if it has grown.
- *
- * @param reader the new input stream
- */
- public final void yyreset(java.io.Reader reader) {
- zzReader = reader;
- zzAtBOL = true;
- zzAtEOF = false;
- zzEOFDone = false;
- zzEndRead = zzStartRead = 0;
- zzCurrentPos = zzMarkedPos = 0;
- zzFinalHighSurrogate = 0;
- yyline = yychar = yycolumn = 0;
- zzLexicalState = YYINITIAL;
- if (zzBuffer.length > ZZ_BUFFERSIZE)
- zzBuffer = new char[ZZ_BUFFERSIZE];
- }
-
-
- /**
- * Returns the current lexical state.
- */
- public final int yystate() {
- return zzLexicalState;
- }
-
-
- /**
- * Enters a new lexical state
- *
- * @param newState the new lexical state
- */
- public final void yybegin(int newState) {
- zzLexicalState = newState;
- }
-
-
- /**
- * Returns the text matched by the current regular expression.
- */
- public final String yytext() {
- return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
- }
-
-
- /**
- * Returns the character at position pos from the
- * matched text.
- *
- * It is equivalent to yytext().charAt(pos), but faster
- *
- * @param pos the position of the character to fetch.
- * A value from 0 to yylength()-1.
- *
- * @return the character at position pos
- */
- public final char yycharat(int pos) {
- return zzBuffer[zzStartRead+pos];
- }
-
-
- /**
- * Returns the length of the matched text region.
- */
- public final int yylength() {
- return zzMarkedPos-zzStartRead;
- }
-
-
- /**
- * Reports an error that occured while scanning.
- *
- * In a wellformed scanner (no or only correct usage of
- * yypushback(int) and a match-all fallback rule) this method
- * will only be called with things that "Can't Possibly Happen".
- * If this method is called, something is seriously wrong
- * (e.g. a JFlex bug producing a faulty scanner etc.).
- *
- * Usual syntax/scanner level error handling should be done
- * in error fallback rules.
- *
- * @param errorCode the code of the errormessage to display
- */
- private void zzScanError(int errorCode) {
- String message;
- try {
- message = ZZ_ERROR_MSG[errorCode];
- }
- catch (ArrayIndexOutOfBoundsException e) {
- message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
- }
-
- throw new Error(message);
- }
-
-
- /**
- * Pushes the specified amount of characters back into the input stream.
- *
- * They will be read again by then next call of the scanning method
- *
- * @param number the number of characters to be read again.
- * This number must not be greater than yylength()!
- */
- public void yypushback(int number) {
- if ( number > yylength() )
- zzScanError(ZZ_PUSHBACK_2BIG);
-
- zzMarkedPos -= number;
- }
-
-
- /**
- * Resumes scanning until the next regular expression is matched,
- * the end of input is encountered or an I/O-Error occurs.
- *
- * @return the next token
- * @exception java.io.IOException if any I/O-Error occurs
- */
- public Token nextToken() throws java.io.IOException {
- int zzInput;
- int zzAction;
-
- // cached fields:
- int zzCurrentPosL;
- int zzMarkedPosL;
- int zzEndReadL = zzEndRead;
- char [] zzBufferL = zzBuffer;
- char [] zzCMapL = ZZ_CMAP;
-
- int [] zzTransL = ZZ_TRANS;
- int [] zzRowMapL = ZZ_ROWMAP;
- int [] zzAttrL = ZZ_ATTRIBUTE;
-
- while (true) {
- zzMarkedPosL = zzMarkedPos;
-
- boolean zzR = false;
- int zzCh;
- int zzCharCount;
- for (zzCurrentPosL = zzStartRead ;
- zzCurrentPosL < zzMarkedPosL ;
- zzCurrentPosL += zzCharCount ) {
- zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL);
- zzCharCount = Character.charCount(zzCh);
- switch (zzCh) {
- case '\u000B':
- case '\u000C':
- case '\u0085':
- case '\u2028':
- case '\u2029':
- yyline++;
- yycolumn = 0;
- zzR = false;
- break;
- case '\r':
- yyline++;
- yycolumn = 0;
- zzR = true;
- break;
- case '\n':
- if (zzR)
- zzR = false;
- else {
- yyline++;
- yycolumn = 0;
- }
- break;
- default:
- zzR = false;
- yycolumn += zzCharCount;
- }
- }
-
- if (zzR) {
- // peek one character ahead if it is \n (if we have counted one line too much)
- boolean zzPeek;
- if (zzMarkedPosL < zzEndReadL)
- zzPeek = zzBufferL[zzMarkedPosL] == '\n';
- else if (zzAtEOF)
- zzPeek = false;
- else {
- boolean eof = zzRefill();
- zzEndReadL = zzEndRead;
- zzMarkedPosL = zzMarkedPos;
- zzBufferL = zzBuffer;
- if (eof)
- zzPeek = false;
- else
- zzPeek = zzBufferL[zzMarkedPosL] == '\n';
- }
- if (zzPeek) yyline--;
- }
- zzAction = -1;
-
- zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-
- zzState = ZZ_LEXSTATE[zzLexicalState];
-
- // set up zzAction for empty match case:
- int zzAttributes = zzAttrL[zzState];
- if ( (zzAttributes & 1) == 1 ) {
- zzAction = zzState;
- }
-
-
- zzForAction: {
- while (true) {
-
- if (zzCurrentPosL < zzEndReadL) {
- zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
- zzCurrentPosL += Character.charCount(zzInput);
- }
- else if (zzAtEOF) {
- zzInput = YYEOF;
- break zzForAction;
- }
- else {
- // store back cached positions
- zzCurrentPos = zzCurrentPosL;
- zzMarkedPos = zzMarkedPosL;
- boolean eof = zzRefill();
- // get translated positions and possibly new buffer
- zzCurrentPosL = zzCurrentPos;
- zzMarkedPosL = zzMarkedPos;
- zzBufferL = zzBuffer;
- zzEndReadL = zzEndRead;
- if (eof) {
- zzInput = YYEOF;
- break zzForAction;
- }
- else {
- zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
- zzCurrentPosL += Character.charCount(zzInput);
- }
- }
- int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
- if (zzNext == -1) break zzForAction;
- zzState = zzNext;
-
- zzAttributes = zzAttrL[zzState];
- if ( (zzAttributes & 1) == 1 ) {
- zzAction = zzState;
- zzMarkedPosL = zzCurrentPosL;
- if ( (zzAttributes & 8) == 8 ) break zzForAction;
- }
-
- }
- }
-
- // store back cached position
- zzMarkedPos = zzMarkedPosL;
-
- if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
- zzAtEOF = true;
- { return new Token(Token.EOF, "", yyline+1, yycolumn+1);
- }
- }
- else {
- switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
- case 1:
- { return new Token(Token.INVALID, yytext(), yyline+1, yycolumn+1);
- /*throw new Error("Illegal character <" + yytext() + ">"); */
- }
- case 15: break;
- case 2:
- { /* Ignore */
- }
- case 16: break;
- case 3:
- { yybegin(ID);
- idValue = yytext(); System.out.println("BEGIN ID <"+idValue+">");
- }
- case 17: break;
- case 4:
- { yybegin(NUM);
- intValue = yycharat(0)-'0';
- }
- case 18: break;
- case 5:
- { return new Token(Token.LSBR, yytext(), yyline+1, yycolumn+1);
- }
- case 19: break;
- case 6:
- { return new Token(Token.RSBR, yytext(), yyline+1, yycolumn+1);
- }
- case 20: break;
- case 7:
- { return new Token(Token.COMMA, yytext(), yyline+1, yycolumn+1);
- }
- case 21: break;
- case 8:
- { yybegin(YYINITIAL);
- yypushback(1);
- return new NumToken(String.valueOf(intValue), yyline+1, yycolumn+1);
- }
- case 22: break;
- case 9:
- { yybegin(ID); idValue = String.valueOf(intValue); yypushback(1);
- }
- case 23: break;
- case 10:
- { intValue = intValue * 10 + yycharat(0) - '0';
- }
- case 24: break;
- case 11:
- { yybegin(YYINITIAL);System.out.println("PUSHBACK BEFORE <"+yytext()+">");
- yypushback(1); System.out.println("PUSHBACK AFTER <"+yytext()+">"); System.out.println("LINE <"+yyline+"> / COLUMN <"+yycolumn+">");
- return new Token(Token.ID, idValue, yyline+1, yycolumn);
- }
- case 25: break;
- case 12:
- {
- }
- case 26: break;
- case 13:
- { idValue += yytext(); System.out.println("IN ID <"+idValue+">");
- }
- case 27: break;
- case 14:
- { return new Token(Token.NULL, yytext(), yyline+1, yycolumn+1);
- }
- case 28: break;
- default:
- zzScanError(ZZ_NO_MATCH);
- }
- }
- }
- }
-
-
-}
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScannerMain.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScannerMain.class
deleted file mode 100644
index dc91e64..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScannerMain.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/NumToken.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/NumToken.class
deleted file mode 100644
index c38de9c..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/NumToken.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/StringToken.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/StringToken.class
deleted file mode 100644
index 59e3968..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/StringToken.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner1.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner1.class
deleted file mode 100644
index 7196c78..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner1.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner2.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner2.class
deleted file mode 100644
index 237cd91..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner2.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner3.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner3.class
deleted file mode 100644
index d5f9e1a..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner3.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner4.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner4.class
deleted file mode 100644
index f235c26..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner4.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner5.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner5.class
deleted file mode 100644
index 59f3889..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestASScanner5.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestsAll.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestsAll.class
deleted file mode 100644
index f0ed92d..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TestsAll.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/Token.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/Token.class
deleted file mode 100644
index bd5db19..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/Token.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TokenStreamTest.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TokenStreamTest.class
deleted file mode 100644
index b8eef27..0000000
Binary files a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/TokenStreamTest.class and /dev/null differ
diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/ÜB-Praxis-JFlex Scanner für AS-Leer.iml b/ÜB-Praxis-JFlex Scanner für AS-Leer/ÜB-Praxis-JFlex Scanner für AS-Leer.iml
index dec3c42..5e98636 100644
--- a/ÜB-Praxis-JFlex Scanner für AS-Leer/ÜB-Praxis-JFlex Scanner für AS-Leer.iml
+++ b/ÜB-Praxis-JFlex Scanner für AS-Leer/ÜB-Praxis-JFlex Scanner für AS-Leer.iml
@@ -32,7 +32,7 @@
-
+
\ No newline at end of file
diff --git a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/NamenScanner$NamenState.class b/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/NamenScanner$NamenState.class
deleted file mode 100644
index 4b09640..0000000
Binary files a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/NamenScanner$NamenState.class and /dev/null differ
diff --git a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/NamenScanner.class b/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/NamenScanner.class
deleted file mode 100644
index 0eb9b75..0000000
Binary files a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/NamenScanner.class and /dev/null differ
diff --git a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/NamenScannerMain.class b/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/NamenScannerMain.class
deleted file mode 100644
index f845463..0000000
Binary files a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/NamenScannerMain.class and /dev/null differ
diff --git a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/TestNamenScanner1.class b/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/TestNamenScanner1.class
deleted file mode 100644
index bf8d3af..0000000
Binary files a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/TestNamenScanner1.class and /dev/null differ
diff --git a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/TestsAll.class b/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/TestsAll.class
deleted file mode 100644
index 37d78f7..0000000
Binary files a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/TestsAll.class and /dev/null differ
diff --git a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/Token.class b/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/Token.class
deleted file mode 100644
index 7323299..0000000
Binary files a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/Token.class and /dev/null differ
diff --git a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/TokenStreamTest.class b/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/TokenStreamTest.class
deleted file mode 100644
index 42135c5..0000000
Binary files a/ÜB-Praxis-Scanner für Namen-Leer/bin/de/dhbw/compiler/namenscanner/TokenStreamTest.class and /dev/null differ
diff --git a/ÜB-Praxis-Scanner für Namen-Leer/ÜB-Praxis-Scanner für Namen-Leer.iml b/ÜB-Praxis-Scanner für Namen-Leer/ÜB-Praxis-Scanner für Namen-Leer.iml
index 8ecb96d..8754a60 100644
--- a/ÜB-Praxis-Scanner für Namen-Leer/ÜB-Praxis-Scanner für Namen-Leer.iml
+++ b/ÜB-Praxis-Scanner für Namen-Leer/ÜB-Praxis-Scanner für Namen-Leer.iml
@@ -8,7 +8,6 @@
-
@@ -19,5 +18,6 @@
+
\ No newline at end of file