Initial commit
This commit is contained in:
92
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/Klang.interp
Normal file
92
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/Klang.interp
Normal file
@@ -0,0 +1,92 @@
|
||||
token literal names:
|
||||
null
|
||||
'||'
|
||||
'&&'
|
||||
'=='
|
||||
'!='
|
||||
'>'
|
||||
'<'
|
||||
'>='
|
||||
'<='
|
||||
'+'
|
||||
'-'
|
||||
'*'
|
||||
'/'
|
||||
'%'
|
||||
'^'
|
||||
'!'
|
||||
';'
|
||||
'='
|
||||
'('
|
||||
')'
|
||||
'{'
|
||||
'}'
|
||||
'true'
|
||||
'false'
|
||||
'nil'
|
||||
'if'
|
||||
'else'
|
||||
'while'
|
||||
'log'
|
||||
null
|
||||
null
|
||||
null
|
||||
null
|
||||
null
|
||||
null
|
||||
null
|
||||
|
||||
token symbolic names:
|
||||
null
|
||||
OR
|
||||
AND
|
||||
EQ
|
||||
NEQ
|
||||
GT
|
||||
LT
|
||||
GTEQ
|
||||
LTEQ
|
||||
PLUS
|
||||
MINUS
|
||||
MULT
|
||||
DIV
|
||||
MOD
|
||||
POW
|
||||
NOT
|
||||
SCOL
|
||||
ASSIGN
|
||||
OPAR
|
||||
CPAR
|
||||
OBRACE
|
||||
CBRACE
|
||||
TRUE
|
||||
FALSE
|
||||
NIL
|
||||
IF
|
||||
ELSE
|
||||
WHILE
|
||||
LOG
|
||||
ID
|
||||
INT
|
||||
FLOAT
|
||||
STRING
|
||||
COMMENT
|
||||
SPACE
|
||||
OTHER
|
||||
|
||||
rule names:
|
||||
parse
|
||||
block
|
||||
stat
|
||||
assignment
|
||||
if_stat
|
||||
condition_block
|
||||
stat_block
|
||||
while_stat
|
||||
log
|
||||
expr
|
||||
atom
|
||||
|
||||
|
||||
atn:
|
||||
[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 37, 124, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 3, 2, 3, 2, 3, 2, 3, 3, 7, 3, 29, 10, 3, 12, 3, 14, 3, 32, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 40, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 7, 6, 52, 10, 6, 12, 6, 14, 6, 55, 11, 6, 3, 6, 3, 6, 5, 6, 59, 10, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 69, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 85, 10, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 108, 10, 11, 12, 11, 14, 11, 111, 11, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 122, 10, 12, 3, 12, 2, 3, 20, 13, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 2, 8, 3, 2, 13, 15, 3, 2, 11, 12, 3, 2, 7, 10, 3, 2, 5, 6, 3, 2, 32, 33, 3, 2, 24, 25, 2, 134, 2, 24, 3, 2, 2, 2, 4, 30, 3, 2, 2, 2, 6, 39, 3, 2, 2, 2, 8, 41, 3, 2, 2, 2, 10, 46, 3, 2, 2, 2, 12, 60, 3, 2, 2, 2, 14, 68, 3, 2, 2, 2, 16, 70, 3, 2, 2, 2, 18, 74, 3, 2, 2, 2, 20, 84, 3, 2, 2, 2, 22, 121, 3, 2, 2, 2, 24, 25, 5, 4, 3, 2, 25, 26, 7, 2, 2, 3, 26, 3, 3, 2, 2, 2, 27, 29, 5, 6, 4, 2, 28, 27, 3, 2, 2, 2, 29, 32, 3, 2, 2, 2, 30, 28, 3, 2, 2, 2, 30, 31, 3, 2, 2, 2, 31, 5, 3, 2, 2, 2, 32, 30, 3, 2, 2, 2, 33, 40, 5, 8, 5, 2, 34, 40, 5, 10, 6, 2, 35, 40, 5, 16, 9, 2, 36, 40, 5, 18, 10, 2, 37, 38, 7, 37, 2, 2, 38, 40, 8, 4, 1, 2, 39, 33, 3, 2, 2, 2, 39, 34, 3, 2, 2, 2, 39, 35, 3, 2, 2, 2, 39, 36, 3, 2, 2, 2, 39, 37, 3, 2, 2, 2, 40, 7, 3, 2, 2, 2, 41, 42, 7, 31, 2, 2, 42, 43, 7, 19, 2, 2, 43, 44, 5, 20, 11, 2, 44, 45, 7, 18, 2, 2, 45, 9, 3, 2, 2, 2, 46, 47, 7, 27, 2, 2, 47, 53, 5, 12, 7, 2, 48, 49, 7, 28, 2, 2, 49, 50, 7, 27, 2, 2, 50, 52, 5, 12, 7, 2, 51, 48, 3, 2, 2, 2, 52, 55, 3, 2, 2, 2, 53, 51, 3, 2, 2, 2, 53, 54, 3, 2, 2, 2, 54, 58, 3, 2, 2, 2, 55, 53, 3, 2, 2, 2, 56, 57, 7, 28, 2, 2, 57, 59, 5, 14, 8, 2, 58, 56, 3, 2, 2, 2, 58, 59, 3, 2, 2, 2, 59, 11, 3, 2, 2, 2, 60, 61, 5, 20, 11, 2, 61, 62, 5, 14, 8, 2, 62, 13, 3, 2, 2, 2, 63, 64, 7, 22, 2, 2, 64, 65, 5, 4, 3, 2, 65, 66, 7, 23, 2, 2, 66, 69, 3, 2, 2, 2, 67, 69, 5, 6, 4, 2, 68, 63, 3, 2, 2, 2, 68, 67, 3, 2, 2, 2, 69, 15, 3, 2, 2, 2, 70, 71, 7, 29, 2, 2, 71, 72, 5, 20, 11, 2, 72, 73, 5, 14, 8, 2, 73, 17, 3, 2, 2, 2, 74, 75, 7, 30, 2, 2, 75, 76, 5, 20, 11, 2, 76, 77, 7, 18, 2, 2, 77, 19, 3, 2, 2, 2, 78, 79, 8, 11, 1, 2, 79, 80, 7, 12, 2, 2, 80, 85, 5, 20, 11, 11, 81, 82, 7, 17, 2, 2, 82, 85, 5, 20, 11, 10, 83, 85, 5, 22, 12, 2, 84, 78, 3, 2, 2, 2, 84, 81, 3, 2, 2, 2, 84, 83, 3, 2, 2, 2, 85, 109, 3, 2, 2, 2, 86, 87, 12, 12, 2, 2, 87, 88, 7, 16, 2, 2, 88, 108, 5, 20, 11, 13, 89, 90, 12, 9, 2, 2, 90, 91, 9, 2, 2, 2, 91, 108, 5, 20, 11, 10, 92, 93, 12, 8, 2, 2, 93, 94, 9, 3, 2, 2, 94, 108, 5, 20, 11, 9, 95, 96, 12, 7, 2, 2, 96, 97, 9, 4, 2, 2, 97, 108, 5, 20, 11, 8, 98, 99, 12, 6, 2, 2, 99, 100, 9, 5, 2, 2, 100, 108, 5, 20, 11, 7, 101, 102, 12, 5, 2, 2, 102, 103, 7, 4, 2, 2, 103, 108, 5, 20, 11, 6, 104, 105, 12, 4, 2, 2, 105, 106, 7, 3, 2, 2, 106, 108, 5, 20, 11, 5, 107, 86, 3, 2, 2, 2, 107, 89, 3, 2, 2, 2, 107, 92, 3, 2, 2, 2, 107, 95, 3, 2, 2, 2, 107, 98, 3, 2, 2, 2, 107, 101, 3, 2, 2, 2, 107, 104, 3, 2, 2, 2, 108, 111, 3, 2, 2, 2, 109, 107, 3, 2, 2, 2, 109, 110, 3, 2, 2, 2, 110, 21, 3, 2, 2, 2, 111, 109, 3, 2, 2, 2, 112, 113, 7, 20, 2, 2, 113, 114, 5, 20, 11, 2, 114, 115, 7, 21, 2, 2, 115, 122, 3, 2, 2, 2, 116, 122, 9, 6, 2, 2, 117, 122, 9, 7, 2, 2, 118, 122, 7, 31, 2, 2, 119, 122, 7, 34, 2, 2, 120, 122, 7, 26, 2, 2, 121, 112, 3, 2, 2, 2, 121, 116, 3, 2, 2, 2, 121, 117, 3, 2, 2, 2, 121, 118, 3, 2, 2, 2, 121, 119, 3, 2, 2, 2, 121, 120, 3, 2, 2, 2, 122, 23, 3, 2, 2, 2, 11, 30, 39, 53, 58, 68, 84, 107, 109, 121]
|
||||
63
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/Klang.tokens
Normal file
63
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/Klang.tokens
Normal file
@@ -0,0 +1,63 @@
|
||||
OR=1
|
||||
AND=2
|
||||
EQ=3
|
||||
NEQ=4
|
||||
GT=5
|
||||
LT=6
|
||||
GTEQ=7
|
||||
LTEQ=8
|
||||
PLUS=9
|
||||
MINUS=10
|
||||
MULT=11
|
||||
DIV=12
|
||||
MOD=13
|
||||
POW=14
|
||||
NOT=15
|
||||
SCOL=16
|
||||
ASSIGN=17
|
||||
OPAR=18
|
||||
CPAR=19
|
||||
OBRACE=20
|
||||
CBRACE=21
|
||||
TRUE=22
|
||||
FALSE=23
|
||||
NIL=24
|
||||
IF=25
|
||||
ELSE=26
|
||||
WHILE=27
|
||||
LOG=28
|
||||
ID=29
|
||||
INT=30
|
||||
FLOAT=31
|
||||
STRING=32
|
||||
COMMENT=33
|
||||
SPACE=34
|
||||
OTHER=35
|
||||
'||'=1
|
||||
'&&'=2
|
||||
'=='=3
|
||||
'!='=4
|
||||
'>'=5
|
||||
'<'=6
|
||||
'>='=7
|
||||
'<='=8
|
||||
'+'=9
|
||||
'-'=10
|
||||
'*'=11
|
||||
'/'=12
|
||||
'%'=13
|
||||
'^'=14
|
||||
'!'=15
|
||||
';'=16
|
||||
'='=17
|
||||
'('=18
|
||||
')'=19
|
||||
'{'=20
|
||||
'}'=21
|
||||
'true'=22
|
||||
'false'=23
|
||||
'nil'=24
|
||||
'if'=25
|
||||
'else'=26
|
||||
'while'=27
|
||||
'log'=28
|
||||
122
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/KlangLexer.interp
Normal file
122
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/KlangLexer.interp
Normal file
File diff suppressed because one or more lines are too long
183
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/KlangLexer.java
Normal file
183
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/KlangLexer.java
Normal file
@@ -0,0 +1,183 @@
|
||||
// Generated from /home/marvin/Documents/university/compiler/antlr_test/klang/klang/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 by ANTLR 4.7.1
|
||||
import org.antlr.v4.runtime.Lexer;
|
||||
import org.antlr.v4.runtime.CharStream;
|
||||
import org.antlr.v4.runtime.Token;
|
||||
import org.antlr.v4.runtime.TokenStream;
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.atn.*;
|
||||
import org.antlr.v4.runtime.dfa.DFA;
|
||||
import org.antlr.v4.runtime.misc.*;
|
||||
|
||||
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
|
||||
public class KlangLexer extends Lexer {
|
||||
static { RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION); }
|
||||
|
||||
protected static final DFA[] _decisionToDFA;
|
||||
protected static final PredictionContextCache _sharedContextCache =
|
||||
new PredictionContextCache();
|
||||
public static final int
|
||||
OR=1, AND=2, EQ=3, NEQ=4, GT=5, LT=6, GTEQ=7, LTEQ=8, PLUS=9, MINUS=10,
|
||||
MULT=11, DIV=12, MOD=13, POW=14, NOT=15, SCOL=16, ASSIGN=17, OPAR=18,
|
||||
CPAR=19, OBRACE=20, CBRACE=21, TRUE=22, FALSE=23, NIL=24, IF=25, ELSE=26,
|
||||
WHILE=27, LOG=28, ID=29, INT=30, FLOAT=31, STRING=32, COMMENT=33, SPACE=34,
|
||||
OTHER=35;
|
||||
public static String[] channelNames = {
|
||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||
};
|
||||
|
||||
public static String[] modeNames = {
|
||||
"DEFAULT_MODE"
|
||||
};
|
||||
|
||||
public static final String[] ruleNames = {
|
||||
"OR", "AND", "EQ", "NEQ", "GT", "LT", "GTEQ", "LTEQ", "PLUS", "MINUS",
|
||||
"MULT", "DIV", "MOD", "POW", "NOT", "SCOL", "ASSIGN", "OPAR", "CPAR",
|
||||
"OBRACE", "CBRACE", "TRUE", "FALSE", "NIL", "IF", "ELSE", "WHILE", "LOG",
|
||||
"ID", "INT", "FLOAT", "STRING", "COMMENT", "SPACE", "OTHER"
|
||||
};
|
||||
|
||||
private static final String[] _LITERAL_NAMES = {
|
||||
null, "'||'", "'&&'", "'=='", "'!='", "'>'", "'<'", "'>='", "'<='", "'+'",
|
||||
"'-'", "'*'", "'/'", "'%'", "'^'", "'!'", "';'", "'='", "'('", "')'",
|
||||
"'{'", "'}'", "'true'", "'false'", "'nil'", "'if'", "'else'", "'while'",
|
||||
"'log'"
|
||||
};
|
||||
private static final String[] _SYMBOLIC_NAMES = {
|
||||
null, "OR", "AND", "EQ", "NEQ", "GT", "LT", "GTEQ", "LTEQ", "PLUS", "MINUS",
|
||||
"MULT", "DIV", "MOD", "POW", "NOT", "SCOL", "ASSIGN", "OPAR", "CPAR",
|
||||
"OBRACE", "CBRACE", "TRUE", "FALSE", "NIL", "IF", "ELSE", "WHILE", "LOG",
|
||||
"ID", "INT", "FLOAT", "STRING", "COMMENT", "SPACE", "OTHER"
|
||||
};
|
||||
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #VOCABULARY} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String[] tokenNames;
|
||||
static {
|
||||
tokenNames = new String[_SYMBOLIC_NAMES.length];
|
||||
for (int i = 0; i < tokenNames.length; i++) {
|
||||
tokenNames[i] = VOCABULARY.getLiteralName(i);
|
||||
if (tokenNames[i] == null) {
|
||||
tokenNames[i] = VOCABULARY.getSymbolicName(i);
|
||||
}
|
||||
|
||||
if (tokenNames[i] == null) {
|
||||
tokenNames[i] = "<INVALID>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public String[] getTokenNames() {
|
||||
return tokenNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
public Vocabulary getVocabulary() {
|
||||
return VOCABULARY;
|
||||
}
|
||||
|
||||
|
||||
public KlangLexer(CharStream input) {
|
||||
super(input);
|
||||
_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGrammarFileName() { return "Klang.g4"; }
|
||||
|
||||
@Override
|
||||
public String[] getRuleNames() { return ruleNames; }
|
||||
|
||||
@Override
|
||||
public String getSerializedATN() { return _serializedATN; }
|
||||
|
||||
@Override
|
||||
public String[] getChannelNames() { return channelNames; }
|
||||
|
||||
@Override
|
||||
public String[] getModeNames() { return modeNames; }
|
||||
|
||||
@Override
|
||||
public ATN getATN() { return _ATN; }
|
||||
|
||||
public static final String _serializedATN =
|
||||
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2%\u00d4\b\1\4\2\t"+
|
||||
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
|
||||
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
|
||||
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
|
||||
"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
|
||||
"\t!\4\"\t\"\4#\t#\4$\t$\3\2\3\2\3\2\3\3\3\3\3\3\3\4\3\4\3\4\3\5\3\5\3"+
|
||||
"\5\3\6\3\6\3\7\3\7\3\b\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3"+
|
||||
"\r\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22\3\23\3\23\3\24"+
|
||||
"\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30"+
|
||||
"\3\30\3\30\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33"+
|
||||
"\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\36\3\36\7\36\u009d"+
|
||||
"\n\36\f\36\16\36\u00a0\13\36\3\37\6\37\u00a3\n\37\r\37\16\37\u00a4\3 "+
|
||||
"\6 \u00a8\n \r \16 \u00a9\3 \3 \7 \u00ae\n \f \16 \u00b1\13 \3 \3 \6 "+
|
||||
"\u00b5\n \r \16 \u00b6\5 \u00b9\n \3!\3!\3!\3!\7!\u00bf\n!\f!\16!\u00c2"+
|
||||
"\13!\3!\3!\3\"\3\"\7\"\u00c8\n\"\f\"\16\"\u00cb\13\"\3\"\3\"\3#\3#\3#"+
|
||||
"\3#\3$\3$\2\2%\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16"+
|
||||
"\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34"+
|
||||
"\67\359\36;\37= ?!A\"C#E$G%\3\2\b\5\2C\\aac|\6\2\62;C\\aac|\3\2\62;\5"+
|
||||
"\2\f\f\17\17$$\4\2\f\f\17\17\5\2\13\f\17\17\"\"\2\u00dc\2\3\3\2\2\2\2"+
|
||||
"\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2"+
|
||||
"\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2"+
|
||||
"\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2"+
|
||||
"\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2"+
|
||||
"\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2"+
|
||||
"\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\3I\3\2\2\2\5"+
|
||||
"L\3\2\2\2\7O\3\2\2\2\tR\3\2\2\2\13U\3\2\2\2\rW\3\2\2\2\17Y\3\2\2\2\21"+
|
||||
"\\\3\2\2\2\23_\3\2\2\2\25a\3\2\2\2\27c\3\2\2\2\31e\3\2\2\2\33g\3\2\2\2"+
|
||||
"\35i\3\2\2\2\37k\3\2\2\2!m\3\2\2\2#o\3\2\2\2%q\3\2\2\2\'s\3\2\2\2)u\3"+
|
||||
"\2\2\2+w\3\2\2\2-y\3\2\2\2/~\3\2\2\2\61\u0084\3\2\2\2\63\u0088\3\2\2\2"+
|
||||
"\65\u008b\3\2\2\2\67\u0090\3\2\2\29\u0096\3\2\2\2;\u009a\3\2\2\2=\u00a2"+
|
||||
"\3\2\2\2?\u00b8\3\2\2\2A\u00ba\3\2\2\2C\u00c5\3\2\2\2E\u00ce\3\2\2\2G"+
|
||||
"\u00d2\3\2\2\2IJ\7~\2\2JK\7~\2\2K\4\3\2\2\2LM\7(\2\2MN\7(\2\2N\6\3\2\2"+
|
||||
"\2OP\7?\2\2PQ\7?\2\2Q\b\3\2\2\2RS\7#\2\2ST\7?\2\2T\n\3\2\2\2UV\7@\2\2"+
|
||||
"V\f\3\2\2\2WX\7>\2\2X\16\3\2\2\2YZ\7@\2\2Z[\7?\2\2[\20\3\2\2\2\\]\7>\2"+
|
||||
"\2]^\7?\2\2^\22\3\2\2\2_`\7-\2\2`\24\3\2\2\2ab\7/\2\2b\26\3\2\2\2cd\7"+
|
||||
",\2\2d\30\3\2\2\2ef\7\61\2\2f\32\3\2\2\2gh\7\'\2\2h\34\3\2\2\2ij\7`\2"+
|
||||
"\2j\36\3\2\2\2kl\7#\2\2l \3\2\2\2mn\7=\2\2n\"\3\2\2\2op\7?\2\2p$\3\2\2"+
|
||||
"\2qr\7*\2\2r&\3\2\2\2st\7+\2\2t(\3\2\2\2uv\7}\2\2v*\3\2\2\2wx\7\177\2"+
|
||||
"\2x,\3\2\2\2yz\7v\2\2z{\7t\2\2{|\7w\2\2|}\7g\2\2}.\3\2\2\2~\177\7h\2\2"+
|
||||
"\177\u0080\7c\2\2\u0080\u0081\7n\2\2\u0081\u0082\7u\2\2\u0082\u0083\7"+
|
||||
"g\2\2\u0083\60\3\2\2\2\u0084\u0085\7p\2\2\u0085\u0086\7k\2\2\u0086\u0087"+
|
||||
"\7n\2\2\u0087\62\3\2\2\2\u0088\u0089\7k\2\2\u0089\u008a\7h\2\2\u008a\64"+
|
||||
"\3\2\2\2\u008b\u008c\7g\2\2\u008c\u008d\7n\2\2\u008d\u008e\7u\2\2\u008e"+
|
||||
"\u008f\7g\2\2\u008f\66\3\2\2\2\u0090\u0091\7y\2\2\u0091\u0092\7j\2\2\u0092"+
|
||||
"\u0093\7k\2\2\u0093\u0094\7n\2\2\u0094\u0095\7g\2\2\u00958\3\2\2\2\u0096"+
|
||||
"\u0097\7n\2\2\u0097\u0098\7q\2\2\u0098\u0099\7i\2\2\u0099:\3\2\2\2\u009a"+
|
||||
"\u009e\t\2\2\2\u009b\u009d\t\3\2\2\u009c\u009b\3\2\2\2\u009d\u00a0\3\2"+
|
||||
"\2\2\u009e\u009c\3\2\2\2\u009e\u009f\3\2\2\2\u009f<\3\2\2\2\u00a0\u009e"+
|
||||
"\3\2\2\2\u00a1\u00a3\t\4\2\2\u00a2\u00a1\3\2\2\2\u00a3\u00a4\3\2\2\2\u00a4"+
|
||||
"\u00a2\3\2\2\2\u00a4\u00a5\3\2\2\2\u00a5>\3\2\2\2\u00a6\u00a8\t\4\2\2"+
|
||||
"\u00a7\u00a6\3\2\2\2\u00a8\u00a9\3\2\2\2\u00a9\u00a7\3\2\2\2\u00a9\u00aa"+
|
||||
"\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00af\7\60\2\2\u00ac\u00ae\t\4\2\2"+
|
||||
"\u00ad\u00ac\3\2\2\2\u00ae\u00b1\3\2\2\2\u00af\u00ad\3\2\2\2\u00af\u00b0"+
|
||||
"\3\2\2\2\u00b0\u00b9\3\2\2\2\u00b1\u00af\3\2\2\2\u00b2\u00b4\7\60\2\2"+
|
||||
"\u00b3\u00b5\t\4\2\2\u00b4\u00b3\3\2\2\2\u00b5\u00b6\3\2\2\2\u00b6\u00b4"+
|
||||
"\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\u00b9\3\2\2\2\u00b8\u00a7\3\2\2\2\u00b8"+
|
||||
"\u00b2\3\2\2\2\u00b9@\3\2\2\2\u00ba\u00c0\7$\2\2\u00bb\u00bf\n\5\2\2\u00bc"+
|
||||
"\u00bd\7$\2\2\u00bd\u00bf\7$\2\2\u00be\u00bb\3\2\2\2\u00be\u00bc\3\2\2"+
|
||||
"\2\u00bf\u00c2\3\2\2\2\u00c0\u00be\3\2\2\2\u00c0\u00c1\3\2\2\2\u00c1\u00c3"+
|
||||
"\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c3\u00c4\7$\2\2\u00c4B\3\2\2\2\u00c5\u00c9"+
|
||||
"\7%\2\2\u00c6\u00c8\n\6\2\2\u00c7\u00c6\3\2\2\2\u00c8\u00cb\3\2\2\2\u00c9"+
|
||||
"\u00c7\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00cc\3\2\2\2\u00cb\u00c9\3\2"+
|
||||
"\2\2\u00cc\u00cd\b\"\2\2\u00cdD\3\2\2\2\u00ce\u00cf\t\7\2\2\u00cf\u00d0"+
|
||||
"\3\2\2\2\u00d0\u00d1\b#\2\2\u00d1F\3\2\2\2\u00d2\u00d3\13\2\2\2\u00d3"+
|
||||
"H\3\2\2\2\f\2\u009e\u00a4\u00a9\u00af\u00b6\u00b8\u00be\u00c0\u00c9\3"+
|
||||
"\b\2\2";
|
||||
public static final ATN _ATN =
|
||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||
static {
|
||||
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
|
||||
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
|
||||
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
OR=1
|
||||
AND=2
|
||||
EQ=3
|
||||
NEQ=4
|
||||
GT=5
|
||||
LT=6
|
||||
GTEQ=7
|
||||
LTEQ=8
|
||||
PLUS=9
|
||||
MINUS=10
|
||||
MULT=11
|
||||
DIV=12
|
||||
MOD=13
|
||||
POW=14
|
||||
NOT=15
|
||||
SCOL=16
|
||||
ASSIGN=17
|
||||
OPAR=18
|
||||
CPAR=19
|
||||
OBRACE=20
|
||||
CBRACE=21
|
||||
TRUE=22
|
||||
FALSE=23
|
||||
NIL=24
|
||||
IF=25
|
||||
ELSE=26
|
||||
WHILE=27
|
||||
LOG=28
|
||||
ID=29
|
||||
INT=30
|
||||
FLOAT=31
|
||||
STRING=32
|
||||
COMMENT=33
|
||||
SPACE=34
|
||||
OTHER=35
|
||||
'||'=1
|
||||
'&&'=2
|
||||
'=='=3
|
||||
'!='=4
|
||||
'>'=5
|
||||
'<'=6
|
||||
'>='=7
|
||||
'<='=8
|
||||
'+'=9
|
||||
'-'=10
|
||||
'*'=11
|
||||
'/'=12
|
||||
'%'=13
|
||||
'^'=14
|
||||
'!'=15
|
||||
';'=16
|
||||
'='=17
|
||||
'('=18
|
||||
')'=19
|
||||
'{'=20
|
||||
'}'=21
|
||||
'true'=22
|
||||
'false'=23
|
||||
'nil'=24
|
||||
'if'=25
|
||||
'else'=26
|
||||
'while'=27
|
||||
'log'=28
|
||||
1074
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/KlangParser.java
Normal file
1074
src/main/antlr4/de/hsrm/compiler/Klang/.antlr/KlangParser.java
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,183 @@
|
||||
// Generated from /home/marvin/Documents/university/compiler/antlr_test/klang/klang/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 by ANTLR 4.7.1
|
||||
import org.antlr.v4.runtime.Lexer;
|
||||
import org.antlr.v4.runtime.CharStream;
|
||||
import org.antlr.v4.runtime.Token;
|
||||
import org.antlr.v4.runtime.TokenStream;
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.atn.*;
|
||||
import org.antlr.v4.runtime.dfa.DFA;
|
||||
import org.antlr.v4.runtime.misc.*;
|
||||
|
||||
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
|
||||
public class calculatorLexer extends Lexer {
|
||||
static { RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION); }
|
||||
|
||||
protected static final DFA[] _decisionToDFA;
|
||||
protected static final PredictionContextCache _sharedContextCache =
|
||||
new PredictionContextCache();
|
||||
public static final int
|
||||
OR=1, AND=2, EQ=3, NEQ=4, GT=5, LT=6, GTEQ=7, LTEQ=8, PLUS=9, MINUS=10,
|
||||
MULT=11, DIV=12, MOD=13, POW=14, NOT=15, SCOL=16, ASSIGN=17, OPAR=18,
|
||||
CPAR=19, OBRACE=20, CBRACE=21, TRUE=22, FALSE=23, NIL=24, IF=25, ELSE=26,
|
||||
WHILE=27, LOG=28, ID=29, INT=30, FLOAT=31, STRING=32, COMMENT=33, SPACE=34,
|
||||
OTHER=35;
|
||||
public static String[] channelNames = {
|
||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||
};
|
||||
|
||||
public static String[] modeNames = {
|
||||
"DEFAULT_MODE"
|
||||
};
|
||||
|
||||
public static final String[] ruleNames = {
|
||||
"OR", "AND", "EQ", "NEQ", "GT", "LT", "GTEQ", "LTEQ", "PLUS", "MINUS",
|
||||
"MULT", "DIV", "MOD", "POW", "NOT", "SCOL", "ASSIGN", "OPAR", "CPAR",
|
||||
"OBRACE", "CBRACE", "TRUE", "FALSE", "NIL", "IF", "ELSE", "WHILE", "LOG",
|
||||
"ID", "INT", "FLOAT", "STRING", "COMMENT", "SPACE", "OTHER"
|
||||
};
|
||||
|
||||
private static final String[] _LITERAL_NAMES = {
|
||||
null, "'||'", "'&&'", "'=='", "'!='", "'>'", "'<'", "'>='", "'<='", "'+'",
|
||||
"'-'", "'*'", "'/'", "'%'", "'^'", "'!'", "';'", "'='", "'('", "')'",
|
||||
"'{'", "'}'", "'true'", "'false'", "'nil'", "'if'", "'else'", "'while'",
|
||||
"'log'"
|
||||
};
|
||||
private static final String[] _SYMBOLIC_NAMES = {
|
||||
null, "OR", "AND", "EQ", "NEQ", "GT", "LT", "GTEQ", "LTEQ", "PLUS", "MINUS",
|
||||
"MULT", "DIV", "MOD", "POW", "NOT", "SCOL", "ASSIGN", "OPAR", "CPAR",
|
||||
"OBRACE", "CBRACE", "TRUE", "FALSE", "NIL", "IF", "ELSE", "WHILE", "LOG",
|
||||
"ID", "INT", "FLOAT", "STRING", "COMMENT", "SPACE", "OTHER"
|
||||
};
|
||||
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #VOCABULARY} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String[] tokenNames;
|
||||
static {
|
||||
tokenNames = new String[_SYMBOLIC_NAMES.length];
|
||||
for (int i = 0; i < tokenNames.length; i++) {
|
||||
tokenNames[i] = VOCABULARY.getLiteralName(i);
|
||||
if (tokenNames[i] == null) {
|
||||
tokenNames[i] = VOCABULARY.getSymbolicName(i);
|
||||
}
|
||||
|
||||
if (tokenNames[i] == null) {
|
||||
tokenNames[i] = "<INVALID>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public String[] getTokenNames() {
|
||||
return tokenNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
public Vocabulary getVocabulary() {
|
||||
return VOCABULARY;
|
||||
}
|
||||
|
||||
|
||||
public calculatorLexer(CharStream input) {
|
||||
super(input);
|
||||
_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGrammarFileName() { return "Klang.g4"; }
|
||||
|
||||
@Override
|
||||
public String[] getRuleNames() { return ruleNames; }
|
||||
|
||||
@Override
|
||||
public String getSerializedATN() { return _serializedATN; }
|
||||
|
||||
@Override
|
||||
public String[] getChannelNames() { return channelNames; }
|
||||
|
||||
@Override
|
||||
public String[] getModeNames() { return modeNames; }
|
||||
|
||||
@Override
|
||||
public ATN getATN() { return _ATN; }
|
||||
|
||||
public static final String _serializedATN =
|
||||
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2%\u00d4\b\1\4\2\t"+
|
||||
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
|
||||
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
|
||||
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
|
||||
"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
|
||||
"\t!\4\"\t\"\4#\t#\4$\t$\3\2\3\2\3\2\3\3\3\3\3\3\3\4\3\4\3\4\3\5\3\5\3"+
|
||||
"\5\3\6\3\6\3\7\3\7\3\b\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3"+
|
||||
"\r\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22\3\23\3\23\3\24"+
|
||||
"\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30"+
|
||||
"\3\30\3\30\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33"+
|
||||
"\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\36\3\36\7\36\u009d"+
|
||||
"\n\36\f\36\16\36\u00a0\13\36\3\37\6\37\u00a3\n\37\r\37\16\37\u00a4\3 "+
|
||||
"\6 \u00a8\n \r \16 \u00a9\3 \3 \7 \u00ae\n \f \16 \u00b1\13 \3 \3 \6 "+
|
||||
"\u00b5\n \r \16 \u00b6\5 \u00b9\n \3!\3!\3!\3!\7!\u00bf\n!\f!\16!\u00c2"+
|
||||
"\13!\3!\3!\3\"\3\"\7\"\u00c8\n\"\f\"\16\"\u00cb\13\"\3\"\3\"\3#\3#\3#"+
|
||||
"\3#\3$\3$\2\2%\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16"+
|
||||
"\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34"+
|
||||
"\67\359\36;\37= ?!A\"C#E$G%\3\2\b\5\2C\\aac|\6\2\62;C\\aac|\3\2\62;\5"+
|
||||
"\2\f\f\17\17$$\4\2\f\f\17\17\5\2\13\f\17\17\"\"\2\u00dc\2\3\3\2\2\2\2"+
|
||||
"\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2"+
|
||||
"\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2"+
|
||||
"\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2"+
|
||||
"\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2"+
|
||||
"\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2"+
|
||||
"\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\3I\3\2\2\2\5"+
|
||||
"L\3\2\2\2\7O\3\2\2\2\tR\3\2\2\2\13U\3\2\2\2\rW\3\2\2\2\17Y\3\2\2\2\21"+
|
||||
"\\\3\2\2\2\23_\3\2\2\2\25a\3\2\2\2\27c\3\2\2\2\31e\3\2\2\2\33g\3\2\2\2"+
|
||||
"\35i\3\2\2\2\37k\3\2\2\2!m\3\2\2\2#o\3\2\2\2%q\3\2\2\2\'s\3\2\2\2)u\3"+
|
||||
"\2\2\2+w\3\2\2\2-y\3\2\2\2/~\3\2\2\2\61\u0084\3\2\2\2\63\u0088\3\2\2\2"+
|
||||
"\65\u008b\3\2\2\2\67\u0090\3\2\2\29\u0096\3\2\2\2;\u009a\3\2\2\2=\u00a2"+
|
||||
"\3\2\2\2?\u00b8\3\2\2\2A\u00ba\3\2\2\2C\u00c5\3\2\2\2E\u00ce\3\2\2\2G"+
|
||||
"\u00d2\3\2\2\2IJ\7~\2\2JK\7~\2\2K\4\3\2\2\2LM\7(\2\2MN\7(\2\2N\6\3\2\2"+
|
||||
"\2OP\7?\2\2PQ\7?\2\2Q\b\3\2\2\2RS\7#\2\2ST\7?\2\2T\n\3\2\2\2UV\7@\2\2"+
|
||||
"V\f\3\2\2\2WX\7>\2\2X\16\3\2\2\2YZ\7@\2\2Z[\7?\2\2[\20\3\2\2\2\\]\7>\2"+
|
||||
"\2]^\7?\2\2^\22\3\2\2\2_`\7-\2\2`\24\3\2\2\2ab\7/\2\2b\26\3\2\2\2cd\7"+
|
||||
",\2\2d\30\3\2\2\2ef\7\61\2\2f\32\3\2\2\2gh\7\'\2\2h\34\3\2\2\2ij\7`\2"+
|
||||
"\2j\36\3\2\2\2kl\7#\2\2l \3\2\2\2mn\7=\2\2n\"\3\2\2\2op\7?\2\2p$\3\2\2"+
|
||||
"\2qr\7*\2\2r&\3\2\2\2st\7+\2\2t(\3\2\2\2uv\7}\2\2v*\3\2\2\2wx\7\177\2"+
|
||||
"\2x,\3\2\2\2yz\7v\2\2z{\7t\2\2{|\7w\2\2|}\7g\2\2}.\3\2\2\2~\177\7h\2\2"+
|
||||
"\177\u0080\7c\2\2\u0080\u0081\7n\2\2\u0081\u0082\7u\2\2\u0082\u0083\7"+
|
||||
"g\2\2\u0083\60\3\2\2\2\u0084\u0085\7p\2\2\u0085\u0086\7k\2\2\u0086\u0087"+
|
||||
"\7n\2\2\u0087\62\3\2\2\2\u0088\u0089\7k\2\2\u0089\u008a\7h\2\2\u008a\64"+
|
||||
"\3\2\2\2\u008b\u008c\7g\2\2\u008c\u008d\7n\2\2\u008d\u008e\7u\2\2\u008e"+
|
||||
"\u008f\7g\2\2\u008f\66\3\2\2\2\u0090\u0091\7y\2\2\u0091\u0092\7j\2\2\u0092"+
|
||||
"\u0093\7k\2\2\u0093\u0094\7n\2\2\u0094\u0095\7g\2\2\u00958\3\2\2\2\u0096"+
|
||||
"\u0097\7n\2\2\u0097\u0098\7q\2\2\u0098\u0099\7i\2\2\u0099:\3\2\2\2\u009a"+
|
||||
"\u009e\t\2\2\2\u009b\u009d\t\3\2\2\u009c\u009b\3\2\2\2\u009d\u00a0\3\2"+
|
||||
"\2\2\u009e\u009c\3\2\2\2\u009e\u009f\3\2\2\2\u009f<\3\2\2\2\u00a0\u009e"+
|
||||
"\3\2\2\2\u00a1\u00a3\t\4\2\2\u00a2\u00a1\3\2\2\2\u00a3\u00a4\3\2\2\2\u00a4"+
|
||||
"\u00a2\3\2\2\2\u00a4\u00a5\3\2\2\2\u00a5>\3\2\2\2\u00a6\u00a8\t\4\2\2"+
|
||||
"\u00a7\u00a6\3\2\2\2\u00a8\u00a9\3\2\2\2\u00a9\u00a7\3\2\2\2\u00a9\u00aa"+
|
||||
"\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00af\7\60\2\2\u00ac\u00ae\t\4\2\2"+
|
||||
"\u00ad\u00ac\3\2\2\2\u00ae\u00b1\3\2\2\2\u00af\u00ad\3\2\2\2\u00af\u00b0"+
|
||||
"\3\2\2\2\u00b0\u00b9\3\2\2\2\u00b1\u00af\3\2\2\2\u00b2\u00b4\7\60\2\2"+
|
||||
"\u00b3\u00b5\t\4\2\2\u00b4\u00b3\3\2\2\2\u00b5\u00b6\3\2\2\2\u00b6\u00b4"+
|
||||
"\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\u00b9\3\2\2\2\u00b8\u00a7\3\2\2\2\u00b8"+
|
||||
"\u00b2\3\2\2\2\u00b9@\3\2\2\2\u00ba\u00c0\7$\2\2\u00bb\u00bf\n\5\2\2\u00bc"+
|
||||
"\u00bd\7$\2\2\u00bd\u00bf\7$\2\2\u00be\u00bb\3\2\2\2\u00be\u00bc\3\2\2"+
|
||||
"\2\u00bf\u00c2\3\2\2\2\u00c0\u00be\3\2\2\2\u00c0\u00c1\3\2\2\2\u00c1\u00c3"+
|
||||
"\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c3\u00c4\7$\2\2\u00c4B\3\2\2\2\u00c5\u00c9"+
|
||||
"\7%\2\2\u00c6\u00c8\n\6\2\2\u00c7\u00c6\3\2\2\2\u00c8\u00cb\3\2\2\2\u00c9"+
|
||||
"\u00c7\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00cc\3\2\2\2\u00cb\u00c9\3\2"+
|
||||
"\2\2\u00cc\u00cd\b\"\2\2\u00cdD\3\2\2\2\u00ce\u00cf\t\7\2\2\u00cf\u00d0"+
|
||||
"\3\2\2\2\u00d0\u00d1\b#\2\2\u00d1F\3\2\2\2\u00d2\u00d3\13\2\2\2\u00d3"+
|
||||
"H\3\2\2\2\f\2\u009e\u00a4\u00a9\u00af\u00b6\u00b8\u00be\u00c0\u00c9\3"+
|
||||
"\b\2\2";
|
||||
public static final ATN _ATN =
|
||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||
static {
|
||||
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
|
||||
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
|
||||
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
OR=1
|
||||
AND=2
|
||||
EQ=3
|
||||
NEQ=4
|
||||
GT=5
|
||||
LT=6
|
||||
GTEQ=7
|
||||
LTEQ=8
|
||||
PLUS=9
|
||||
MINUS=10
|
||||
MULT=11
|
||||
DIV=12
|
||||
MOD=13
|
||||
POW=14
|
||||
NOT=15
|
||||
SCOL=16
|
||||
ASSIGN=17
|
||||
OPAR=18
|
||||
CPAR=19
|
||||
OBRACE=20
|
||||
CBRACE=21
|
||||
TRUE=22
|
||||
FALSE=23
|
||||
NIL=24
|
||||
IF=25
|
||||
ELSE=26
|
||||
WHILE=27
|
||||
LOG=28
|
||||
ID=29
|
||||
INT=30
|
||||
FLOAT=31
|
||||
STRING=32
|
||||
COMMENT=33
|
||||
SPACE=34
|
||||
OTHER=35
|
||||
'||'=1
|
||||
'&&'=2
|
||||
'=='=3
|
||||
'!='=4
|
||||
'>'=5
|
||||
'<'=6
|
||||
'>='=7
|
||||
'<='=8
|
||||
'+'=9
|
||||
'-'=10
|
||||
'*'=11
|
||||
'/'=12
|
||||
'%'=13
|
||||
'^'=14
|
||||
'!'=15
|
||||
';'=16
|
||||
'='=17
|
||||
'('=18
|
||||
')'=19
|
||||
'{'=20
|
||||
'}'=21
|
||||
'true'=22
|
||||
'false'=23
|
||||
'nil'=24
|
||||
'if'=25
|
||||
'else'=26
|
||||
'while'=27
|
||||
'log'=28
|
||||
124
src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4
Normal file
124
src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4
Normal file
@@ -0,0 +1,124 @@
|
||||
grammar Klang;
|
||||
|
||||
parse
|
||||
: block EOF
|
||||
;
|
||||
|
||||
block
|
||||
: stat*
|
||||
;
|
||||
|
||||
stat
|
||||
: assignment
|
||||
| if_stat
|
||||
| while_stat
|
||||
| log
|
||||
| OTHER {System.err.println("unknown char: " + $OTHER.text);}
|
||||
;
|
||||
|
||||
assignment
|
||||
: ID ASSIGN expr SCOL
|
||||
;
|
||||
|
||||
if_stat
|
||||
: IF condition_block (ELSE IF condition_block)* (ELSE stat_block)?
|
||||
;
|
||||
|
||||
condition_block
|
||||
: expr stat_block
|
||||
;
|
||||
|
||||
stat_block
|
||||
: OBRACE block CBRACE
|
||||
| stat
|
||||
;
|
||||
|
||||
while_stat
|
||||
: WHILE expr stat_block
|
||||
;
|
||||
|
||||
log
|
||||
: LOG expr SCOL
|
||||
;
|
||||
|
||||
expr
|
||||
: expr POW<assoc=right> expr #powExpr
|
||||
| MINUS expr #unaryMinusExpr
|
||||
| NOT expr #notExpr
|
||||
| expr op=(MULT | DIV | MOD) expr #multiplicationExpr
|
||||
| expr op=(PLUS | MINUS) expr #additiveExpr
|
||||
| expr op=(LTEQ | GTEQ | LT | GT) expr #relationalExpr
|
||||
| expr op=(EQ | NEQ) expr #equalityExpr
|
||||
| expr AND expr #andExpr
|
||||
| expr OR expr #orExpr
|
||||
| atom #atomExpr
|
||||
;
|
||||
|
||||
atom
|
||||
: OPAR expr CPAR #parExpr
|
||||
| (INT | FLOAT) #numberAtom
|
||||
| (TRUE | FALSE) #booleanAtom
|
||||
| ID #idAtom
|
||||
| STRING #stringAtom
|
||||
| NIL #nilAtom
|
||||
;
|
||||
|
||||
OR : '||';
|
||||
AND : '&&';
|
||||
EQ : '==';
|
||||
NEQ : '!=';
|
||||
GT : '>';
|
||||
LT : '<';
|
||||
GTEQ : '>=';
|
||||
LTEQ : '<=';
|
||||
PLUS : '+';
|
||||
MINUS : '-';
|
||||
MULT : '*';
|
||||
DIV : '/';
|
||||
MOD : '%';
|
||||
POW : '^';
|
||||
NOT : '!';
|
||||
|
||||
SCOL : ';';
|
||||
ASSIGN : '=';
|
||||
OPAR : '(';
|
||||
CPAR : ')';
|
||||
OBRACE : '{';
|
||||
CBRACE : '}';
|
||||
|
||||
TRUE : 'true';
|
||||
FALSE : 'false';
|
||||
NIL : 'nil';
|
||||
IF : 'if';
|
||||
ELSE : 'else';
|
||||
WHILE : 'while';
|
||||
LOG : 'log';
|
||||
|
||||
ID
|
||||
: [a-zA-Z_] [a-zA-Z_0-9]*
|
||||
;
|
||||
|
||||
INT
|
||||
: [0-9]+
|
||||
;
|
||||
|
||||
FLOAT
|
||||
: [0-9]+ '.' [0-9]*
|
||||
| '.' [0-9]+
|
||||
;
|
||||
|
||||
STRING
|
||||
: '"' (~["\r\n] | '""')* '"'
|
||||
;
|
||||
|
||||
COMMENT
|
||||
: '#' ~[\r\n]* -> skip
|
||||
;
|
||||
|
||||
SPACE
|
||||
: [ \t\r\n] -> skip
|
||||
;
|
||||
|
||||
OTHER
|
||||
: .
|
||||
;
|
||||
24
src/main/java/de/hsrm/compiler/Klang/Klang.java
Normal file
24
src/main/java/de/hsrm/compiler/Klang/Klang.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package de.hsrm.compiler.Klang;
|
||||
|
||||
// import ANTLR's runtime libraries
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.tree.*;
|
||||
|
||||
public class Klang {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// create a CharStream that reads from standard input
|
||||
ANTLRInputStream input = new ANTLRInputStream(System.in);
|
||||
|
||||
// create a lexer that feeds off of input CharStream
|
||||
KlangLexer lexer = new KlangLexer(input);
|
||||
|
||||
// create a buffer of tokens pulled from the lexer
|
||||
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
||||
|
||||
// create a parser that feeds off the tokens buffer
|
||||
KlangParser parser = new KlangParser(tokens);
|
||||
|
||||
ParseTree tree = parser.parse(); // begin parsing at init rule
|
||||
System.out.println(tree.toStringTree(parser)); // print LISP-style tree
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user