Initial commit
This commit is contained in:
50
.classpath
Normal file
50
.classpath
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/classes" path="target/generated-sources/antlr4">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
</classpath>
|
||||||
23
.project
Normal file
23
.project
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>klang</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
4
.settings/org.eclipse.core.resources.prefs
Normal file
4
.settings/org.eclipse.core.resources.prefs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
encoding//src/main/java=UTF-8
|
||||||
|
encoding//target/generated-sources/antlr4=UTF-8
|
||||||
|
encoding/<project>=UTF-8
|
||||||
2
.settings/org.eclipse.jdt.apt.core.prefs
Normal file
2
.settings/org.eclipse.jdt.apt.core.prefs
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.apt.aptEnabled=false
|
||||||
9
.settings/org.eclipse.jdt.core.prefs
Normal file
9
.settings/org.eclipse.jdt.core.prefs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
|
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||||
|
org.eclipse.jdt.core.compiler.processAnnotations=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.release=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.7
|
||||||
4
.settings/org.eclipse.m2e.core.prefs
Normal file
4
.settings/org.eclipse.m2e.core.prefs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
activeProfiles=
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
resolveWorkspaceProjects=true
|
||||||
|
version=1
|
||||||
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"java.configuration.updateBuildConfiguration": "automatic"
|
||||||
|
}
|
||||||
74
pom.xml
Normal file
74
pom.xml
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>de.hsrm.compiler</groupId>
|
||||||
|
<artifactId>klang</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<name>klang</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.antlr</groupId>
|
||||||
|
<artifactId>antlr4-runtime</artifactId>
|
||||||
|
<version>4.5</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<!-- This plugin sets up maven to use Java 7 -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.1</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.7</source>
|
||||||
|
<target>1.7</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<!-- Plugin to compile the g4 files ahead of the java files
|
||||||
|
See https://github.com/antlr/antlr4/blob/master/antlr4-maven-plugin/src/site/apt/examples/simple.apt.vm
|
||||||
|
Except that the grammar does not need to contain the package declaration as stated in the documentation (I do not know why)
|
||||||
|
To use this plugin, type:
|
||||||
|
mvn antlr4:antlr4
|
||||||
|
In any case, Maven will invoke this plugin before the Java source is compiled
|
||||||
|
-->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.antlr</groupId>
|
||||||
|
<artifactId>antlr4-maven-plugin</artifactId>
|
||||||
|
<version>4.5</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>antlr4</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- plugin to create a self-contained portable package
|
||||||
|
This allows us to execute our application like this:
|
||||||
|
java -cp target/array-init-1.0-jar-with-dependencies.jar org.abcd.examples.ArrayInit.ArrayInit
|
||||||
|
-->
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<descriptorRefs>
|
||||||
|
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||||
|
</descriptorRefs>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>simple-command</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>attached</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
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
|
||||||
|
}
|
||||||
|
}
|
||||||
63
target/classes/Klang.tokens
Normal file
63
target/classes/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
|
||||||
63
target/classes/KlangLexer.tokens
Normal file
63
target/classes/KlangLexer.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
|
||||||
BIN
target/classes/de/hsrm/compiler/Klang/Klang.class
Normal file
BIN
target/classes/de/hsrm/compiler/Klang/Klang.class
Normal file
Binary file not shown.
BIN
target/classes/de/hsrm/compiler/Klang/KlangBaseListener.class
Normal file
BIN
target/classes/de/hsrm/compiler/Klang/KlangBaseListener.class
Normal file
Binary file not shown.
BIN
target/classes/de/hsrm/compiler/Klang/KlangLexer.class
Normal file
BIN
target/classes/de/hsrm/compiler/Klang/KlangLexer.class
Normal file
Binary file not shown.
BIN
target/classes/de/hsrm/compiler/Klang/KlangListener.class
Normal file
BIN
target/classes/de/hsrm/compiler/Klang/KlangListener.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
target/classes/de/hsrm/compiler/Klang/KlangParser.class
Normal file
BIN
target/classes/de/hsrm/compiler/Klang/KlangParser.class
Normal file
Binary file not shown.
63
target/generated-sources/antlr4/Klang.tokens
Normal file
63
target/generated-sources/antlr4/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
|
||||||
63
target/generated-sources/antlr4/KlangLexer.tokens
Normal file
63
target/generated-sources/antlr4/KlangLexer.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
|
||||||
@@ -0,0 +1,340 @@
|
|||||||
|
// Generated from de/hsrm/compiler/Klang/Klang.g4 by ANTLR 4.5
|
||||||
|
package de.hsrm.compiler.Klang;
|
||||||
|
|
||||||
|
import org.antlr.v4.runtime.ParserRuleContext;
|
||||||
|
import org.antlr.v4.runtime.misc.NotNull;
|
||||||
|
import org.antlr.v4.runtime.tree.ErrorNode;
|
||||||
|
import org.antlr.v4.runtime.tree.TerminalNode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class provides an empty implementation of {@link KlangListener},
|
||||||
|
* which can be extended to create a listener which only needs to handle a subset
|
||||||
|
* of the available methods.
|
||||||
|
*/
|
||||||
|
public class KlangBaseListener implements KlangListener {
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterParse(KlangParser.ParseContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitParse(KlangParser.ParseContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterBlock(KlangParser.BlockContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitBlock(KlangParser.BlockContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterStat(KlangParser.StatContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitStat(KlangParser.StatContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterAssignment(KlangParser.AssignmentContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitAssignment(KlangParser.AssignmentContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterIf_stat(KlangParser.If_statContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitIf_stat(KlangParser.If_statContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterCondition_block(KlangParser.Condition_blockContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitCondition_block(KlangParser.Condition_blockContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterStat_block(KlangParser.Stat_blockContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitStat_block(KlangParser.Stat_blockContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterWhile_stat(KlangParser.While_statContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitWhile_stat(KlangParser.While_statContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterLog(KlangParser.LogContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitLog(KlangParser.LogContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterNotExpr(KlangParser.NotExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitNotExpr(KlangParser.NotExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterUnaryMinusExpr(KlangParser.UnaryMinusExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitUnaryMinusExpr(KlangParser.UnaryMinusExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterMultiplicationExpr(KlangParser.MultiplicationExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitMultiplicationExpr(KlangParser.MultiplicationExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterAtomExpr(KlangParser.AtomExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitAtomExpr(KlangParser.AtomExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterOrExpr(KlangParser.OrExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitOrExpr(KlangParser.OrExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterAdditiveExpr(KlangParser.AdditiveExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitAdditiveExpr(KlangParser.AdditiveExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterPowExpr(KlangParser.PowExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitPowExpr(KlangParser.PowExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterRelationalExpr(KlangParser.RelationalExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitRelationalExpr(KlangParser.RelationalExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterEqualityExpr(KlangParser.EqualityExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitEqualityExpr(KlangParser.EqualityExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterAndExpr(KlangParser.AndExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitAndExpr(KlangParser.AndExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterParExpr(KlangParser.ParExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitParExpr(KlangParser.ParExprContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterNumberAtom(KlangParser.NumberAtomContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitNumberAtom(KlangParser.NumberAtomContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterBooleanAtom(KlangParser.BooleanAtomContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitBooleanAtom(KlangParser.BooleanAtomContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterIdAtom(KlangParser.IdAtomContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitIdAtom(KlangParser.IdAtomContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterStringAtom(KlangParser.StringAtomContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitStringAtom(KlangParser.StringAtomContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterNilAtom(KlangParser.NilAtomContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitNilAtom(KlangParser.NilAtomContext ctx) { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterEveryRule(ParserRuleContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitEveryRule(ParserRuleContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void visitTerminal(TerminalNode node) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void visitErrorNode(ErrorNode node) { }
|
||||||
|
}
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
// Generated from de/hsrm/compiler/Klang/Klang.g4 by ANTLR 4.5
|
||||||
|
package de.hsrm.compiler.Klang;
|
||||||
|
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.5", 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[] 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[] getModeNames() { return modeNames; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ATN getATN() { return _ATN; }
|
||||||
|
|
||||||
|
public static final String _serializedATN =
|
||||||
|
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\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\"\"\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\5L"+
|
||||||
|
"\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\35"+
|
||||||
|
"i\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\2V\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\7g\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\7"+
|
||||||
|
"k\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,293 @@
|
|||||||
|
// Generated from de/hsrm/compiler/Klang/Klang.g4 by ANTLR 4.5
|
||||||
|
package de.hsrm.compiler.Klang;
|
||||||
|
import org.antlr.v4.runtime.misc.NotNull;
|
||||||
|
import org.antlr.v4.runtime.tree.ParseTreeListener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines a complete listener for a parse tree produced by
|
||||||
|
* {@link KlangParser}.
|
||||||
|
*/
|
||||||
|
public interface KlangListener extends ParseTreeListener {
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link KlangParser#parse}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterParse(KlangParser.ParseContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link KlangParser#parse}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitParse(KlangParser.ParseContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link KlangParser#block}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterBlock(KlangParser.BlockContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link KlangParser#block}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitBlock(KlangParser.BlockContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link KlangParser#stat}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterStat(KlangParser.StatContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link KlangParser#stat}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitStat(KlangParser.StatContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link KlangParser#assignment}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterAssignment(KlangParser.AssignmentContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link KlangParser#assignment}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitAssignment(KlangParser.AssignmentContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link KlangParser#if_stat}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterIf_stat(KlangParser.If_statContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link KlangParser#if_stat}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitIf_stat(KlangParser.If_statContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link KlangParser#condition_block}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterCondition_block(KlangParser.Condition_blockContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link KlangParser#condition_block}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitCondition_block(KlangParser.Condition_blockContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link KlangParser#stat_block}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterStat_block(KlangParser.Stat_blockContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link KlangParser#stat_block}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitStat_block(KlangParser.Stat_blockContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link KlangParser#while_stat}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterWhile_stat(KlangParser.While_statContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link KlangParser#while_stat}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitWhile_stat(KlangParser.While_statContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link KlangParser#log}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterLog(KlangParser.LogContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link KlangParser#log}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitLog(KlangParser.LogContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code notExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterNotExpr(KlangParser.NotExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code notExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitNotExpr(KlangParser.NotExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code unaryMinusExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterUnaryMinusExpr(KlangParser.UnaryMinusExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code unaryMinusExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitUnaryMinusExpr(KlangParser.UnaryMinusExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code multiplicationExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterMultiplicationExpr(KlangParser.MultiplicationExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code multiplicationExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitMultiplicationExpr(KlangParser.MultiplicationExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code atomExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterAtomExpr(KlangParser.AtomExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code atomExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitAtomExpr(KlangParser.AtomExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code orExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterOrExpr(KlangParser.OrExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code orExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitOrExpr(KlangParser.OrExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code additiveExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterAdditiveExpr(KlangParser.AdditiveExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code additiveExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitAdditiveExpr(KlangParser.AdditiveExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code powExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterPowExpr(KlangParser.PowExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code powExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitPowExpr(KlangParser.PowExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code relationalExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterRelationalExpr(KlangParser.RelationalExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code relationalExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitRelationalExpr(KlangParser.RelationalExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code equalityExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterEqualityExpr(KlangParser.EqualityExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code equalityExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitEqualityExpr(KlangParser.EqualityExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code andExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterAndExpr(KlangParser.AndExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code andExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#expr}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitAndExpr(KlangParser.AndExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code parExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterParExpr(KlangParser.ParExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code parExpr}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitParExpr(KlangParser.ParExprContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code numberAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterNumberAtom(KlangParser.NumberAtomContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code numberAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitNumberAtom(KlangParser.NumberAtomContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code booleanAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterBooleanAtom(KlangParser.BooleanAtomContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code booleanAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitBooleanAtom(KlangParser.BooleanAtomContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code idAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterIdAtom(KlangParser.IdAtomContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code idAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitIdAtom(KlangParser.IdAtomContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code stringAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterStringAtom(KlangParser.StringAtomContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code stringAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitStringAtom(KlangParser.StringAtomContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the {@code nilAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterNilAtom(KlangParser.NilAtomContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the {@code nilAtom}
|
||||||
|
* labeled alternative in {@link KlangParser#atom}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitNilAtom(KlangParser.NilAtomContext ctx);
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
BIN
target/klang-1.0-jar-with-dependencies.jar
Normal file
BIN
target/klang-1.0-jar-with-dependencies.jar
Normal file
Binary file not shown.
BIN
target/klang-1.0.jar
Normal file
BIN
target/klang-1.0.jar
Normal file
Binary file not shown.
5
target/maven-archiver/pom.properties
Normal file
5
target/maven-archiver/pom.properties
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#Generated by Maven
|
||||||
|
#Mon Oct 28 15:44:47 CET 2019
|
||||||
|
groupId=de.hsrm.compiler
|
||||||
|
artifactId=klang
|
||||||
|
version=1.0
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
/home/marvin/Documents/university/compiler/antlr_test/klang/klang/src/main/java/de/hsrm/compiler/Klang/Klang.java
|
||||||
|
/home/marvin/Documents/university/compiler/antlr_test/klang/klang/target/generated-sources/antlr4/de/hsrm/compiler/Klang/KlangParser.java
|
||||||
|
/home/marvin/Documents/university/compiler/antlr_test/klang/klang/target/generated-sources/antlr4/de/hsrm/compiler/Klang/KlangBaseListener.java
|
||||||
|
/home/marvin/Documents/university/compiler/antlr_test/klang/klang/target/generated-sources/antlr4/de/hsrm/compiler/Klang/KlangLexer.java
|
||||||
|
/home/marvin/Documents/university/compiler/antlr_test/klang/klang/target/generated-sources/antlr4/de/hsrm/compiler/Klang/KlangListener.java
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/marvin/Documents/university/compiler/antlr_test/klang/klang/src/test/java/de/hsrm/compiler/Klang/KlangTest.java
|
||||||
Reference in New Issue
Block a user