added ast methods, parameter classes

This commit is contained in:
StefanZ3 2024-05-11 20:45:51 +02:00
parent 91340125ef
commit cc05c58159
17 changed files with 2116 additions and 2105 deletions

17
.idea/misc.xml generated
View File

@ -1,4 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ANTLRGenerationPreferences">
<option name="perGrammarGenerationSettings">
<list>
<PerGrammarGenerationSettings>
<option name="fileName" value="$PROJECT_DIR$/src/main/java/Decaf.g4" />
<option name="autoGen" value="true" />
<option name="outputDir" value="C:\Users\User\DHBW\Compiler\src\main\java" />
<option name="libDir" value="" />
<option name="encoding" value="" />
<option name="pkg" value="gen" />
<option name="language" value="" />
<option name="generateVisitor" value="true" />
</PerGrammarGenerationSettings>
</list>
</option>
</component>
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">

View File

@ -1,7 +1,12 @@
import abstractSyntaxTree.Class.FieldDecl;
import abstractSyntaxTree.Class.IClass;
import abstractSyntaxTree.Class.MethodDecl;
import abstractSyntaxTree.Class.RefType;
import abstractSyntaxTree.Node;
import abstractSyntaxTree.Parameter.Parameter;
import abstractSyntaxTree.Parameter.ParameterList;
import abstractSyntaxTree.Program;
import abstractSyntaxTree.Statement.BlockStatement;
import gen.DecafBaseVisitor;
import gen.DecafParser;
@ -13,9 +18,49 @@ public class ASTGenerator extends DecafBaseVisitor<Node> {
public Node visitProgram(DecafParser.ProgramContext ctx) {
List<RefType> classes = new ArrayList<>();
for (DecafParser.ClassdeclContext classDecl : ctx.classdecl()) {
Node refType = new RefType(classDecl.Identifier().getText(), new ArrayList<>(), new ArrayList<>());
classes.add((RefType) refType);
// Node refType = new RefType(classDecl.Identifier().getText(), new ArrayList<>(), new ArrayList<>());
classes.add((RefType) visit(classDecl));
}
return new Program(classes);
}
@Override
public Node visitClassdecl(DecafParser.ClassdeclContext ctx) {
List<FieldDecl> fieldDecls = new ArrayList<>();
List<MethodDecl> methodDecls = new ArrayList<>();
for (DecafParser.LocalVarDeclContext fieldDecl: ctx.localVarDecl()) {
fieldDecls.add((FieldDecl) visit(fieldDecl));
}
for (DecafParser.MethodDeclContext methodDecl: ctx.methodDecl()) {
methodDecls.add((MethodDecl) visit(methodDecl));
}
return new RefType(ctx.Identifier().getText(),fieldDecls, methodDecls);
}
@Override
public Node visitLocalVarDecl(DecafParser.LocalVarDeclContext ctx) {
return new FieldDecl(ctx.type().getText(), ctx.Identifier().getText());
}
@Override
public Node visitMethodDecl(DecafParser.MethodDeclContext ctx) {
String type;
String name = ctx.Identifier().getText();
List<Parameter> parameterList = new ArrayList<>();
if (ctx.Void() != null) {
type = "void";
} else {
type = ctx.type().getText();
}
DecafParser.ParameterListContext parameterListContext = ctx.parameterList();
for (DecafParser.ParameterContext parameter: parameterListContext.parameter()) {
parameterList.add((Parameter) visit(parameter));
}
return new MethodDecl("", type , name, new ParameterList(parameterList), new BlockStatement(new ArrayList<>(), "void"));
}
@Override
public Node visitParameter(DecafParser.ParameterContext ctx) {
return new Parameter(ctx.type().getText(), ctx.Identifier().getText());
}
}

View File

@ -1,6 +1,7 @@
import abstractSyntaxTree.Class.FieldDecl;
import abstractSyntaxTree.Class.MethodDecl;
import abstractSyntaxTree.Class.RefType;
import abstractSyntaxTree.Parameter.ParameterList;
import abstractSyntaxTree.Program;
import abstractSyntaxTree.Statement.BlockStatement;
import gen.DecafLexer;
@ -68,7 +69,7 @@ public class Compiler {
List<MethodDecl> methodDecls = new ArrayList<>();
MethodDecl methodDecl = new MethodDecl("ClassA", "int", "m", new ArrayList<>(), new BlockStatement(new ArrayList<>(), "void"));
MethodDecl methodDecl = new MethodDecl("ClassA", "int", "m", new ParameterList(new ArrayList<>()), new BlockStatement(new ArrayList<>(), "void"));
methodDecls.add(methodDecl);
// MethodDecl methodDecl2 = new MethodDecl("ClassA", "int", "m", new ArrayList<>(), new ArrayList<>());

View File

@ -3,6 +3,7 @@ package abstractSyntaxTree.Class;
import TypeCheck.AbstractType;
import TypeCheck.TypeCheckHelper;
import TypeCheck.TypeCheckResult;
import abstractSyntaxTree.Node;
import abstractSyntaxTree.Program;
import org.objectweb.asm.ClassWriter;
@ -10,9 +11,9 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class FieldDecl extends AbstractType implements IClass{
public class FieldDecl extends AbstractType implements IClass, Node {
public String type; // from parser
public String type; // from parser
public String identifier; // from parser
public FieldDecl(String type, String identifier){

View File

@ -1,6 +1,8 @@
package abstractSyntaxTree.Class;
import TypeCheck.TypeCheckResult;
import abstractSyntaxTree.Node;
import abstractSyntaxTree.Parameter.ParameterList;
import abstractSyntaxTree.Program;
import abstractSyntaxTree.Statement.BlockStatement;
import abstractSyntaxTree.Statement.IStatement;
@ -10,17 +12,17 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MethodDecl implements IClass {
public class MethodDecl implements IClass, Node {
public String classThatContainsMethod;
public String name;
public List<String> parameters;
public ParameterList parameters;
public String returnType;
public BlockStatement codeBlock;
public Map<String, String> localVars;
public MethodDecl(String classThatContainsMethod, String returnType, String name, List<String> parameters, BlockStatement codeBlock){
public MethodDecl(String classThatContainsMethod, String returnType, String name, ParameterList parameters, BlockStatement codeBlock){
this.classThatContainsMethod = classThatContainsMethod;
this.returnType = returnType;
this.name = name;

View File

@ -0,0 +1,13 @@
package abstractSyntaxTree.Parameter;
import abstractSyntaxTree.Node;
public class Parameter implements Node {
public String type;
public String identifier;
public Parameter(String type, String identifier) {
this.type = type;
this.identifier = identifier;
}
}

View File

@ -0,0 +1,13 @@
package abstractSyntaxTree.Parameter;
import abstractSyntaxTree.Node;
import java.util.List;
public class ParameterList implements Node {
public List<Parameter> parameterList;
public ParameterList(List<Parameter> parameterList) {
this.parameterList = parameterList;
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,81 +1,81 @@
AccessModifierPublic=1
MainMethodDecl=2
DotOperator=3
LineOperator=4
ComparisonOperator=5
LogicalOpertor=6
Assign=7
Minus=8
Plus=9
Multipilkation=10
Division=11
Modulo=12
Greater=13
Less=14
GreaterEqual=15
LessEqual=16
Equal=17
NotEqual=18
Not=19
And=20
Or=21
Dot=22
OpenRoundBracket=23
ClosedRoundBracket=24
OpenCurlyBracket=25
ClosedCurlyBracket=26
Semicolon=27
Comma=28
Class=29
This=30
While=31
If=32
Else=33
Return=34
New=35
Identifier=36
Void=37
Int=38
Boolean=39
Char=40
IntValue=41
CharValue=42
BooleanValue=43
NullValue=44
BooleanValue=1
NullValue=2
AccessModifierPublic=3
MainMethodDecl=4
Void=5
Int=6
Boolean=7
Char=8
DotOperator=9
LineOperator=10
ComparisonOperator=11
LogicalOpertor=12
Assign=13
Minus=14
Plus=15
Multipilkation=16
Division=17
Modulo=18
Greater=19
Less=20
GreaterEqual=21
LessEqual=22
Equal=23
NotEqual=24
Not=25
And=26
Or=27
Dot=28
OpenRoundBracket=29
ClosedRoundBracket=30
OpenCurlyBracket=31
ClosedCurlyBracket=32
Semicolon=33
Comma=34
Class=35
This=36
While=37
If=38
Else=39
Return=40
New=41
IntValue=42
CharValue=43
Identifier=44
WS=45
'public'=1
'public static void main(String[] args)'=2
'='=7
'-'=8
'+'=9
'*'=10
'/'=11
'%'=12
'>'=13
'<'=14
'>='=15
'<='=16
'=='=17
'!='=18
'!'=19
'&&'=20
'||'=21
'.'=22
'('=23
')'=24
'{'=25
'}'=26
';'=27
','=28
'class'=29
'this'=30
'while'=31
'if'=32
'else'=33
'return'=34
'new'=35
'void'=37
'int'=38
'bool'=39
'char'=40
'null'=44
'null'=2
'public'=3
'public static void main(String[] args)'=4
'void'=5
'int'=6
'bool'=7
'char'=8
'='=13
'-'=14
'+'=15
'*'=16
'/'=17
'%'=18
'>'=19
'<'=20
'>='=21
'<='=22
'=='=23
'!='=24
'!'=25
'&&'=26
'||'=27
'.'=28
'('=29
')'=30
'{'=31
'}'=32
';'=33
','=34
'class'=35
'this'=36
'while'=37
'if'=38
'else'=39
'return'=40
'new'=41

View File

@ -1,4 +1,5 @@
package gen;// Generated from C:/Users/dh10krj/OneDrive - Durr Group/Dokumente/S4/Compilerbau/projekt/NichtHaskell/Source/Decaf.g4 by ANTLR 4.13.1
// Generated from C:/Users/User/DHBW/Compiler/src/main/java/Decaf.g4 by ANTLR 4.13.1
package gen;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.tree.ErrorNode;
@ -59,18 +60,6 @@ public class DecafBaseListener implements DecafListener {
* <p>The default implementation does nothing.</p>
*/
@Override public void exitMethodDecl(DecafParser.MethodDeclContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterFieldDecl(DecafParser.FieldDeclContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitFieldDecl(DecafParser.FieldDeclContext ctx) { }
/**
* {@inheritDoc}
*
@ -95,6 +84,18 @@ public class DecafBaseListener implements DecafListener {
* <p>The default implementation does nothing.</p>
*/
@Override public void exitParameter(DecafParser.ParameterContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterArgumentList(DecafParser.ArgumentListContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitArgumentList(DecafParser.ArgumentListContext ctx) { }
/**
* {@inheritDoc}
*
@ -119,30 +120,6 @@ public class DecafBaseListener implements DecafListener {
* <p>The default implementation does nothing.</p>
*/
@Override public void exitSubExpression(DecafParser.SubExpressionContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterAssignableExpr(DecafParser.AssignableExprContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitAssignableExpr(DecafParser.AssignableExprContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterInstVar(DecafParser.InstVarContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitInstVar(DecafParser.InstVarContext ctx) { }
/**
* {@inheritDoc}
*
@ -160,13 +137,37 @@ public class DecafBaseListener implements DecafListener {
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterArgumentList(DecafParser.ArgumentListContext ctx) { }
@Override public void enterStatement(DecafParser.StatementContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitArgumentList(DecafParser.ArgumentListContext ctx) { }
@Override public void exitStatement(DecafParser.StatementContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterStmtExpr(DecafParser.StmtExprContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitStmtExpr(DecafParser.StmtExprContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterAssignableExpr(DecafParser.AssignableExprContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitAssignableExpr(DecafParser.AssignableExprContext ctx) { }
/**
* {@inheritDoc}
*
@ -184,25 +185,13 @@ public class DecafBaseListener implements DecafListener {
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterReceiver(DecafParser.ReceiverContext ctx) { }
@Override public void enterInstVar(DecafParser.InstVarContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitReceiver(DecafParser.ReceiverContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterReceivingMethod(DecafParser.ReceivingMethodContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitReceivingMethod(DecafParser.ReceivingMethodContext ctx) { }
@Override public void exitInstVar(DecafParser.InstVarContext ctx) { }
/**
* {@inheritDoc}
*
@ -275,30 +264,6 @@ public class DecafBaseListener implements DecafListener {
* <p>The default implementation does nothing.</p>
*/
@Override public void exitNonCalcOperator(DecafParser.NonCalcOperatorContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterStmtExpr(DecafParser.StmtExprContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitStmtExpr(DecafParser.StmtExprContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterStatement(DecafParser.StatementContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitStatement(DecafParser.StatementContext ctx) { }
/**
* {@inheritDoc}
*
@ -407,6 +372,30 @@ public class DecafBaseListener implements DecafListener {
* <p>The default implementation does nothing.</p>
*/
@Override public void exitNewDecl(DecafParser.NewDeclContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterReceiver(DecafParser.ReceiverContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitReceiver(DecafParser.ReceiverContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterReceivingMethod(DecafParser.ReceivingMethodContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitReceivingMethod(DecafParser.ReceivingMethodContext ctx) { }
/**
* {@inheritDoc}
*

View File

@ -1,4 +1,5 @@
package gen;// Generated from C:/Users/dh10krj/OneDrive - Durr Group/Dokumente/S4/Compilerbau/projekt/NichtHaskell/Source/Decaf.g4 by ANTLR 4.13.1
// Generated from C:/Users/User/DHBW/Compiler/src/main/java/Decaf.g4 by ANTLR 4.13.1
package gen;
import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
/**
@ -39,13 +40,6 @@ public class DecafBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitMethodDecl(DecafParser.MethodDeclContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitFieldDecl(DecafParser.FieldDeclContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@ -60,6 +54,13 @@ public class DecafBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitParameter(DecafParser.ParameterContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitArgumentList(DecafParser.ArgumentListContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@ -74,20 +75,6 @@ public class DecafBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitSubExpression(DecafParser.SubExpressionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitAssignableExpr(DecafParser.AssignableExprContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitInstVar(DecafParser.InstVarContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@ -101,7 +88,21 @@ public class DecafBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitArgumentList(DecafParser.ArgumentListContext ctx) { return visitChildren(ctx); }
@Override public T visitStatement(DecafParser.StatementContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitStmtExpr(DecafParser.StmtExprContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitAssignableExpr(DecafParser.AssignableExprContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@ -115,14 +116,7 @@ public class DecafBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitReceiver(DecafParser.ReceiverContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitReceivingMethod(DecafParser.ReceivingMethodContext ctx) { return visitChildren(ctx); }
@Override public T visitInstVar(DecafParser.InstVarContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@ -165,20 +159,6 @@ public class DecafBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitNonCalcOperator(DecafParser.NonCalcOperatorContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitStmtExpr(DecafParser.StmtExprContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitStatement(DecafParser.StatementContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@ -242,6 +222,20 @@ public class DecafBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitNewDecl(DecafParser.NewDeclContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitReceiver(DecafParser.ReceiverContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitReceivingMethod(DecafParser.ReceivingMethodContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,5 @@
package gen;// Generated from C:/Users/dh10krj/OneDrive - Durr Group/Dokumente/S4/Compilerbau/projekt/NichtHaskell/Source/Decaf.g4 by ANTLR 4.13.1
// Generated from C:/Users/User/DHBW/Compiler/src/main/java/Decaf.g4 by ANTLR 4.13.1
package gen;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Token;
@ -16,14 +17,14 @@ public class DecafLexer extends Lexer {
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
AccessModifierPublic=1, MainMethodDecl=2, DotOperator=3, LineOperator=4,
ComparisonOperator=5, LogicalOpertor=6, Assign=7, Minus=8, Plus=9, Multipilkation=10,
Division=11, Modulo=12, Greater=13, Less=14, GreaterEqual=15, LessEqual=16,
Equal=17, NotEqual=18, Not=19, And=20, Or=21, Dot=22, OpenRoundBracket=23,
ClosedRoundBracket=24, OpenCurlyBracket=25, ClosedCurlyBracket=26, Semicolon=27,
Comma=28, Class=29, This=30, While=31, If=32, Else=33, Return=34, New=35,
Identifier=36, Void=37, Int=38, Boolean=39, Char=40, IntValue=41, CharValue=42,
BooleanValue=43, NullValue=44, WS=45;
BooleanValue=1, NullValue=2, AccessModifierPublic=3, MainMethodDecl=4,
Void=5, Int=6, Boolean=7, Char=8, DotOperator=9, LineOperator=10, ComparisonOperator=11,
LogicalOpertor=12, Assign=13, Minus=14, Plus=15, Multipilkation=16, Division=17,
Modulo=18, Greater=19, Less=20, GreaterEqual=21, LessEqual=22, Equal=23,
NotEqual=24, Not=25, And=26, Or=27, Dot=28, OpenRoundBracket=29, ClosedRoundBracket=30,
OpenCurlyBracket=31, ClosedCurlyBracket=32, Semicolon=33, Comma=34, Class=35,
This=36, While=37, If=38, Else=39, Return=40, New=41, IntValue=42, CharValue=43,
Identifier=44, WS=45;
public static String[] channelNames = {
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
};
@ -34,39 +35,39 @@ public class DecafLexer extends Lexer {
private static String[] makeRuleNames() {
return new String[] {
"AccessModifierPublic", "MainMethodDecl", "DotOperator", "LineOperator",
"ComparisonOperator", "LogicalOpertor", "Assign", "Minus", "Plus", "Multipilkation",
"Division", "Modulo", "Greater", "Less", "GreaterEqual", "LessEqual",
"Equal", "NotEqual", "Not", "And", "Or", "Dot", "OpenRoundBracket", "ClosedRoundBracket",
"BooleanValue", "NullValue", "AccessModifierPublic", "MainMethodDecl",
"Void", "Int", "Boolean", "Char", "DotOperator", "LineOperator", "ComparisonOperator",
"LogicalOpertor", "Assign", "Minus", "Plus", "Multipilkation", "Division",
"Modulo", "Greater", "Less", "GreaterEqual", "LessEqual", "Equal", "NotEqual",
"Not", "And", "Or", "Dot", "OpenRoundBracket", "ClosedRoundBracket",
"OpenCurlyBracket", "ClosedCurlyBracket", "Semicolon", "Comma", "Class",
"This", "While", "If", "Else", "Return", "New", "Alpabetic", "Numeric",
"ValidIdentSymbols", "Identifier", "Void", "Int", "Boolean", "Char",
"IntValue", "CharValue", "BooleanValue", "NullValue", "WS"
"This", "While", "If", "Else", "Return", "New", "IntValue", "CharValue",
"Alpabetic", "Numeric", "ValidIdentSymbols", "Identifier", "WS"
};
}
public static final String[] ruleNames = makeRuleNames();
private static String[] makeLiteralNames() {
return new String[] {
null, "'public'", "'public static void main(String[] args)'", null, null,
null, null, "'='", "'-'", "'+'", "'*'", "'/'", "'%'", "'>'", "'<'", "'>='",
"'<='", "'=='", "'!='", "'!'", "'&&'", "'||'", "'.'", "'('", "')'", "'{'",
"'}'", "';'", "','", "'class'", "'this'", "'while'", "'if'", "'else'",
"'return'", "'new'", null, "'void'", "'int'", "'bool'", "'char'", null,
null, null, "'null'"
null, null, "'null'", "'public'", "'public static void main(String[] args)'",
"'void'", "'int'", "'bool'", "'char'", null, null, null, null, "'='",
"'-'", "'+'", "'*'", "'/'", "'%'", "'>'", "'<'", "'>='", "'<='", "'=='",
"'!='", "'!'", "'&&'", "'||'", "'.'", "'('", "')'", "'{'", "'}'", "';'",
"','", "'class'", "'this'", "'while'", "'if'", "'else'", "'return'",
"'new'"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static String[] makeSymbolicNames() {
return new String[] {
null, "AccessModifierPublic", "MainMethodDecl", "DotOperator", "LineOperator",
"ComparisonOperator", "LogicalOpertor", "Assign", "Minus", "Plus", "Multipilkation",
"Division", "Modulo", "Greater", "Less", "GreaterEqual", "LessEqual",
"Equal", "NotEqual", "Not", "And", "Or", "Dot", "OpenRoundBracket", "ClosedRoundBracket",
null, "BooleanValue", "NullValue", "AccessModifierPublic", "MainMethodDecl",
"Void", "Int", "Boolean", "Char", "DotOperator", "LineOperator", "ComparisonOperator",
"LogicalOpertor", "Assign", "Minus", "Plus", "Multipilkation", "Division",
"Modulo", "Greater", "Less", "GreaterEqual", "LessEqual", "Equal", "NotEqual",
"Not", "And", "Or", "Dot", "OpenRoundBracket", "ClosedRoundBracket",
"OpenCurlyBracket", "ClosedCurlyBracket", "Semicolon", "Comma", "Class",
"This", "While", "If", "Else", "Return", "New", "Identifier", "Void",
"Int", "Boolean", "Char", "IntValue", "CharValue", "BooleanValue", "NullValue",
"WS"
"This", "While", "If", "Else", "Return", "New", "IntValue", "CharValue",
"Identifier", "WS"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@ -143,190 +144,190 @@ public class DecafLexer extends Lexer {
"&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+
"+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u0001\u0000"+
"\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0000\u0001\u0000\u0003\u0000k\b\u0000\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002"+
"\u0003\u0002\u0093\b\u0002\u0001\u0003\u0001\u0003\u0003\u0003\u0097\b"+
"\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+
"\u0004\u0003\u0004\u009f\b\u0004\u0001\u0005\u0001\u0005\u0003\u0005\u00a3"+
"\b\u0005\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001"+
"\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\f\u0001"+
"\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+
"\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001"+
"\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001"+
"\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001"+
"\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001"+
"\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001"+
"\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+
"\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001"+
"\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001"+
"\u001f\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001"+
"!\u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001#\u0001"+
"#\u0001$\u0001$\u0001%\u0001%\u0001%\u0003%\u0102\b%\u0001&\u0001&\u0005"+
"&\u0106\b&\n&\f&\u0109\t&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001"+
"(\u0001(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0001)\u0001*\u0001"+
"*\u0001*\u0001*\u0001*\u0001+\u0005+\u011f\b+\n+\f+\u0122\t+\u0001+\u0004"+
"+\u0125\b+\u000b+\f+\u0126\u0001,\u0001,\u0003,\u012b\b,\u0001,\u0001"+
",\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0003"+
"-\u0138\b-\u0001.\u0001.\u0001.\u0001.\u0001.\u0001/\u0001/\u0001/\u0001"+
"/\u0000\u00000\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005"+
"\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019"+
"\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015"+
"+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f"+
"? A!C\"E#G\u0000I\u0000K\u0000M$O%Q&S\'U(W)Y*[+],_-\u0001\u0000\u0006"+
"\u0002\u0000AZaz\u0001\u000009\u0002\u0000$$__\u0002\u0000++--\u0002\u0000"+
"\n\n\r\r\u0003\u0000\t\n\r\r \u014e\u0000\u0001\u0001\u0000\u0000\u0000"+
"\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000"+
"\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000"+
"\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f"+
"\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013"+
"\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017"+
"\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b"+
"\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f"+
"\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000"+
"\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000"+
"\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000"+
"-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001"+
"\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000"+
"\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000"+
";\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001"+
"\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C\u0001\u0000\u0000"+
"\u0000\u0000E\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000\u0000\u0000"+
"O\u0001\u0000\u0000\u0000\u0000Q\u0001\u0000\u0000\u0000\u0000S\u0001"+
"\u0000\u0000\u0000\u0000U\u0001\u0000\u0000\u0000\u0000W\u0001\u0000\u0000"+
"\u0000\u0000Y\u0001\u0000\u0000\u0000\u0000[\u0001\u0000\u0000\u0000\u0000"+
"]\u0001\u0000\u0000\u0000\u0000_\u0001\u0000\u0000\u0000\u0001a\u0001"+
"\u0000\u0000\u0000\u0003h\u0001\u0000\u0000\u0000\u0005\u0092\u0001\u0000"+
"\u0000\u0000\u0007\u0096\u0001\u0000\u0000\u0000\t\u009e\u0001\u0000\u0000"+
"\u0000\u000b\u00a2\u0001\u0000\u0000\u0000\r\u00a4\u0001\u0000\u0000\u0000"+
"\u000f\u00a6\u0001\u0000\u0000\u0000\u0011\u00a8\u0001\u0000\u0000\u0000"+
"\u0013\u00aa\u0001\u0000\u0000\u0000\u0015\u00ac\u0001\u0000\u0000\u0000"+
"\u0017\u00ae\u0001\u0000\u0000\u0000\u0019\u00b0\u0001\u0000\u0000\u0000"+
"\u001b\u00b2\u0001\u0000\u0000\u0000\u001d\u00b4\u0001\u0000\u0000\u0000"+
"\u001f\u00b7\u0001\u0000\u0000\u0000!\u00ba\u0001\u0000\u0000\u0000#\u00bd"+
"\u0001\u0000\u0000\u0000%\u00c0\u0001\u0000\u0000\u0000\'\u00c2\u0001"+
"\u0000\u0000\u0000)\u00c5\u0001\u0000\u0000\u0000+\u00c8\u0001\u0000\u0000"+
"\u0000-\u00ca\u0001\u0000\u0000\u0000/\u00cc\u0001\u0000\u0000\u00001"+
"\u00ce\u0001\u0000\u0000\u00003\u00d0\u0001\u0000\u0000\u00005\u00d2\u0001"+
"\u0000\u0000\u00007\u00d4\u0001\u0000\u0000\u00009\u00d6\u0001\u0000\u0000"+
"\u0000;\u00dc\u0001\u0000\u0000\u0000=\u00e1\u0001\u0000\u0000\u0000?"+
"\u00e7\u0001\u0000\u0000\u0000A\u00ea\u0001\u0000\u0000\u0000C\u00ef\u0001"+
"\u0000\u0000\u0000E\u00f6\u0001\u0000\u0000\u0000G\u00fa\u0001\u0000\u0000"+
"\u0000I\u00fc\u0001\u0000\u0000\u0000K\u0101\u0001\u0000\u0000\u0000M"+
"\u0103\u0001\u0000\u0000\u0000O\u010a\u0001\u0000\u0000\u0000Q\u010f\u0001"+
"\u0000\u0000\u0000S\u0113\u0001\u0000\u0000\u0000U\u0118\u0001\u0000\u0000"+
"\u0000W\u0120\u0001\u0000\u0000\u0000Y\u0128\u0001\u0000\u0000\u0000["+
"\u0137\u0001\u0000\u0000\u0000]\u0139\u0001\u0000\u0000\u0000_\u013e\u0001"+
"\u0000\u0000\u0000ab\u0005p\u0000\u0000bc\u0005u\u0000\u0000cd\u0005b"+
"\u0000\u0000de\u0005l\u0000\u0000ef\u0005i\u0000\u0000fg\u0005c\u0000"+
"\u0000g\u0002\u0001\u0000\u0000\u0000hi\u0005p\u0000\u0000ij\u0005u\u0000"+
"\u0000jk\u0005b\u0000\u0000kl\u0005l\u0000\u0000lm\u0005i\u0000\u0000"+
"mn\u0005c\u0000\u0000no\u0005 \u0000\u0000op\u0005s\u0000\u0000pq\u0005"+
"t\u0000\u0000qr\u0005a\u0000\u0000rs\u0005t\u0000\u0000st\u0005i\u0000"+
"\u0000tu\u0005c\u0000\u0000uv\u0005 \u0000\u0000vw\u0005v\u0000\u0000"+
"wx\u0005o\u0000\u0000xy\u0005i\u0000\u0000yz\u0005d\u0000\u0000z{\u0005"+
" \u0000\u0000{|\u0005m\u0000\u0000|}\u0005a\u0000\u0000}~\u0005i\u0000"+
"\u0000~\u007f\u0005n\u0000\u0000\u007f\u0080\u0005(\u0000\u0000\u0080"+
"\u0081\u0005S\u0000\u0000\u0081\u0082\u0005t\u0000\u0000\u0082\u0083\u0005"+
"r\u0000\u0000\u0083\u0084\u0005i\u0000\u0000\u0084\u0085\u0005n\u0000"+
"\u0000\u0085\u0086\u0005g\u0000\u0000\u0086\u0087\u0005[\u0000\u0000\u0087"+
"\u0088\u0005]\u0000\u0000\u0088\u0089\u0005 \u0000\u0000\u0089\u008a\u0005"+
"a\u0000\u0000\u008a\u008b\u0005r\u0000\u0000\u008b\u008c\u0005g\u0000"+
"\u0000\u008c\u008d\u0005s\u0000\u0000\u008d\u008e\u0005)\u0000\u0000\u008e"+
"\u0004\u0001\u0000\u0000\u0000\u008f\u0093\u0003\u0013\t\u0000\u0090\u0093"+
"\u0003\u0015\n\u0000\u0091\u0093\u0003\u0017\u000b\u0000\u0092\u008f\u0001"+
"\u0000\u0000\u0000\u0092\u0090\u0001\u0000\u0000\u0000\u0092\u0091\u0001"+
"\u0000\u0000\u0000\u0093\u0006\u0001\u0000\u0000\u0000\u0094\u0097\u0003"+
"\u0011\b\u0000\u0095\u0097\u0003\u000f\u0007\u0000\u0096\u0094\u0001\u0000"+
"\u0000\u0000\u0096\u0095\u0001\u0000\u0000\u0000\u0097\b\u0001\u0000\u0000"+
"\u0000\u0098\u009f\u0003\u0019\f\u0000\u0099\u009f\u0003\u001b\r\u0000"+
"\u009a\u009f\u0003\u001d\u000e\u0000\u009b\u009f\u0003\u001f\u000f\u0000"+
"\u009c\u009f\u0003!\u0010\u0000\u009d\u009f\u0003#\u0011\u0000\u009e\u0098"+
"\u0001\u0000\u0000\u0000\u009e\u0099\u0001\u0000\u0000\u0000\u009e\u009a"+
"\u0001\u0000\u0000\u0000\u009e\u009b\u0001\u0000\u0000\u0000\u009e\u009c"+
"\u0001\u0000\u0000\u0000\u009e\u009d\u0001\u0000\u0000\u0000\u009f\n\u0001"+
"\u0000\u0000\u0000\u00a0\u00a3\u0003\'\u0013\u0000\u00a1\u00a3\u0003)"+
"\u0014\u0000\u00a2\u00a0\u0001\u0000\u0000\u0000\u00a2\u00a1\u0001\u0000"+
"\u0000\u0000\u00a3\f\u0001\u0000\u0000\u0000\u00a4\u00a5\u0005=\u0000"+
"\u0000\u00a5\u000e\u0001\u0000\u0000\u0000\u00a6\u00a7\u0005-\u0000\u0000"+
"\u00a7\u0010\u0001\u0000\u0000\u0000\u00a8\u00a9\u0005+\u0000\u0000\u00a9"+
"\u0012\u0001\u0000\u0000\u0000\u00aa\u00ab\u0005*\u0000\u0000\u00ab\u0014"+
"\u0001\u0000\u0000\u0000\u00ac\u00ad\u0005/\u0000\u0000\u00ad\u0016\u0001"+
"\u0000\u0000\u0000\u00ae\u00af\u0005%\u0000\u0000\u00af\u0018\u0001\u0000"+
"\u0000\u0000\u00b0\u00b1\u0005>\u0000\u0000\u00b1\u001a\u0001\u0000\u0000"+
"\u0000\u00b2\u00b3\u0005<\u0000\u0000\u00b3\u001c\u0001\u0000\u0000\u0000"+
"\u00b4\u00b5\u0005>\u0000\u0000\u00b5\u00b6\u0005=\u0000\u0000\u00b6\u001e"+
"\u0001\u0000\u0000\u0000\u00b7\u00b8\u0005<\u0000\u0000\u00b8\u00b9\u0005"+
"=\u0000\u0000\u00b9 \u0001\u0000\u0000\u0000\u00ba\u00bb\u0005=\u0000"+
"\u0000\u00bb\u00bc\u0005=\u0000\u0000\u00bc\"\u0001\u0000\u0000\u0000"+
"\u00bd\u00be\u0005!\u0000\u0000\u00be\u00bf\u0005=\u0000\u0000\u00bf$"+
"\u0001\u0000\u0000\u0000\u00c0\u00c1\u0005!\u0000\u0000\u00c1&\u0001\u0000"+
"\u0000\u0000\u00c2\u00c3\u0005&\u0000\u0000\u00c3\u00c4\u0005&\u0000\u0000"+
"\u00c4(\u0001\u0000\u0000\u0000\u00c5\u00c6\u0005|\u0000\u0000\u00c6\u00c7"+
"\u0005|\u0000\u0000\u00c7*\u0001\u0000\u0000\u0000\u00c8\u00c9\u0005."+
"\u0000\u0000\u00c9,\u0001\u0000\u0000\u0000\u00ca\u00cb\u0005(\u0000\u0000"+
"\u00cb.\u0001\u0000\u0000\u0000\u00cc\u00cd\u0005)\u0000\u0000\u00cd0"+
"\u0001\u0000\u0000\u0000\u00ce\u00cf\u0005{\u0000\u0000\u00cf2\u0001\u0000"+
"\u0000\u0000\u00d0\u00d1\u0005}\u0000\u0000\u00d14\u0001\u0000\u0000\u0000"+
"\u00d2\u00d3\u0005;\u0000\u0000\u00d36\u0001\u0000\u0000\u0000\u00d4\u00d5"+
"\u0005,\u0000\u0000\u00d58\u0001\u0000\u0000\u0000\u00d6\u00d7\u0005c"+
"\u0000\u0000\u00d7\u00d8\u0005l\u0000\u0000\u00d8\u00d9\u0005a\u0000\u0000"+
"\u00d9\u00da\u0005s\u0000\u0000\u00da\u00db\u0005s\u0000\u0000\u00db:"+
"\u0001\u0000\u0000\u0000\u00dc\u00dd\u0005t\u0000\u0000\u00dd\u00de\u0005"+
"h\u0000\u0000\u00de\u00df\u0005i\u0000\u0000\u00df\u00e0\u0005s\u0000"+
"\u0000\u00e0<\u0001\u0000\u0000\u0000\u00e1\u00e2\u0005w\u0000\u0000\u00e2"+
"\u00e3\u0005h\u0000\u0000\u00e3\u00e4\u0005i\u0000\u0000\u00e4\u00e5\u0005"+
"l\u0000\u0000\u00e5\u00e6\u0005e\u0000\u0000\u00e6>\u0001\u0000\u0000"+
"\u0000\u00e7\u00e8\u0005i\u0000\u0000\u00e8\u00e9\u0005f\u0000\u0000\u00e9"+
"@\u0001\u0000\u0000\u0000\u00ea\u00eb\u0005e\u0000\u0000\u00eb\u00ec\u0005"+
"l\u0000\u0000\u00ec\u00ed\u0005s\u0000\u0000\u00ed\u00ee\u0005e\u0000"+
"\u0000\u00eeB\u0001\u0000\u0000\u0000\u00ef\u00f0\u0005r\u0000\u0000\u00f0"+
"\u00f1\u0005e\u0000\u0000\u00f1\u00f2\u0005t\u0000\u0000\u00f2\u00f3\u0005"+
"u\u0000\u0000\u00f3\u00f4\u0005r\u0000\u0000\u00f4\u00f5\u0005n\u0000"+
"\u0000\u00f5D\u0001\u0000\u0000\u0000\u00f6\u00f7\u0005n\u0000\u0000\u00f7"+
"\u00f8\u0005e\u0000\u0000\u00f8\u00f9\u0005w\u0000\u0000\u00f9F\u0001"+
"\u0000\u0000\u0000\u00fa\u00fb\u0007\u0000\u0000\u0000\u00fbH\u0001\u0000"+
"\u0000\u0000\u00fc\u00fd\u0007\u0001\u0000\u0000\u00fdJ\u0001\u0000\u0000"+
"\u0000\u00fe\u0102\u0003G#\u0000\u00ff\u0102\u0003I$\u0000\u0100\u0102"+
"\u0007\u0002\u0000\u0000\u0101\u00fe\u0001\u0000\u0000\u0000\u0101\u00ff"+
"\u0001\u0000\u0000\u0000\u0101\u0100\u0001\u0000\u0000\u0000\u0102L\u0001"+
"\u0000\u0000\u0000\u0103\u0107\u0003G#\u0000\u0104\u0106\u0003K%\u0000"+
"\u0105\u0104\u0001\u0000\u0000\u0000\u0106\u0109\u0001\u0000\u0000\u0000"+
"\u0107\u0105\u0001\u0000\u0000\u0000\u0107\u0108\u0001\u0000\u0000\u0000"+
"\u0108N\u0001\u0000\u0000\u0000\u0109\u0107\u0001\u0000\u0000\u0000\u010a"+
"\u010b\u0005v\u0000\u0000\u010b\u010c\u0005o\u0000\u0000\u010c\u010d\u0005"+
"i\u0000\u0000\u010d\u010e\u0005d\u0000\u0000\u010eP\u0001\u0000\u0000"+
"\u0000\u010f\u0110\u0005i\u0000\u0000\u0110\u0111\u0005n\u0000\u0000\u0111"+
"\u0112\u0005t\u0000\u0000\u0112R\u0001\u0000\u0000\u0000\u0113\u0114\u0005"+
"b\u0000\u0000\u0114\u0115\u0005o\u0000\u0000\u0115\u0116\u0005o\u0000"+
"\u0000\u0116\u0117\u0005l\u0000\u0000\u0117T\u0001\u0000\u0000\u0000\u0118"+
"\u0119\u0005c\u0000\u0000\u0119\u011a\u0005h\u0000\u0000\u011a\u011b\u0005"+
"a\u0000\u0000\u011b\u011c\u0005r\u0000\u0000\u011cV\u0001\u0000\u0000"+
"\u0000\u011d\u011f\u0007\u0003\u0000\u0000\u011e\u011d\u0001\u0000\u0000"+
"\u0000\u011f\u0122\u0001\u0000\u0000\u0000\u0120\u011e\u0001\u0000\u0000"+
"\u0000\u0120\u0121\u0001\u0000\u0000\u0000\u0121\u0124\u0001\u0000\u0000"+
"\u0000\u0122\u0120\u0001\u0000\u0000\u0000\u0123\u0125\u0007\u0001\u0000"+
"\u0000\u0124\u0123\u0001\u0000\u0000\u0000\u0125\u0126\u0001\u0000\u0000"+
"\u0000\u0126\u0124\u0001\u0000\u0000\u0000\u0126\u0127\u0001\u0000\u0000"+
"\u0000\u0127X\u0001\u0000\u0000\u0000\u0128\u012a\u0005\'\u0000\u0000"+
"\u0129\u012b\b\u0004\u0000\u0000\u012a\u0129\u0001\u0000\u0000\u0000\u012a"+
"\u012b\u0001\u0000\u0000\u0000\u012b\u012c\u0001\u0000\u0000\u0000\u012c"+
"\u012d\u0005\'\u0000\u0000\u012dZ\u0001\u0000\u0000\u0000\u012e\u012f"+
"\u0005t\u0000\u0000\u012f\u0130\u0005r\u0000\u0000\u0130\u0131\u0005u"+
"\u0000\u0000\u0131\u0138\u0005e\u0000\u0000\u0132\u0133\u0005f\u0000\u0000"+
"\u0133\u0134\u0005a\u0000\u0000\u0134\u0135\u0005l\u0000\u0000\u0135\u0136"+
"\u0005s\u0000\u0000\u0136\u0138\u0005e\u0000\u0000\u0137\u012e\u0001\u0000"+
"\u0000\u0000\u0137\u0132\u0001\u0000\u0000\u0000\u0138\\\u0001\u0000\u0000"+
"\u0000\u0139\u013a\u0005n\u0000\u0000\u013a\u013b\u0005u\u0000\u0000\u013b"+
"\u013c\u0005l\u0000\u0000\u013c\u013d\u0005l\u0000\u0000\u013d^\u0001"+
"\u0000\u0000\u0000\u013e\u013f\u0007\u0005\u0000\u0000\u013f\u0140\u0001"+
"\u0000\u0000\u0000\u0140\u0141\u0006/\u0000\u0000\u0141`\u0001\u0000\u0000"+
"\u0000\u000b\u0000\u0092\u0096\u009e\u00a2\u0101\u0107\u0120\u0126\u012a"+
"\u0137\u0001\u0006\u0000\u0000";
"\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006"+
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+
"\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0003\b\u00b6\b\b\u0001"+
"\t\u0001\t\u0003\t\u00ba\b\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+
"\n\u0003\n\u00c2\b\n\u0001\u000b\u0001\u000b\u0003\u000b\u00c6\b\u000b"+
"\u0001\f\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+
"\u000f\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001"+
"\u0012\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+
"\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
"\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001"+
"\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001"+
"\u001b\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e\u0001"+
"\u001e\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001!\u0001!\u0001\"\u0001"+
"\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001#\u0001#"+
"\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001"+
"&\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'"+
"\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001)\u0005)\u011f\b)\n"+
")\f)\u0122\t)\u0001)\u0004)\u0125\b)\u000b)\f)\u0126\u0001*\u0001*\u0003"+
"*\u012b\b*\u0001*\u0001*\u0001+\u0001+\u0001,\u0001,\u0001-\u0001-\u0001"+
"-\u0003-\u0136\b-\u0001.\u0001.\u0005.\u013a\b.\n.\f.\u013d\t.\u0001/"+
"\u0001/\u0001/\u0001/\u0000\u00000\u0001\u0001\u0003\u0002\u0005\u0003"+
"\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015"+
"\u000b\u0017\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012"+
"%\u0013\'\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c"+
"9\u001d;\u001e=\u001f? A!C\"E#G$I%K&M\'O(Q)S*U+W\u0000Y\u0000[\u0000]"+
",_-\u0001\u0000\u0006\u0002\u0000++--\u0001\u000009\u0002\u0000\n\n\r"+
"\r\u0002\u0000AZaz\u0002\u0000$$__\u0003\u0000\t\n\r\r \u014e\u0000\u0001"+
"\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005"+
"\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001"+
"\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000"+
"\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000"+
"\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000"+
"\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000"+
"\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000"+
"\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000"+
"\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000"+
"\'\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001"+
"\u0000\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000"+
"\u0000\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u0000"+
"5\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001"+
"\u0000\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000"+
"\u0000\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000"+
"C\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001"+
"\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000"+
"\u0000\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000"+
"Q\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001"+
"\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000_\u0001\u0000\u0000"+
"\u0000\u0001j\u0001\u0000\u0000\u0000\u0003l\u0001\u0000\u0000\u0000\u0005"+
"q\u0001\u0000\u0000\u0000\u0007x\u0001\u0000\u0000\u0000\t\u009f\u0001"+
"\u0000\u0000\u0000\u000b\u00a4\u0001\u0000\u0000\u0000\r\u00a8\u0001\u0000"+
"\u0000\u0000\u000f\u00ad\u0001\u0000\u0000\u0000\u0011\u00b5\u0001\u0000"+
"\u0000\u0000\u0013\u00b9\u0001\u0000\u0000\u0000\u0015\u00c1\u0001\u0000"+
"\u0000\u0000\u0017\u00c5\u0001\u0000\u0000\u0000\u0019\u00c7\u0001\u0000"+
"\u0000\u0000\u001b\u00c9\u0001\u0000\u0000\u0000\u001d\u00cb\u0001\u0000"+
"\u0000\u0000\u001f\u00cd\u0001\u0000\u0000\u0000!\u00cf\u0001\u0000\u0000"+
"\u0000#\u00d1\u0001\u0000\u0000\u0000%\u00d3\u0001\u0000\u0000\u0000\'"+
"\u00d5\u0001\u0000\u0000\u0000)\u00d7\u0001\u0000\u0000\u0000+\u00da\u0001"+
"\u0000\u0000\u0000-\u00dd\u0001\u0000\u0000\u0000/\u00e0\u0001\u0000\u0000"+
"\u00001\u00e3\u0001\u0000\u0000\u00003\u00e5\u0001\u0000\u0000\u00005"+
"\u00e8\u0001\u0000\u0000\u00007\u00eb\u0001\u0000\u0000\u00009\u00ed\u0001"+
"\u0000\u0000\u0000;\u00ef\u0001\u0000\u0000\u0000=\u00f1\u0001\u0000\u0000"+
"\u0000?\u00f3\u0001\u0000\u0000\u0000A\u00f5\u0001\u0000\u0000\u0000C"+
"\u00f7\u0001\u0000\u0000\u0000E\u00f9\u0001\u0000\u0000\u0000G\u00ff\u0001"+
"\u0000\u0000\u0000I\u0104\u0001\u0000\u0000\u0000K\u010a\u0001\u0000\u0000"+
"\u0000M\u010d\u0001\u0000\u0000\u0000O\u0112\u0001\u0000\u0000\u0000Q"+
"\u0119\u0001\u0000\u0000\u0000S\u0120\u0001\u0000\u0000\u0000U\u0128\u0001"+
"\u0000\u0000\u0000W\u012e\u0001\u0000\u0000\u0000Y\u0130\u0001\u0000\u0000"+
"\u0000[\u0135\u0001\u0000\u0000\u0000]\u0137\u0001\u0000\u0000\u0000_"+
"\u013e\u0001\u0000\u0000\u0000ab\u0005t\u0000\u0000bc\u0005r\u0000\u0000"+
"cd\u0005u\u0000\u0000dk\u0005e\u0000\u0000ef\u0005f\u0000\u0000fg\u0005"+
"a\u0000\u0000gh\u0005l\u0000\u0000hi\u0005s\u0000\u0000ik\u0005e\u0000"+
"\u0000ja\u0001\u0000\u0000\u0000je\u0001\u0000\u0000\u0000k\u0002\u0001"+
"\u0000\u0000\u0000lm\u0005n\u0000\u0000mn\u0005u\u0000\u0000no\u0005l"+
"\u0000\u0000op\u0005l\u0000\u0000p\u0004\u0001\u0000\u0000\u0000qr\u0005"+
"p\u0000\u0000rs\u0005u\u0000\u0000st\u0005b\u0000\u0000tu\u0005l\u0000"+
"\u0000uv\u0005i\u0000\u0000vw\u0005c\u0000\u0000w\u0006\u0001\u0000\u0000"+
"\u0000xy\u0005p\u0000\u0000yz\u0005u\u0000\u0000z{\u0005b\u0000\u0000"+
"{|\u0005l\u0000\u0000|}\u0005i\u0000\u0000}~\u0005c\u0000\u0000~\u007f"+
"\u0005 \u0000\u0000\u007f\u0080\u0005s\u0000\u0000\u0080\u0081\u0005t"+
"\u0000\u0000\u0081\u0082\u0005a\u0000\u0000\u0082\u0083\u0005t\u0000\u0000"+
"\u0083\u0084\u0005i\u0000\u0000\u0084\u0085\u0005c\u0000\u0000\u0085\u0086"+
"\u0005 \u0000\u0000\u0086\u0087\u0005v\u0000\u0000\u0087\u0088\u0005o"+
"\u0000\u0000\u0088\u0089\u0005i\u0000\u0000\u0089\u008a\u0005d\u0000\u0000"+
"\u008a\u008b\u0005 \u0000\u0000\u008b\u008c\u0005m\u0000\u0000\u008c\u008d"+
"\u0005a\u0000\u0000\u008d\u008e\u0005i\u0000\u0000\u008e\u008f\u0005n"+
"\u0000\u0000\u008f\u0090\u0005(\u0000\u0000\u0090\u0091\u0005S\u0000\u0000"+
"\u0091\u0092\u0005t\u0000\u0000\u0092\u0093\u0005r\u0000\u0000\u0093\u0094"+
"\u0005i\u0000\u0000\u0094\u0095\u0005n\u0000\u0000\u0095\u0096\u0005g"+
"\u0000\u0000\u0096\u0097\u0005[\u0000\u0000\u0097\u0098\u0005]\u0000\u0000"+
"\u0098\u0099\u0005 \u0000\u0000\u0099\u009a\u0005a\u0000\u0000\u009a\u009b"+
"\u0005r\u0000\u0000\u009b\u009c\u0005g\u0000\u0000\u009c\u009d\u0005s"+
"\u0000\u0000\u009d\u009e\u0005)\u0000\u0000\u009e\b\u0001\u0000\u0000"+
"\u0000\u009f\u00a0\u0005v\u0000\u0000\u00a0\u00a1\u0005o\u0000\u0000\u00a1"+
"\u00a2\u0005i\u0000\u0000\u00a2\u00a3\u0005d\u0000\u0000\u00a3\n\u0001"+
"\u0000\u0000\u0000\u00a4\u00a5\u0005i\u0000\u0000\u00a5\u00a6\u0005n\u0000"+
"\u0000\u00a6\u00a7\u0005t\u0000\u0000\u00a7\f\u0001\u0000\u0000\u0000"+
"\u00a8\u00a9\u0005b\u0000\u0000\u00a9\u00aa\u0005o\u0000\u0000\u00aa\u00ab"+
"\u0005o\u0000\u0000\u00ab\u00ac\u0005l\u0000\u0000\u00ac\u000e\u0001\u0000"+
"\u0000\u0000\u00ad\u00ae\u0005c\u0000\u0000\u00ae\u00af\u0005h\u0000\u0000"+
"\u00af\u00b0\u0005a\u0000\u0000\u00b0\u00b1\u0005r\u0000\u0000\u00b1\u0010"+
"\u0001\u0000\u0000\u0000\u00b2\u00b6\u0003\u001f\u000f\u0000\u00b3\u00b6"+
"\u0003!\u0010\u0000\u00b4\u00b6\u0003#\u0011\u0000\u00b5\u00b2\u0001\u0000"+
"\u0000\u0000\u00b5\u00b3\u0001\u0000\u0000\u0000\u00b5\u00b4\u0001\u0000"+
"\u0000\u0000\u00b6\u0012\u0001\u0000\u0000\u0000\u00b7\u00ba\u0003\u001d"+
"\u000e\u0000\u00b8\u00ba\u0003\u001b\r\u0000\u00b9\u00b7\u0001\u0000\u0000"+
"\u0000\u00b9\u00b8\u0001\u0000\u0000\u0000\u00ba\u0014\u0001\u0000\u0000"+
"\u0000\u00bb\u00c2\u0003%\u0012\u0000\u00bc\u00c2\u0003\'\u0013\u0000"+
"\u00bd\u00c2\u0003)\u0014\u0000\u00be\u00c2\u0003+\u0015\u0000\u00bf\u00c2"+
"\u0003-\u0016\u0000\u00c0\u00c2\u0003/\u0017\u0000\u00c1\u00bb\u0001\u0000"+
"\u0000\u0000\u00c1\u00bc\u0001\u0000\u0000\u0000\u00c1\u00bd\u0001\u0000"+
"\u0000\u0000\u00c1\u00be\u0001\u0000\u0000\u0000\u00c1\u00bf\u0001\u0000"+
"\u0000\u0000\u00c1\u00c0\u0001\u0000\u0000\u0000\u00c2\u0016\u0001\u0000"+
"\u0000\u0000\u00c3\u00c6\u00033\u0019\u0000\u00c4\u00c6\u00035\u001a\u0000"+
"\u00c5\u00c3\u0001\u0000\u0000\u0000\u00c5\u00c4\u0001\u0000\u0000\u0000"+
"\u00c6\u0018\u0001\u0000\u0000\u0000\u00c7\u00c8\u0005=\u0000\u0000\u00c8"+
"\u001a\u0001\u0000\u0000\u0000\u00c9\u00ca\u0005-\u0000\u0000\u00ca\u001c"+
"\u0001\u0000\u0000\u0000\u00cb\u00cc\u0005+\u0000\u0000\u00cc\u001e\u0001"+
"\u0000\u0000\u0000\u00cd\u00ce\u0005*\u0000\u0000\u00ce \u0001\u0000\u0000"+
"\u0000\u00cf\u00d0\u0005/\u0000\u0000\u00d0\"\u0001\u0000\u0000\u0000"+
"\u00d1\u00d2\u0005%\u0000\u0000\u00d2$\u0001\u0000\u0000\u0000\u00d3\u00d4"+
"\u0005>\u0000\u0000\u00d4&\u0001\u0000\u0000\u0000\u00d5\u00d6\u0005<"+
"\u0000\u0000\u00d6(\u0001\u0000\u0000\u0000\u00d7\u00d8\u0005>\u0000\u0000"+
"\u00d8\u00d9\u0005=\u0000\u0000\u00d9*\u0001\u0000\u0000\u0000\u00da\u00db"+
"\u0005<\u0000\u0000\u00db\u00dc\u0005=\u0000\u0000\u00dc,\u0001\u0000"+
"\u0000\u0000\u00dd\u00de\u0005=\u0000\u0000\u00de\u00df\u0005=\u0000\u0000"+
"\u00df.\u0001\u0000\u0000\u0000\u00e0\u00e1\u0005!\u0000\u0000\u00e1\u00e2"+
"\u0005=\u0000\u0000\u00e20\u0001\u0000\u0000\u0000\u00e3\u00e4\u0005!"+
"\u0000\u0000\u00e42\u0001\u0000\u0000\u0000\u00e5\u00e6\u0005&\u0000\u0000"+
"\u00e6\u00e7\u0005&\u0000\u0000\u00e74\u0001\u0000\u0000\u0000\u00e8\u00e9"+
"\u0005|\u0000\u0000\u00e9\u00ea\u0005|\u0000\u0000\u00ea6\u0001\u0000"+
"\u0000\u0000\u00eb\u00ec\u0005.\u0000\u0000\u00ec8\u0001\u0000\u0000\u0000"+
"\u00ed\u00ee\u0005(\u0000\u0000\u00ee:\u0001\u0000\u0000\u0000\u00ef\u00f0"+
"\u0005)\u0000\u0000\u00f0<\u0001\u0000\u0000\u0000\u00f1\u00f2\u0005{"+
"\u0000\u0000\u00f2>\u0001\u0000\u0000\u0000\u00f3\u00f4\u0005}\u0000\u0000"+
"\u00f4@\u0001\u0000\u0000\u0000\u00f5\u00f6\u0005;\u0000\u0000\u00f6B"+
"\u0001\u0000\u0000\u0000\u00f7\u00f8\u0005,\u0000\u0000\u00f8D\u0001\u0000"+
"\u0000\u0000\u00f9\u00fa\u0005c\u0000\u0000\u00fa\u00fb\u0005l\u0000\u0000"+
"\u00fb\u00fc\u0005a\u0000\u0000\u00fc\u00fd\u0005s\u0000\u0000\u00fd\u00fe"+
"\u0005s\u0000\u0000\u00feF\u0001\u0000\u0000\u0000\u00ff\u0100\u0005t"+
"\u0000\u0000\u0100\u0101\u0005h\u0000\u0000\u0101\u0102\u0005i\u0000\u0000"+
"\u0102\u0103\u0005s\u0000\u0000\u0103H\u0001\u0000\u0000\u0000\u0104\u0105"+
"\u0005w\u0000\u0000\u0105\u0106\u0005h\u0000\u0000\u0106\u0107\u0005i"+
"\u0000\u0000\u0107\u0108\u0005l\u0000\u0000\u0108\u0109\u0005e\u0000\u0000"+
"\u0109J\u0001\u0000\u0000\u0000\u010a\u010b\u0005i\u0000\u0000\u010b\u010c"+
"\u0005f\u0000\u0000\u010cL\u0001\u0000\u0000\u0000\u010d\u010e\u0005e"+
"\u0000\u0000\u010e\u010f\u0005l\u0000\u0000\u010f\u0110\u0005s\u0000\u0000"+
"\u0110\u0111\u0005e\u0000\u0000\u0111N\u0001\u0000\u0000\u0000\u0112\u0113"+
"\u0005r\u0000\u0000\u0113\u0114\u0005e\u0000\u0000\u0114\u0115\u0005t"+
"\u0000\u0000\u0115\u0116\u0005u\u0000\u0000\u0116\u0117\u0005r\u0000\u0000"+
"\u0117\u0118\u0005n\u0000\u0000\u0118P\u0001\u0000\u0000\u0000\u0119\u011a"+
"\u0005n\u0000\u0000\u011a\u011b\u0005e\u0000\u0000\u011b\u011c\u0005w"+
"\u0000\u0000\u011cR\u0001\u0000\u0000\u0000\u011d\u011f\u0007\u0000\u0000"+
"\u0000\u011e\u011d\u0001\u0000\u0000\u0000\u011f\u0122\u0001\u0000\u0000"+
"\u0000\u0120\u011e\u0001\u0000\u0000\u0000\u0120\u0121\u0001\u0000\u0000"+
"\u0000\u0121\u0124\u0001\u0000\u0000\u0000\u0122\u0120\u0001\u0000\u0000"+
"\u0000\u0123\u0125\u0007\u0001\u0000\u0000\u0124\u0123\u0001\u0000\u0000"+
"\u0000\u0125\u0126\u0001\u0000\u0000\u0000\u0126\u0124\u0001\u0000\u0000"+
"\u0000\u0126\u0127\u0001\u0000\u0000\u0000\u0127T\u0001\u0000\u0000\u0000"+
"\u0128\u012a\u0005\'\u0000\u0000\u0129\u012b\b\u0002\u0000\u0000\u012a"+
"\u0129\u0001\u0000\u0000\u0000\u012a\u012b\u0001\u0000\u0000\u0000\u012b"+
"\u012c\u0001\u0000\u0000\u0000\u012c\u012d\u0005\'\u0000\u0000\u012dV"+
"\u0001\u0000\u0000\u0000\u012e\u012f\u0007\u0003\u0000\u0000\u012fX\u0001"+
"\u0000\u0000\u0000\u0130\u0131\u0007\u0001\u0000\u0000\u0131Z\u0001\u0000"+
"\u0000\u0000\u0132\u0136\u0003W+\u0000\u0133\u0136\u0003Y,\u0000\u0134"+
"\u0136\u0007\u0004\u0000\u0000\u0135\u0132\u0001\u0000\u0000\u0000\u0135"+
"\u0133\u0001\u0000\u0000\u0000\u0135\u0134\u0001\u0000\u0000\u0000\u0136"+
"\\\u0001\u0000\u0000\u0000\u0137\u013b\u0003W+\u0000\u0138\u013a\u0003"+
"[-\u0000\u0139\u0138\u0001\u0000\u0000\u0000\u013a\u013d\u0001\u0000\u0000"+
"\u0000\u013b\u0139\u0001\u0000\u0000\u0000\u013b\u013c\u0001\u0000\u0000"+
"\u0000\u013c^\u0001\u0000\u0000\u0000\u013d\u013b\u0001\u0000\u0000\u0000"+
"\u013e\u013f\u0007\u0005\u0000\u0000\u013f\u0140\u0001\u0000\u0000\u0000"+
"\u0140\u0141\u0006/\u0000\u0000\u0141`\u0001\u0000\u0000\u0000\u000b\u0000"+
"j\u00b5\u00b9\u00c1\u00c5\u0120\u0126\u012a\u0135\u013b\u0001\u0006\u0000"+
"\u0000";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {

View File

@ -1,81 +1,81 @@
AccessModifierPublic=1
MainMethodDecl=2
DotOperator=3
LineOperator=4
ComparisonOperator=5
LogicalOpertor=6
Assign=7
Minus=8
Plus=9
Multipilkation=10
Division=11
Modulo=12
Greater=13
Less=14
GreaterEqual=15
LessEqual=16
Equal=17
NotEqual=18
Not=19
And=20
Or=21
Dot=22
OpenRoundBracket=23
ClosedRoundBracket=24
OpenCurlyBracket=25
ClosedCurlyBracket=26
Semicolon=27
Comma=28
Class=29
This=30
While=31
If=32
Else=33
Return=34
New=35
Identifier=36
Void=37
Int=38
Boolean=39
Char=40
IntValue=41
CharValue=42
BooleanValue=43
NullValue=44
BooleanValue=1
NullValue=2
AccessModifierPublic=3
MainMethodDecl=4
Void=5
Int=6
Boolean=7
Char=8
DotOperator=9
LineOperator=10
ComparisonOperator=11
LogicalOpertor=12
Assign=13
Minus=14
Plus=15
Multipilkation=16
Division=17
Modulo=18
Greater=19
Less=20
GreaterEqual=21
LessEqual=22
Equal=23
NotEqual=24
Not=25
And=26
Or=27
Dot=28
OpenRoundBracket=29
ClosedRoundBracket=30
OpenCurlyBracket=31
ClosedCurlyBracket=32
Semicolon=33
Comma=34
Class=35
This=36
While=37
If=38
Else=39
Return=40
New=41
IntValue=42
CharValue=43
Identifier=44
WS=45
'public'=1
'public static void main(String[] args)'=2
'='=7
'-'=8
'+'=9
'*'=10
'/'=11
'%'=12
'>'=13
'<'=14
'>='=15
'<='=16
'=='=17
'!='=18
'!'=19
'&&'=20
'||'=21
'.'=22
'('=23
')'=24
'{'=25
'}'=26
';'=27
','=28
'class'=29
'this'=30
'while'=31
'if'=32
'else'=33
'return'=34
'new'=35
'void'=37
'int'=38
'bool'=39
'char'=40
'null'=44
'null'=2
'public'=3
'public static void main(String[] args)'=4
'void'=5
'int'=6
'bool'=7
'char'=8
'='=13
'-'=14
'+'=15
'*'=16
'/'=17
'%'=18
'>'=19
'<'=20
'>='=21
'<='=22
'=='=23
'!='=24
'!'=25
'&&'=26
'||'=27
'.'=28
'('=29
')'=30
'{'=31
'}'=32
';'=33
','=34
'class'=35
'this'=36
'while'=37
'if'=38
'else'=39
'return'=40
'new'=41

View File

@ -1,4 +1,5 @@
package gen;// Generated from C:/Users/dh10krj/OneDrive - Durr Group/Dokumente/S4/Compilerbau/projekt/NichtHaskell/Source/Decaf.g4 by ANTLR 4.13.1
// Generated from C:/Users/User/DHBW/Compiler/src/main/java/Decaf.g4 by ANTLR 4.13.1
package gen;
import org.antlr.v4.runtime.tree.ParseTreeListener;
/**
@ -46,16 +47,6 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitMethodDecl(DecafParser.MethodDeclContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#fieldDecl}.
* @param ctx the parse tree
*/
void enterFieldDecl(DecafParser.FieldDeclContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#fieldDecl}.
* @param ctx the parse tree
*/
void exitFieldDecl(DecafParser.FieldDeclContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#parameterList}.
* @param ctx the parse tree
@ -76,6 +67,16 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitParameter(DecafParser.ParameterContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#argumentList}.
* @param ctx the parse tree
*/
void enterArgumentList(DecafParser.ArgumentListContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#argumentList}.
* @param ctx the parse tree
*/
void exitArgumentList(DecafParser.ArgumentListContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#expression}.
* @param ctx the parse tree
@ -96,26 +97,6 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitSubExpression(DecafParser.SubExpressionContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#assignableExpr}.
* @param ctx the parse tree
*/
void enterAssignableExpr(DecafParser.AssignableExprContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#assignableExpr}.
* @param ctx the parse tree
*/
void exitAssignableExpr(DecafParser.AssignableExprContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#instVar}.
* @param ctx the parse tree
*/
void enterInstVar(DecafParser.InstVarContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#instVar}.
* @param ctx the parse tree
*/
void exitInstVar(DecafParser.InstVarContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#methodCall}.
* @param ctx the parse tree
@ -127,15 +108,35 @@ public interface DecafListener extends ParseTreeListener {
*/
void exitMethodCall(DecafParser.MethodCallContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#argumentList}.
* Enter a parse tree produced by {@link DecafParser#statement}.
* @param ctx the parse tree
*/
void enterArgumentList(DecafParser.ArgumentListContext ctx);
void enterStatement(DecafParser.StatementContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#argumentList}.
* Exit a parse tree produced by {@link DecafParser#statement}.
* @param ctx the parse tree
*/
void exitArgumentList(DecafParser.ArgumentListContext ctx);
void exitStatement(DecafParser.StatementContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#stmtExpr}.
* @param ctx the parse tree
*/
void enterStmtExpr(DecafParser.StmtExprContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#stmtExpr}.
* @param ctx the parse tree
*/
void exitStmtExpr(DecafParser.StmtExprContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#assignableExpr}.
* @param ctx the parse tree
*/
void enterAssignableExpr(DecafParser.AssignableExprContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#assignableExpr}.
* @param ctx the parse tree
*/
void exitAssignableExpr(DecafParser.AssignableExprContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#subReceiver}.
* @param ctx the parse tree
@ -147,25 +148,15 @@ public interface DecafListener extends ParseTreeListener {
*/
void exitSubReceiver(DecafParser.SubReceiverContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#receiver}.
* Enter a parse tree produced by {@link DecafParser#instVar}.
* @param ctx the parse tree
*/
void enterReceiver(DecafParser.ReceiverContext ctx);
void enterInstVar(DecafParser.InstVarContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#receiver}.
* Exit a parse tree produced by {@link DecafParser#instVar}.
* @param ctx the parse tree
*/
void exitReceiver(DecafParser.ReceiverContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#receivingMethod}.
* @param ctx the parse tree
*/
void enterReceivingMethod(DecafParser.ReceivingMethodContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#receivingMethod}.
* @param ctx the parse tree
*/
void exitReceivingMethod(DecafParser.ReceivingMethodContext ctx);
void exitInstVar(DecafParser.InstVarContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#binaryExpr}.
* @param ctx the parse tree
@ -226,26 +217,6 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitNonCalcOperator(DecafParser.NonCalcOperatorContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#stmtExpr}.
* @param ctx the parse tree
*/
void enterStmtExpr(DecafParser.StmtExprContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#stmtExpr}.
* @param ctx the parse tree
*/
void exitStmtExpr(DecafParser.StmtExprContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#statement}.
* @param ctx the parse tree
*/
void enterStatement(DecafParser.StatementContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#statement}.
* @param ctx the parse tree
*/
void exitStatement(DecafParser.StatementContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#returnStmt}.
* @param ctx the parse tree
@ -336,6 +307,26 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitNewDecl(DecafParser.NewDeclContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#receiver}.
* @param ctx the parse tree
*/
void enterReceiver(DecafParser.ReceiverContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#receiver}.
* @param ctx the parse tree
*/
void exitReceiver(DecafParser.ReceiverContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#receivingMethod}.
* @param ctx the parse tree
*/
void enterReceivingMethod(DecafParser.ReceivingMethodContext ctx);
/**
* Exit a parse tree produced by {@link DecafParser#receivingMethod}.
* @param ctx the parse tree
*/
void exitReceivingMethod(DecafParser.ReceivingMethodContext ctx);
/**
* Enter a parse tree produced by {@link DecafParser#type}.
* @param ctx the parse tree

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
package gen;// Generated from C:/Users/dh10krj/OneDrive - Durr Group/Dokumente/S4/Compilerbau/projekt/NichtHaskell/Source/Decaf.g4 by ANTLR 4.13.1
// Generated from C:/Users/User/DHBW/Compiler/src/main/java/Decaf.g4 by ANTLR 4.13.1
package gen;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
/**
@ -33,12 +34,6 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result
*/
T visitMethodDecl(DecafParser.MethodDeclContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#fieldDecl}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitFieldDecl(DecafParser.FieldDeclContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#parameterList}.
* @param ctx the parse tree
@ -51,6 +46,12 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result
*/
T visitParameter(DecafParser.ParameterContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#argumentList}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitArgumentList(DecafParser.ArgumentListContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#expression}.
* @param ctx the parse tree
@ -63,18 +64,6 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result
*/
T visitSubExpression(DecafParser.SubExpressionContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#assignableExpr}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitAssignableExpr(DecafParser.AssignableExprContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#instVar}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitInstVar(DecafParser.InstVarContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#methodCall}.
* @param ctx the parse tree
@ -82,11 +71,23 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
*/
T visitMethodCall(DecafParser.MethodCallContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#argumentList}.
* Visit a parse tree produced by {@link DecafParser#statement}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitArgumentList(DecafParser.ArgumentListContext ctx);
T visitStatement(DecafParser.StatementContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#stmtExpr}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitStmtExpr(DecafParser.StmtExprContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#assignableExpr}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitAssignableExpr(DecafParser.AssignableExprContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#subReceiver}.
* @param ctx the parse tree
@ -94,17 +95,11 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
*/
T visitSubReceiver(DecafParser.SubReceiverContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#receiver}.
* Visit a parse tree produced by {@link DecafParser#instVar}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitReceiver(DecafParser.ReceiverContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#receivingMethod}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitReceivingMethod(DecafParser.ReceivingMethodContext ctx);
T visitInstVar(DecafParser.InstVarContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#binaryExpr}.
* @param ctx the parse tree
@ -141,18 +136,6 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result
*/
T visitNonCalcOperator(DecafParser.NonCalcOperatorContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#stmtExpr}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitStmtExpr(DecafParser.StmtExprContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#statement}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitStatement(DecafParser.StatementContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#returnStmt}.
* @param ctx the parse tree
@ -207,6 +190,18 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result
*/
T visitNewDecl(DecafParser.NewDeclContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#receiver}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitReceiver(DecafParser.ReceiverContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#receivingMethod}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitReceivingMethod(DecafParser.ReceivingMethodContext ctx);
/**
* Visit a parse tree produced by {@link DecafParser#type}.
* @param ctx the parse tree