diff --git a/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens b/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens index 39cd892..76de90c 100644 --- a/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens +++ b/CC-Praxis-Antlr Parser fuer X-Leer/X.tokens @@ -1,7 +1,5 @@ -T__9=9 -DECL=4 -DECLLIST=5 -INVALID=6 -STATLIST=7 -UMINUS=8 -'TODO'=9 +T__7=7 +ID=4 +INTCONST=5 +WS=6 +'TODO'=7 diff --git a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/AntlrXParserMain.java b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/AntlrXParserMain.java index 5f43e25..c1072a2 100644 --- a/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/AntlrXParserMain.java +++ b/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/AntlrXParserMain.java @@ -20,6 +20,7 @@ import org.antlr.runtime.tree.CommonTree; import org.antlr.runtime.tree.DOTTreeGenerator; import org.antlr.runtime.tree.Tree; import org.antlr.stringtemplate.StringTemplate; +import org.antlr.tool.GrammarAST; public class AntlrXParserMain { 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 087125c..a208f90 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 @@ -14,16 +14,29 @@ grammar X; options { language = Java; output = AST; + ASTLabelType = CommonTree; + backtrack = true; } // AST-Tokens tokens { - DECL; - STATLIST; - DECLLIST; - UMINUS; + ID; + INTCONST; + WS; } @parser::header {package de.dhbw.compiler.antlrxparser;} @lexer::header {package de.dhbw.compiler.antlrxparser;} +// Anmerkung: Es müssen Lexer- UND Parser-Regeln stehen, da sonst das Generieren nicht funktionieren +// Lexer stuff +ID: ('a'..'z' | 'A'..'Z') + (options { + greedy = true; + }: 'a'..'z' | 'A'..'Z' | '0'..'9')*; +INTCONST: ('0'..'9')+; + +WS: ('\t' | ' ' | '\r' | '\n' | '\f')+ { skip(); }; + +// Parser stuff +program: 'TODO'; 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 6f16d62..985f3b1 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 11:44:58 +// $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 12:40:05 package de.dhbw.compiler.antlrxparser; import org.antlr.runtime.*; @@ -9,12 +9,10 @@ import java.util.ArrayList; @SuppressWarnings("all") public class XLexer extends Lexer { public static final int EOF=-1; - public static final int T__9=9; - public static final int DECL=4; - public static final int DECLLIST=5; - public static final int INVALID=6; - public static final int STATLIST=7; - public static final int UMINUS=8; + 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; // delegates // delegators @@ -31,10 +29,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__9" - public final void mT__9() throws RecognitionException { + // $ANTLR start "T__7" + public final void mT__7() throws RecognitionException { try { - int _type = T__9; + int _type = T__7; 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' @@ -50,17 +48,129 @@ public class XLexer extends Lexer { // do for sure before leaving } } - // $ANTLR end "T__9" + // $ANTLR end "T__7" - // $ANTLR start "INVALID" - public final void mINVALID() throws RecognitionException { + // $ANTLR start "ID" + public final void mID() throws RecognitionException { try { - int _type = INVALID; + 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:31:8: ( . ) - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:31:11: . + // /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' )* { - matchAny(); + 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; + } + // /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' )* + 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 : + // /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' + { + 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' + { + 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' + { + matchRange('0','9'); + } + break; + + default : + break loop1; + } + } + } state.type = _type; @@ -70,46 +180,264 @@ public class XLexer extends Lexer { // do for sure before leaving } } - // $ANTLR end "INVALID" + // $ANTLR end "ID" + + // $ANTLR start "INTCONST" + public final void mINTCONST() throws RecognitionException { + 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:37: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; + } + + switch (alt2) { + case 1 : + // /Users/kreis/git/gitea.humenius.me/dhbw-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 "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:39:13: ( '\\t' | ' ' | '\\r' | '\\n' | '\\f' )+ + int cnt3=0; + loop3: + 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; + } + + 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: + { + 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 ( cnt3 >= 1 ) break loop3; + EarlyExitException eee = new EarlyExitException(3, input); + throw eee; + } + cnt3++; + } + + skip(); + } + + state.type = _type; + state.channel = _channel; + } + finally { + // do for sure before leaving + } + } + // $ANTLR end "WS" @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__9 | INVALID ) - int alt1=2; - int LA1_0 = input.LA(1); - if ( (LA1_0=='T') ) { - int LA1_1 = input.LA(2); - if ( (LA1_1=='O') ) { - alt1=1; + // /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 { - alt1=2; + alt4=2; } - } - else if ( ((LA1_0 >= '\u0000' && LA1_0 <= 'S')||(LA1_0 >= 'U' && LA1_0 <= '\uFFFF')) ) { - alt1=2; - } - - else { + } + 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("", 1, 0, input); + new NoViableAltException("", 4, 0, input); throw nvae; } - - switch (alt1) { + 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__9 + // /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 { - mT__9(); + mT__7(); } 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: INVALID + // /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 { - mINVALID(); + 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 + { + 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: WS + { + mWS(); } break; 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 52a9ae2..00a6ac2 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,10 +1,12 @@ -// $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 11:44:58 +// $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 12:40:05 package de.dhbw.compiler.antlrxparser; import org.antlr.runtime.*; import java.util.Stack; import java.util.List; import java.util.ArrayList; +import java.util.Map; +import java.util.HashMap; import org.antlr.runtime.tree.*; @@ -12,16 +14,13 @@ import org.antlr.runtime.tree.*; @SuppressWarnings("all") public class XParser extends Parser { public static final String[] tokenNames = new String[] { - "", "", "", "", "DECL", "DECLLIST", "INVALID", - "STATLIST", "UMINUS", "'TODO'" + "", "", "", "", "ID", "INTCONST", "WS", "'TODO'" }; public static final int EOF=-1; - public static final int T__9=9; - public static final int DECL=4; - public static final int DECLLIST=5; - public static final int INVALID=6; - public static final int STATLIST=7; - public static final int UMINUS=8; + 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; // delegates public Parser[] getDelegates() { @@ -51,47 +50,50 @@ public class XParser extends Parser { public static class program_return extends ParserRuleReturnScope { - Object tree; + CommonTree tree; @Override - public Object getTree() { return tree; } + public CommonTree getTree() { return tree; } }; // $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:33: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:42:1: program : 'TODO' ; public final XParser.program_return program() throws RecognitionException { XParser.program_return retval = new XParser.program_return(); retval.start = input.LT(1); - Object root_0 = null; + CommonTree root_0 = null; Token string_literal1=null; - Object string_literal1_tree=null; + 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:33:8: ( 'TODO' ) - // /Users/kreis/git/gitea.humenius.me/dhbw-compilerbau/CC-Praxis-Antlr Parser fuer X-Leer/src/de/dhbw/compiler/antlrxparser/X.g:33:10: 'TODO' + // /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' { - root_0 = (Object)adaptor.nil(); + root_0 = (CommonTree)adaptor.nil(); - string_literal1=(Token)match(input,9,FOLLOW_9_in_program95); - string_literal1_tree = (Object)adaptor.create(string_literal1); + string_literal1=(Token)match(input,7,FOLLOW_7_in_program256); if (state.failed) return retval; + if ( state.backtracking==0 ) { + string_literal1_tree = (CommonTree)adaptor.create(string_literal1); adaptor.addChild(root_0, string_literal1_tree); + } } retval.stop = input.LT(-1); - retval.tree = (Object)adaptor.rulePostProcessing(root_0); + 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 = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving @@ -104,5 +106,5 @@ public class XParser extends Parser { - public static final BitSet FOLLOW_9_in_program95 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_7_in_program256 = new BitSet(new long[]{0x0000000000000002L}); } diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/AntlrXParserMain.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/AntlrXParserMain.class new file mode 100644 index 0000000..e12f960 Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/AntlrXParserMain.class differ 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 107751e..a208f90 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 @@ -14,20 +14,29 @@ grammar X; options { language = Java; output = AST; + ASTLabelType = CommonTree; + backtrack = true; } // AST-Tokens tokens { - DECL; - STATLIST; - DECLLIST; - UMINUS; + ID; + INTCONST; + WS; } @parser::header {package de.dhbw.compiler.antlrxparser;} @lexer::header {package de.dhbw.compiler.antlrxparser;} +// Anmerkung: Es müssen Lexer- UND Parser-Regeln stehen, da sonst das Generieren nicht funktionieren +// Lexer stuff +ID: ('a'..'z' | 'A'..'Z') + (options { + greedy = true; + }: 'a'..'z' | 'A'..'Z' | '0'..'9')*; +INTCONST: ('0'..'9')+; -INVALID: .; +WS: ('\t' | ' ' | '\r' | '\n' | '\f')+ { skip(); }; -program: 'TODO'; \ No newline at end of file +// Parser stuff +program: 'TODO'; diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer.class new file mode 100644 index 0000000..c51ff04 Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XLexer.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$program_return.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$program_return.class new file mode 100644 index 0000000..64a145f Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser$program_return.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser.class new file mode 100644 index 0000000..9cabe2f Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/XParser.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/ParseTreeTest.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/ParseTreeTest.class new file mode 100644 index 0000000..175ae62 Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/ParseTreeTest.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXParser.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXParser.class new file mode 100644 index 0000000..225fb2f Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXParser.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXParser1.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXParser1.class new file mode 100644 index 0000000..635ea3c Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXParser1.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXParser2.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXParser2.class new file mode 100644 index 0000000..97138a5 Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXParser2.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXScanner1.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXScanner1.class new file mode 100644 index 0000000..9b60b02 Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXScanner1.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXScanner2.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXScanner2.class new file mode 100644 index 0000000..8fcbdcd Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXScanner2.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXScanner3.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXScanner3.class new file mode 100644 index 0000000..528ce41 Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestAntlrXScanner3.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestToken.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestToken.class new file mode 100644 index 0000000..3bbea5c Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TestToken.class differ diff --git a/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TokenStreamTest.class b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TokenStreamTest.class new file mode 100644 index 0000000..4d92506 Binary files /dev/null and b/out/production/CC-Praxis-Antlr Parser fuer X-Leer/de/dhbw/compiler/antlrxparser/test/TokenStreamTest.class differ