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"> <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="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager"> <component name="MavenProjectsManager">
<option name="originalFiles"> <option name="originalFiles">

View File

@ -1,7 +1,12 @@
import abstractSyntaxTree.Class.FieldDecl;
import abstractSyntaxTree.Class.IClass; import abstractSyntaxTree.Class.IClass;
import abstractSyntaxTree.Class.MethodDecl;
import abstractSyntaxTree.Class.RefType; import abstractSyntaxTree.Class.RefType;
import abstractSyntaxTree.Node; import abstractSyntaxTree.Node;
import abstractSyntaxTree.Parameter.Parameter;
import abstractSyntaxTree.Parameter.ParameterList;
import abstractSyntaxTree.Program; import abstractSyntaxTree.Program;
import abstractSyntaxTree.Statement.BlockStatement;
import gen.DecafBaseVisitor; import gen.DecafBaseVisitor;
import gen.DecafParser; import gen.DecafParser;
@ -13,9 +18,49 @@ public class ASTGenerator extends DecafBaseVisitor<Node> {
public Node visitProgram(DecafParser.ProgramContext ctx) { public Node visitProgram(DecafParser.ProgramContext ctx) {
List<RefType> classes = new ArrayList<>(); List<RefType> classes = new ArrayList<>();
for (DecafParser.ClassdeclContext classDecl : ctx.classdecl()) { for (DecafParser.ClassdeclContext classDecl : ctx.classdecl()) {
Node refType = new RefType(classDecl.Identifier().getText(), new ArrayList<>(), new ArrayList<>()); // Node refType = new RefType(classDecl.Identifier().getText(), new ArrayList<>(), new ArrayList<>());
classes.add((RefType) refType); classes.add((RefType) visit(classDecl));
} }
return new Program(classes); 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.FieldDecl;
import abstractSyntaxTree.Class.MethodDecl; import abstractSyntaxTree.Class.MethodDecl;
import abstractSyntaxTree.Class.RefType; import abstractSyntaxTree.Class.RefType;
import abstractSyntaxTree.Parameter.ParameterList;
import abstractSyntaxTree.Program; import abstractSyntaxTree.Program;
import abstractSyntaxTree.Statement.BlockStatement; import abstractSyntaxTree.Statement.BlockStatement;
import gen.DecafLexer; import gen.DecafLexer;
@ -68,7 +69,7 @@ public class Compiler {
List<MethodDecl> methodDecls = new ArrayList<>(); 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); methodDecls.add(methodDecl);
// MethodDecl methodDecl2 = new MethodDecl("ClassA", "int", "m", new ArrayList<>(), new ArrayList<>()); // 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.AbstractType;
import TypeCheck.TypeCheckHelper; import TypeCheck.TypeCheckHelper;
import TypeCheck.TypeCheckResult; import TypeCheck.TypeCheckResult;
import abstractSyntaxTree.Node;
import abstractSyntaxTree.Program; import abstractSyntaxTree.Program;
import org.objectweb.asm.ClassWriter; import org.objectweb.asm.ClassWriter;
@ -10,9 +11,9 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; 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 String identifier; // from parser
public FieldDecl(String type, String identifier){ public FieldDecl(String type, String identifier){

View File

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

View File

@ -1,81 +1,81 @@
AccessModifierPublic=1 BooleanValue=1
MainMethodDecl=2 NullValue=2
DotOperator=3 AccessModifierPublic=3
LineOperator=4 MainMethodDecl=4
ComparisonOperator=5 Void=5
LogicalOpertor=6 Int=6
Assign=7 Boolean=7
Minus=8 Char=8
Plus=9 DotOperator=9
Multipilkation=10 LineOperator=10
Division=11 ComparisonOperator=11
Modulo=12 LogicalOpertor=12
Greater=13 Assign=13
Less=14 Minus=14
GreaterEqual=15 Plus=15
LessEqual=16 Multipilkation=16
Equal=17 Division=17
NotEqual=18 Modulo=18
Not=19 Greater=19
And=20 Less=20
Or=21 GreaterEqual=21
Dot=22 LessEqual=22
OpenRoundBracket=23 Equal=23
ClosedRoundBracket=24 NotEqual=24
OpenCurlyBracket=25 Not=25
ClosedCurlyBracket=26 And=26
Semicolon=27 Or=27
Comma=28 Dot=28
Class=29 OpenRoundBracket=29
This=30 ClosedRoundBracket=30
While=31 OpenCurlyBracket=31
If=32 ClosedCurlyBracket=32
Else=33 Semicolon=33
Return=34 Comma=34
New=35 Class=35
Identifier=36 This=36
Void=37 While=37
Int=38 If=38
Boolean=39 Else=39
Char=40 Return=40
IntValue=41 New=41
CharValue=42 IntValue=42
BooleanValue=43 CharValue=43
NullValue=44 Identifier=44
WS=45 WS=45
'public'=1 'null'=2
'public static void main(String[] args)'=2 'public'=3
'='=7 'public static void main(String[] args)'=4
'-'=8 'void'=5
'+'=9 'int'=6
'*'=10 'bool'=7
'/'=11 'char'=8
'%'=12 '='=13
'>'=13 '-'=14
'<'=14 '+'=15
'>='=15 '*'=16
'<='=16 '/'=17
'=='=17 '%'=18
'!='=18 '>'=19
'!'=19 '<'=20
'&&'=20 '>='=21
'||'=21 '<='=22
'.'=22 '=='=23
'('=23 '!='=24
')'=24 '!'=25
'{'=25 '&&'=26
'}'=26 '||'=27
';'=27 '.'=28
','=28 '('=29
'class'=29 ')'=30
'this'=30 '{'=31
'while'=31 '}'=32
'if'=32 ';'=33
'else'=33 ','=34
'return'=34 'class'=35
'new'=35 'this'=36
'void'=37 'while'=37
'int'=38 'if'=38
'bool'=39 'else'=39
'char'=40 'return'=40
'null'=44 '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; import org.antlr.v4.runtime.tree.ParseTreeListener;
/** /**
@ -46,16 +47,6 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree * @param ctx the parse tree
*/ */
void exitMethodDecl(DecafParser.MethodDeclContext ctx); 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}. * Enter a parse tree produced by {@link DecafParser#parameterList}.
* @param ctx the parse tree * @param ctx the parse tree
@ -76,6 +67,16 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree * @param ctx the parse tree
*/ */
void exitParameter(DecafParser.ParameterContext ctx); 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}. * Enter a parse tree produced by {@link DecafParser#expression}.
* @param ctx the parse tree * @param ctx the parse tree
@ -96,26 +97,6 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree * @param ctx the parse tree
*/ */
void exitSubExpression(DecafParser.SubExpressionContext ctx); 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}. * Enter a parse tree produced by {@link DecafParser#methodCall}.
* @param ctx the parse tree * @param ctx the parse tree
@ -127,15 +108,35 @@ public interface DecafListener extends ParseTreeListener {
*/ */
void exitMethodCall(DecafParser.MethodCallContext ctx); 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 * @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 * @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}. * Enter a parse tree produced by {@link DecafParser#subReceiver}.
* @param ctx the parse tree * @param ctx the parse tree
@ -147,25 +148,15 @@ public interface DecafListener extends ParseTreeListener {
*/ */
void exitSubReceiver(DecafParser.SubReceiverContext ctx); 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 * @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 * @param ctx the parse tree
*/ */
void exitReceiver(DecafParser.ReceiverContext ctx); void exitInstVar(DecafParser.InstVarContext 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#binaryExpr}. * Enter a parse tree produced by {@link DecafParser#binaryExpr}.
* @param ctx the parse tree * @param ctx the parse tree
@ -226,26 +217,6 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree * @param ctx the parse tree
*/ */
void exitNonCalcOperator(DecafParser.NonCalcOperatorContext ctx); 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}. * Enter a parse tree produced by {@link DecafParser#returnStmt}.
* @param ctx the parse tree * @param ctx the parse tree
@ -336,6 +307,26 @@ public interface DecafListener extends ParseTreeListener {
* @param ctx the parse tree * @param ctx the parse tree
*/ */
void exitNewDecl(DecafParser.NewDeclContext ctx); 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}. * Enter a parse tree produced by {@link DecafParser#type}.
* @param ctx the parse tree * @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; import org.antlr.v4.runtime.tree.ParseTreeVisitor;
/** /**
@ -33,12 +34,6 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result * @return the visitor result
*/ */
T visitMethodDecl(DecafParser.MethodDeclContext ctx); 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}. * Visit a parse tree produced by {@link DecafParser#parameterList}.
* @param ctx the parse tree * @param ctx the parse tree
@ -51,6 +46,12 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result * @return the visitor result
*/ */
T visitParameter(DecafParser.ParameterContext ctx); 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}. * Visit a parse tree produced by {@link DecafParser#expression}.
* @param ctx the parse tree * @param ctx the parse tree
@ -63,18 +64,6 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result * @return the visitor result
*/ */
T visitSubExpression(DecafParser.SubExpressionContext ctx); 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}. * Visit a parse tree produced by {@link DecafParser#methodCall}.
* @param ctx the parse tree * @param ctx the parse tree
@ -82,11 +71,23 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
*/ */
T visitMethodCall(DecafParser.MethodCallContext ctx); 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 * @param ctx the parse tree
* @return the visitor result * @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}. * Visit a parse tree produced by {@link DecafParser#subReceiver}.
* @param ctx the parse tree * @param ctx the parse tree
@ -94,17 +95,11 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
*/ */
T visitSubReceiver(DecafParser.SubReceiverContext ctx); 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 * @param ctx the parse tree
* @return the visitor result * @return the visitor result
*/ */
T visitReceiver(DecafParser.ReceiverContext ctx); T visitInstVar(DecafParser.InstVarContext 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#binaryExpr}. * Visit a parse tree produced by {@link DecafParser#binaryExpr}.
* @param ctx the parse tree * @param ctx the parse tree
@ -141,18 +136,6 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result * @return the visitor result
*/ */
T visitNonCalcOperator(DecafParser.NonCalcOperatorContext ctx); 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}. * Visit a parse tree produced by {@link DecafParser#returnStmt}.
* @param ctx the parse tree * @param ctx the parse tree
@ -207,6 +190,18 @@ public interface DecafVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result * @return the visitor result
*/ */
T visitNewDecl(DecafParser.NewDeclContext ctx); 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}. * Visit a parse tree produced by {@link DecafParser#type}.
* @param ctx the parse tree * @param ctx the parse tree