code-generator #13
19
.idea/ANTLRv4ToolGrammarProperties.xml
generated
Normal file
19
.idea/ANTLRv4ToolGrammarProperties.xml
generated
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ANTLRv4ToolGrammarProperties">
|
||||||
|
<option name="perGrammarGenerationSettings">
|
||||||
|
<list>
|
||||||
|
<PerGrammarGenerationSettings>
|
||||||
|
<option name="fileName" value="$PROJECT_DIR$/src/main/java/parser/grammar/SimpleJava.g4" />
|
||||||
|
<option name="autoGen" value="true" />
|
||||||
|
<option name="outputDir" value="C:\Users\janni\Desktop\NichtHaskell2.0\src\main\java" />
|
||||||
|
<option name="libDir" value="" />
|
||||||
|
<option name="encoding" value="" />
|
||||||
|
<option name="pkg" value="parser.generated" />
|
||||||
|
<option name="language" value="" />
|
||||||
|
<option name="generateVisitor" value="true" />
|
||||||
|
</PerGrammarGenerationSettings>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -1,5 +1,20 @@
|
|||||||
package ast;
|
package ast;
|
||||||
|
|
||||||
public interface ASTNode { }
|
import bytecode.visitor.ClassVisitor;
|
||||||
|
import semantic.SemanticVisitor;
|
||||||
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
|
public interface ASTNode {
|
||||||
|
|
||||||
|
//Todo: @BruderJohn & @i22007 Interface anwenden + geeignetetn Methodename.
|
||||||
|
|
||||||
|
/*
|
||||||
|
Typecheck:
|
||||||
|
public TypeCheckResult acceptType(SemanticVisitor visitor);
|
||||||
i22005 marked this conversation as resolved
|
|||||||
|
|
||||||
|
Bytecode:
|
||||||
|
public void accepByteCode(ClassVisitor classVisitor);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package ast;
|
package ast;
|
||||||
|
|
||||||
import ast.type.AccessModifierNode;
|
import ast.type.AccessModifierNode;
|
||||||
import ast.member.ConstructorNode;
|
import ast.members.ConstructorNode;
|
||||||
import ast.member.MemberNode;
|
import ast.members.MemberNode;
|
||||||
import ast.member.MethodNode;
|
import ast.members.MethodNode;
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
import visitor.Visitable;
|
import visitor.Visitable;
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
package ast.expression.binaryexpression;
|
|
||||||
|
|
||||||
import ast.expression.unaryexpression.MemberAccessNode;
|
|
||||||
import ast.statement.statementexpression.methodcallstatementnexpression.MethodCallStatementExpressionNode;
|
|
||||||
import ast.type.type.*;
|
|
||||||
import ast.type.ValueNode;
|
|
||||||
import bytecode.visitor.MethodVisitor;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
|
|
||||||
public class DotSubstractionExpressionNode extends BinaryExpressionNode {
|
|
||||||
public ValueNode value;
|
|
||||||
public String identifier;
|
|
||||||
public MemberAccessNode memberAccess;
|
|
||||||
public MethodCallStatementExpressionNode methodCall;
|
|
||||||
public CalculationExpressionNode calculationExpression;
|
|
||||||
|
|
||||||
public DotSubstractionExpressionNode(ValueNode value) {
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DotSubstractionExpressionNode(String identifier) {
|
|
||||||
this.identifier = identifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DotSubstractionExpressionNode(MemberAccessNode memberAccess) {
|
|
||||||
this.memberAccess = memberAccess;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DotSubstractionExpressionNode(MethodCallStatementExpressionNode methodCall, CalculationExpressionNode calculationExpression) {
|
|
||||||
this.methodCall = methodCall;
|
|
||||||
this.calculationExpression = calculationExpression;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return visitor.analyze(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ITypeNode getType() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void accept(MethodVisitor methodVisitor) {
|
|
||||||
methodVisitor.visit(this);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
package ast.expression.unaryexpression;
|
|
||||||
|
|
||||||
import ast.ASTNode;
|
|
||||||
import ast.expression.IExpressionNode;
|
|
||||||
import bytecode.visitor.MethodVisitor;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
import visitor.Visitable;
|
|
||||||
|
|
||||||
public class NotExpressionNode implements ASTNode, Visitable {
|
|
||||||
public IExpressionNode expression;
|
|
||||||
|
|
||||||
public NotExpressionNode(IExpressionNode expression) {
|
|
||||||
this.expression = expression;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void accept(MethodVisitor methodVisitor) {
|
|
||||||
methodVisitor.visit(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
package ast.expression;
|
package ast.expressions;
|
||||||
|
|
||||||
import ast.ASTNode;
|
import ast.ASTNode;
|
||||||
import ast.type.type.ITypeNode;
|
import ast.type.type.ITypeNode;
|
@ -1,13 +1,13 @@
|
|||||||
package ast.expression.binaryexpression;
|
package ast.expressions.binaryexpressions;
|
||||||
|
|
||||||
import ast.expression.IExpressionNode;
|
import ast.expressions.IExpressionNode;
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
import bytecode.visitor.MethodVisitor;
|
import bytecode.visitor.MethodVisitor;
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
import visitor.Visitable;
|
import visitor.Visitable;
|
||||||
|
|
||||||
public class BinaryExpressionNode implements IExpressionNode, Visitable {
|
public class BinaryNode implements IExpressionNode, Visitable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
public TypeCheckResult accept(SemanticVisitor visitor) {
|
@ -1,22 +1,22 @@
|
|||||||
package ast.expression.binaryexpression;
|
package ast.expressions.binaryexpressions;
|
||||||
|
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
import bytecode.visitor.MethodVisitor;
|
import bytecode.visitor.MethodVisitor;
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
public class CalculationExpressionNode extends BinaryExpressionNode {
|
public class CalculationNode extends BinaryNode {
|
||||||
public CalculationExpressionNode calculationExpression;
|
public CalculationNode calculationExpression;
|
||||||
public EnumLineOperator operator;
|
public EnumLineOperator operator;
|
||||||
public DotExpressionNode dotExpression;
|
public DotNode dotExpression;
|
||||||
|
|
||||||
public CalculationExpressionNode(CalculationExpressionNode calculationExpression, String operator, DotExpressionNode dotExpression) {
|
public CalculationNode(CalculationNode calculationExpression, String operator, DotNode dotExpression) {
|
||||||
this.calculationExpression = calculationExpression;
|
this.calculationExpression = calculationExpression;
|
||||||
setOperator(operator);
|
setOperator(operator);
|
||||||
this.dotExpression = dotExpression;
|
this.dotExpression = dotExpression;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CalculationExpressionNode(DotExpressionNode dotExpression) {
|
public CalculationNode(DotNode dotExpression) {
|
||||||
this.dotExpression = dotExpression;
|
this.dotExpression = dotExpression;
|
||||||
}
|
}
|
||||||
|
|
@ -1,22 +1,22 @@
|
|||||||
package ast.expression.binaryexpression;
|
package ast.expressions.binaryexpressions;
|
||||||
|
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
import bytecode.visitor.MethodVisitor;
|
import bytecode.visitor.MethodVisitor;
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
public class DotExpressionNode extends BinaryExpressionNode {
|
public class DotNode extends BinaryNode {
|
||||||
public DotExpressionNode dotExpression;
|
public DotNode dotExpression;
|
||||||
public EnumDotOperator operator;
|
public EnumDotOperator operator;
|
||||||
public DotSubstractionExpressionNode dotSubstractionExpression;
|
public DotSubstractionNode dotSubstractionExpression;
|
||||||
|
|
||||||
public DotExpressionNode(DotExpressionNode dotExpression, String operator, DotSubstractionExpressionNode dotSubstractionExpression) {
|
public DotNode(DotNode dotExpression, String operator, DotSubstractionNode dotSubstractionExpression) {
|
||||||
this.dotExpression = dotExpression;
|
this.dotExpression = dotExpression;
|
||||||
setOperator(operator);
|
setOperator(operator);
|
||||||
this.dotSubstractionExpression = dotSubstractionExpression;
|
this.dotSubstractionExpression = dotSubstractionExpression;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DotExpressionNode(DotSubstractionExpressionNode dotSubstractionExpression) {
|
public DotNode(DotSubstractionNode dotSubstractionExpression) {
|
||||||
this.dotSubstractionExpression = dotSubstractionExpression;
|
this.dotSubstractionExpression = dotSubstractionExpression;
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
|||||||
|
package ast.expressions.binaryexpressions;
|
||||||
|
|
||||||
|
import ast.expressions.unaryexpressions.MemberAccessNode;
|
||||||
|
import ast.statementexpressions.methodcallstatementnexpressions.MethodCallNode;
|
||||||
|
import ast.type.type.*;
|
||||||
|
import ast.type.ValueNode;
|
||||||
|
import semantic.SemanticVisitor;
|
||||||
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
|
public class DotSubstractionNode extends BinaryNode {
|
||||||
|
public ValueNode value;
|
||||||
|
public String identifier;
|
||||||
|
public MemberAccessNode memberAccess;
|
||||||
|
public MethodCallNode methodCall;
|
||||||
|
public CalculationNode calculationExpression;
|
||||||
|
|
||||||
|
public DotSubstractionNode(ValueNode value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DotSubstractionNode(String identifier) {
|
||||||
|
this.identifier = identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DotSubstractionNode(MemberAccessNode memberAccess) {
|
||||||
|
this.memberAccess = memberAccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DotSubstractionNode(MethodCallNode methodCall, CalculationNode calculationExpression) {
|
||||||
|
this.methodCall = methodCall;
|
||||||
|
this.calculationExpression = calculationExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TypeCheckResult accept(SemanticVisitor visitor) {
|
||||||
|
return visitor.analyze(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITypeNode getType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package ast.expression.binaryexpression;
|
package ast.expressions.binaryexpressions;
|
||||||
|
|
||||||
public enum EnumDotOperator {
|
public enum EnumDotOperator {
|
||||||
MULT, DIV, MOD
|
MULT, DIV, MOD
|
@ -1,4 +1,4 @@
|
|||||||
package ast.expression.binaryexpression;
|
package ast.expressions.binaryexpressions;
|
||||||
|
|
||||||
public enum EnumLineOperator {
|
public enum EnumLineOperator {
|
||||||
PLUS, MINUS
|
PLUS, MINUS
|
@ -1,4 +1,4 @@
|
|||||||
package ast.expression.binaryexpression;
|
package ast.expressions.binaryexpressions;
|
||||||
|
|
||||||
public enum EnumNonCalculationOperator {
|
public enum EnumNonCalculationOperator {
|
||||||
AND, OR, GREATER, LESS, GREATER_EQUAL, LESS_EQUAL, EQUAL, NOT_EQUAL
|
AND, OR, GREATER, LESS, GREATER_EQUAL, LESS_EQUAL, EQUAL, NOT_EQUAL
|
@ -1,18 +1,18 @@
|
|||||||
package ast.expression.binaryexpression;
|
package ast.expressions.binaryexpressions;
|
||||||
|
|
||||||
import ast.expression.IExpressionNode;
|
import ast.expressions.IExpressionNode;
|
||||||
import ast.expression.unaryexpression.UnaryExpressionNode;
|
import ast.expressions.unaryexpressions.UnaryNode;
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
import bytecode.visitor.MethodVisitor;
|
import bytecode.visitor.MethodVisitor;
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
public class NonCalculationExpressionNode extends BinaryExpressionNode {
|
public class NonCalculationNode extends BinaryNode {
|
||||||
public UnaryExpressionNode unaryExpression;
|
public UnaryNode unaryExpression;
|
||||||
public EnumNonCalculationOperator operator;
|
public EnumNonCalculationOperator operator;
|
||||||
public IExpressionNode expression;
|
public IExpressionNode expression;
|
||||||
|
|
||||||
public NonCalculationExpressionNode(UnaryExpressionNode unaryExpression, String operator, IExpressionNode expression) {
|
public NonCalculationNode(UnaryNode unaryExpression, String operator, IExpressionNode expression) {
|
||||||
this.unaryExpression = unaryExpression;
|
this.unaryExpression = unaryExpression;
|
||||||
setOperator(operator);
|
setOperator(operator);
|
||||||
this.expression = expression;
|
this.expression = expression;
|
@ -1,4 +1,4 @@
|
|||||||
package ast.expression.unaryexpression;
|
package ast.expressions.unaryexpressions;
|
||||||
|
|
||||||
import ast.ASTNode;
|
import ast.ASTNode;
|
||||||
import bytecode.visitor.MethodVisitor;
|
import bytecode.visitor.MethodVisitor;
|
13
src/main/java/ast/expressions/unaryexpressions/NotNode.java
Normal file
13
src/main/java/ast/expressions/unaryexpressions/NotNode.java
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package ast.expressions.unaryexpressions;
|
||||||
|
|
||||||
|
import ast.ASTNode;
|
||||||
|
import ast.expressions.IExpressionNode;
|
||||||
|
|
||||||
|
public class NotNode implements ASTNode {
|
||||||
|
public IExpressionNode expression;
|
||||||
|
|
||||||
|
public NotNode(IExpressionNode expression) {
|
||||||
|
this.expression = expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
package ast.expression.unaryexpression;
|
package ast.expressions.unaryexpressions;
|
||||||
|
|
||||||
import ast.expression.IExpressionNode;
|
import ast.expressions.IExpressionNode;
|
||||||
import ast.statement.IStatementNode;
|
import ast.statements.IStatementNode;
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
import ast.type.ValueNode;
|
import ast.type.ValueNode;
|
||||||
import bytecode.visitor.MethodVisitor;
|
import bytecode.visitor.MethodVisitor;
|
||||||
@ -10,17 +10,17 @@ import typechecker.TypeCheckResult;
|
|||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class UnaryExpressionNode implements IExpressionNode {
|
public class UnaryNode implements IExpressionNode {
|
||||||
public String thisExp;
|
public String thisExp;
|
||||||
public String identifier;
|
public String identifier;
|
||||||
public MemberAccessNode memberAccess;
|
public MemberAccessNode memberAccess;
|
||||||
public ValueNode value;
|
public ValueNode value;
|
||||||
public NotExpressionNode notExpression;
|
public NotNode notExpression;
|
||||||
public IStatementNode statement;
|
public IStatementNode statement;
|
||||||
public IExpressionNode expression;
|
public IExpressionNode expression;
|
||||||
private ITypeNode type;
|
private ITypeNode type;
|
||||||
|
|
||||||
public UnaryExpressionNode(String value) {
|
public UnaryNode(String value) {
|
||||||
if(Objects.equals(value, "this")) {
|
if(Objects.equals(value, "this")) {
|
||||||
this.thisExp = "this";
|
this.thisExp = "this";
|
||||||
} else {
|
} else {
|
||||||
@ -28,23 +28,23 @@ public class UnaryExpressionNode implements IExpressionNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public UnaryExpressionNode(MemberAccessNode memberAccess) {
|
public UnaryNode(MemberAccessNode memberAccess) {
|
||||||
this.memberAccess = memberAccess;
|
this.memberAccess = memberAccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UnaryExpressionNode(ValueNode value) {
|
public UnaryNode(ValueNode value) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UnaryExpressionNode(NotExpressionNode notExpression) {
|
public UnaryNode(NotNode notExpression) {
|
||||||
this.notExpression = notExpression;
|
this.notExpression = notExpression;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UnaryExpressionNode(IStatementNode statement) {
|
public UnaryNode(IStatementNode statement) {
|
||||||
this.statement = statement;
|
this.statement = statement;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UnaryExpressionNode(IExpressionNode expression) {
|
public UnaryNode(IExpressionNode expression) {
|
||||||
this.expression = expression;
|
this.expression = expression;
|
||||||
}
|
}
|
||||||
|
|
@ -1,10 +1,8 @@
|
|||||||
package ast.member;
|
package ast.members;
|
||||||
|
|
||||||
import ast.block.BlockNode;
|
import ast.parameters.ParameterNode;
|
||||||
import ast.parameter.ParameterNode;
|
import ast.statements.BlockNode;
|
||||||
import ast.type.AccessModifierNode;
|
import ast.type.AccessModifierNode;
|
||||||
import bytecode.visitor.MethodVisitor;
|
|
||||||
import visitor.Visitable;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
@ -1,4 +1,4 @@
|
|||||||
package ast.member;
|
package ast.members;
|
||||||
|
|
||||||
import ast.type.AccessModifierNode;
|
import ast.type.AccessModifierNode;
|
||||||
import ast.type.type.ITypeNode;
|
import ast.type.type.ITypeNode;
|
@ -1,8 +1,6 @@
|
|||||||
package ast.member;
|
package ast.members;
|
||||||
|
|
||||||
import ast.block.BlockNode;
|
import ast.statements.BlockNode;
|
||||||
import bytecode.visitor.MethodVisitor;
|
|
||||||
import visitor.Visitable;
|
|
||||||
|
|
||||||
public class MainMethodNode extends MethodNode implements Visitable {
|
public class MainMethodNode extends MethodNode implements Visitable {
|
||||||
public BlockNode block;
|
public BlockNode block;
|
@ -1,4 +1,4 @@
|
|||||||
package ast.member;
|
package ast.members;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
@ -1,7 +1,7 @@
|
|||||||
package ast.member;
|
package ast.members;
|
||||||
|
|
||||||
import ast.block.BlockNode;
|
import ast.parameters.ParameterNode;
|
||||||
import ast.parameter.ParameterNode;
|
import ast.statements.BlockNode;
|
||||||
import ast.type.AccessModifierNode;
|
import ast.type.AccessModifierNode;
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
import bytecode.visitor.MethodVisitor;
|
import bytecode.visitor.MethodVisitor;
|
@ -1,4 +1,4 @@
|
|||||||
package ast.parameter;
|
package ast.parameters;
|
||||||
|
|
||||||
import ast.ASTNode;
|
import ast.ASTNode;
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
@ -1,31 +0,0 @@
|
|||||||
package ast.statement;
|
|
||||||
|
|
||||||
import ast.ASTNode;
|
|
||||||
import ast.expression.IExpressionNode;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
|
|
||||||
public class ForStatementNode implements IStatementNode {
|
|
||||||
public IExpressionNode statementExpressionInit;
|
|
||||||
public IStatementNode localVariableDeclarationInit;
|
|
||||||
public IExpressionNode expression;
|
|
||||||
public IExpressionNode statementExpression;
|
|
||||||
|
|
||||||
public ForStatementNode(IExpressionNode statementExpressionInit, IExpressionNode expression, IExpressionNode statementExpression) {
|
|
||||||
this.statementExpressionInit = statementExpressionInit;
|
|
||||||
this.expression = expression;
|
|
||||||
this.statementExpression = statementExpression;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ForStatementNode(IStatementNode localVariableDeclarationInit, IExpressionNode expression, IExpressionNode statementExpression) {
|
|
||||||
this.localVariableDeclarationInit = localVariableDeclarationInit;
|
|
||||||
this.expression = expression;
|
|
||||||
this.statementExpression = statementExpression;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return visitor.analyze(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
package ast.statement;
|
|
||||||
|
|
||||||
import ast.ASTNode;
|
|
||||||
import ast.block.BlockNode;
|
|
||||||
import ast.expression.IExpressionNode;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
|
|
||||||
public class WhileStatementNode implements IStatementNode {
|
|
||||||
public IExpressionNode expression;
|
|
||||||
public BlockNode block;
|
|
||||||
|
|
||||||
public WhileStatementNode(IExpressionNode expression, BlockNode block) {
|
|
||||||
this.expression = expression;
|
|
||||||
this.block = block;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return visitor.analyze(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
package ast.statement.ifstatement;
|
|
||||||
|
|
||||||
import ast.ASTNode;
|
|
||||||
import ast.block.BlockNode;
|
|
||||||
import ast.statement.IStatementNode;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
|
|
||||||
public class ElseStatementNode implements IStatementNode {
|
|
||||||
public BlockNode block;
|
|
||||||
|
|
||||||
public ElseStatementNode(BlockNode block) {
|
|
||||||
this.block = block;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return visitor.analyze(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
package ast.statement.ifstatement;
|
|
||||||
|
|
||||||
import ast.ASTNode;
|
|
||||||
import ast.statement.IStatementNode;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class IfElseStatementNode implements IStatementNode {
|
|
||||||
public IfStatementNode ifStatement;
|
|
||||||
public List<ElseStatementNode> elseStatements = new ArrayList<>();
|
|
||||||
|
|
||||||
public IfElseStatementNode(IfStatementNode ifStatement) {
|
|
||||||
this.ifStatement = ifStatement;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addElseStatement(ElseStatementNode elseStatement) {
|
|
||||||
elseStatements.add(elseStatement);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return visitor.analyze(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
package ast.statement.ifstatement;
|
|
||||||
|
|
||||||
import ast.ASTNode;
|
|
||||||
import ast.block.BlockNode;
|
|
||||||
import ast.expression.IExpressionNode;
|
|
||||||
import ast.statement.IStatementNode;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
|
|
||||||
public class IfStatementNode implements IStatementNode {
|
|
||||||
public IExpressionNode expression;
|
|
||||||
public BlockNode block;
|
|
||||||
|
|
||||||
public IfStatementNode(IExpressionNode expression, BlockNode block) {
|
|
||||||
this.expression = expression;
|
|
||||||
this.block = block;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return visitor.analyze(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
package ast.statement.statementexpression;
|
|
||||||
|
|
||||||
import ast.expression.IExpressionNode;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
|
|
||||||
public class AssignStatementExpressionNode implements IStatementExpressionNode {
|
|
||||||
public AssignableExpressionNode assignable;
|
|
||||||
public IExpressionNode expression;
|
|
||||||
|
|
||||||
public AssignStatementExpressionNode(AssignableExpressionNode assignable, IExpressionNode expression) {
|
|
||||||
this.assignable = assignable;
|
|
||||||
this.expression = expression;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return visitor.analyze(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
package ast.statement.statementexpression;
|
|
||||||
|
|
||||||
import ast.statement.IStatementNode;
|
|
||||||
|
|
||||||
public interface IStatementExpressionNode extends IStatementNode {}
|
|
@ -1,5 +0,0 @@
|
|||||||
package ast.statement.statementexpression.crementExpression;
|
|
||||||
|
|
||||||
public enum CrementType {
|
|
||||||
PREFIX, SUFFIX
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
package ast.statement.statementexpression.crementExpression;
|
|
||||||
|
|
||||||
import ast.ASTNode;
|
|
||||||
import ast.statement.statementexpression.AssignableExpressionNode;
|
|
||||||
import ast.statement.statementexpression.IStatementExpressionNode;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
|
|
||||||
public class DecrementExpressionNode implements IStatementExpressionNode {
|
|
||||||
public CrementType crementType;
|
|
||||||
public AssignableExpressionNode assignableExpression;
|
|
||||||
|
|
||||||
public DecrementExpressionNode(CrementType crementType, AssignableExpressionNode assignableExpression) {
|
|
||||||
this.assignableExpression = assignableExpression;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return visitor.analyze(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
package ast.statement.statementexpression.crementExpression;
|
|
||||||
|
|
||||||
import ast.statement.statementexpression.AssignableExpressionNode;
|
|
||||||
import ast.statement.statementexpression.IStatementExpressionNode;
|
|
||||||
import semantic.SemanticVisitor;
|
|
||||||
import typechecker.TypeCheckResult;
|
|
||||||
|
|
||||||
public class IncrementExpressionNode implements IStatementExpressionNode {
|
|
||||||
public CrementType crementType;
|
|
||||||
public AssignableExpressionNode assignableExpression;
|
|
||||||
|
|
||||||
public IncrementExpressionNode(CrementType crementType, AssignableExpressionNode assignableExpression) {
|
|
||||||
this.assignableExpression = assignableExpression;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TypeCheckResult accept(SemanticVisitor visitor) {
|
|
||||||
return visitor.analyze(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
21
src/main/java/ast/statementexpressions/AssignNode.java
Normal file
21
src/main/java/ast/statementexpressions/AssignNode.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package ast.statementexpressions;
|
||||||
|
|
||||||
|
import ast.expressions.IExpressionNode;
|
||||||
|
import semantic.SemanticVisitor;
|
||||||
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
|
public class AssignNode implements IStatementExpressionNode {
|
||||||
|
public AssignableNode assignable;
|
||||||
|
public IExpressionNode expression;
|
||||||
|
|
||||||
|
public AssignNode(AssignableNode assignable, IExpressionNode expression) {
|
||||||
|
this.assignable = assignable;
|
||||||
|
this.expression = expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TypeCheckResult accept(SemanticVisitor visitor) {
|
||||||
|
return visitor.analyze(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,19 +1,19 @@
|
|||||||
package ast.statement.statementexpression;
|
package ast.statementexpressions;
|
||||||
|
|
||||||
import ast.expression.unaryexpression.MemberAccessNode;
|
import ast.expressions.unaryexpressions.MemberAccessNode;
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
public class AssignableExpressionNode implements IStatementExpressionNode {
|
public class AssignableNode implements IStatementExpressionNode {
|
||||||
public String identifier;
|
public String identifier;
|
||||||
|
|
||||||
public MemberAccessNode memberAccess;
|
public MemberAccessNode memberAccess;
|
||||||
|
|
||||||
public AssignableExpressionNode(String identifier) {
|
public AssignableNode(String identifier) {
|
||||||
this.identifier = identifier;
|
this.identifier = identifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AssignableExpressionNode(MemberAccessNode memberAccess) {
|
public AssignableNode(MemberAccessNode memberAccess) {
|
||||||
this.memberAccess = memberAccess;
|
this.memberAccess = memberAccess;
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
package ast.statementexpressions;
|
||||||
|
|
||||||
|
import ast.statements.IStatementNode;
|
||||||
|
|
||||||
|
public interface IStatementExpressionNode extends IStatementNode {}
|
@ -1,18 +1,17 @@
|
|||||||
package ast.statement.statementexpression;
|
package ast.statementexpressions;
|
||||||
|
|
||||||
import ast.ASTNode;
|
import ast.expressions.IExpressionNode;
|
||||||
import ast.expression.IExpressionNode;
|
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class NewDeclarationStatementExpressionNode implements IStatementExpressionNode {
|
public class NewDeclarationNode implements IStatementExpressionNode {
|
||||||
public String identifier;
|
public String identifier;
|
||||||
public List<IExpressionNode> expressions = new ArrayList<>();
|
public List<IExpressionNode> expressions = new ArrayList<>();
|
||||||
|
|
||||||
public NewDeclarationStatementExpressionNode(String identifier) {
|
public NewDeclarationNode(String identifier) {
|
||||||
this.identifier = identifier;
|
this.identifier = identifier;
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
package ast.statementexpressions.crementexpressions;
|
||||||
|
|
||||||
|
public enum CrementType {
|
||||||
|
PREFIX, SUFFIX
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package ast.statementexpressions.crementexpressions;
|
||||||
|
|
||||||
|
import ast.statementexpressions.AssignableNode;
|
||||||
|
import ast.statementexpressions.IStatementExpressionNode;
|
||||||
|
import semantic.SemanticVisitor;
|
||||||
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
|
public class DecrementNode implements IStatementExpressionNode {
|
||||||
|
public CrementType crementType;
|
||||||
|
public AssignableNode assignableExpression;
|
||||||
|
|
||||||
|
public DecrementNode(CrementType crementType, AssignableNode assignableExpression) {
|
||||||
|
this.assignableExpression = assignableExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TypeCheckResult accept(SemanticVisitor visitor) {
|
||||||
|
return visitor.analyze(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package ast.statementexpressions.crementexpressions;
|
||||||
|
|
||||||
|
import ast.statementexpressions.AssignableNode;
|
||||||
|
import ast.statementexpressions.IStatementExpressionNode;
|
||||||
|
import semantic.SemanticVisitor;
|
||||||
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
|
public class IncrementNode implements IStatementExpressionNode {
|
||||||
|
public CrementType crementType;
|
||||||
|
public AssignableNode assignableExpression;
|
||||||
|
|
||||||
|
public IncrementNode(CrementType crementType, AssignableNode assignableExpression) {
|
||||||
|
this.assignableExpression = assignableExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TypeCheckResult accept(SemanticVisitor visitor) {
|
||||||
|
return visitor.analyze(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
package ast.statement.statementexpression.methodcallstatementnexpression;
|
package ast.statementexpressions.methodcallstatementnexpressions;
|
||||||
|
|
||||||
import ast.ASTNode;
|
import ast.ASTNode;
|
||||||
import ast.expression.IExpressionNode;
|
import ast.expressions.IExpressionNode;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
@ -1,21 +1,20 @@
|
|||||||
package ast.statement.statementexpression.methodcallstatementnexpression;
|
package ast.statementexpressions.methodcallstatementnexpressions;
|
||||||
|
|
||||||
import ast.ASTNode;
|
import ast.expressions.IExpressionNode;
|
||||||
import ast.expression.IExpressionNode;
|
import ast.statements.IStatementNode;
|
||||||
import ast.statement.statementexpression.IStatementExpressionNode;
|
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class MethodCallStatementExpressionNode implements IStatementExpressionNode {
|
public class MethodCallNode implements IStatementNode {
|
||||||
public TargetNode target;
|
public TargetNode target;
|
||||||
public List<ChainedMethodNode> chainedMethods = new ArrayList<>();
|
public List<ChainedMethodNode> chainedMethods = new ArrayList<>();
|
||||||
public String identifier;
|
public String identifier;
|
||||||
public List<IExpressionNode> expressions = new ArrayList<>();
|
public List<IExpressionNode> expressions = new ArrayList<>();
|
||||||
|
|
||||||
public MethodCallStatementExpressionNode(TargetNode target, String identifier) {
|
public MethodCallNode(TargetNode target, String identifier) {
|
||||||
this.target = target;
|
this.target = target;
|
||||||
this.identifier = identifier;
|
this.identifier = identifier;
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
package ast.statement.statementexpression.methodcallstatementnexpression;
|
package ast.statementexpressions.methodcallstatementnexpressions;
|
||||||
|
|
||||||
import ast.ASTNode;
|
import ast.ASTNode;
|
||||||
import ast.expression.unaryexpression.MemberAccessNode;
|
import ast.expressions.unaryexpressions.MemberAccessNode;
|
||||||
import ast.statement.statementexpression.NewDeclarationStatementExpressionNode;
|
import ast.statementexpressions.NewDeclarationNode;
|
||||||
|
|
||||||
public class TargetNode implements ASTNode {
|
public class TargetNode implements ASTNode {
|
||||||
public Boolean thisTar;
|
public Boolean thisTar;
|
||||||
public MemberAccessNode memberAccess;
|
public MemberAccessNode memberAccess;
|
||||||
public NewDeclarationStatementExpressionNode newDeclaration;
|
public NewDeclarationNode newDeclaration;
|
||||||
public String identifier;
|
public String identifier;
|
||||||
|
|
||||||
public TargetNode(Boolean thisTar) {
|
public TargetNode(Boolean thisTar) {
|
||||||
@ -18,11 +18,11 @@ public class TargetNode implements ASTNode {
|
|||||||
this.memberAccess = memberAccess;
|
this.memberAccess = memberAccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TargetNode(NewDeclarationStatementExpressionNode newDeclaration) {
|
public TargetNode(NewDeclarationNode newDeclaration) {
|
||||||
this.newDeclaration = newDeclaration;
|
this.newDeclaration = newDeclaration;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TargetNode(String identifier) {
|
public TargetNode(String identifier) {
|
||||||
this.identifier = identifier;
|
this.identifier = identifier;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,13 +1,10 @@
|
|||||||
package ast.block;
|
package ast.statements;
|
||||||
|
|
||||||
import ast.ASTNode;
|
import ast.ASTNode;
|
||||||
import ast.statement.IStatementNode;
|
|
||||||
import ast.statement.ReturnStatementNode;
|
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
import visitor.Visitable;
|
import visitor.Visitable;
|
||||||
|
|
||||||
import java.beans.Visibility;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
10
src/main/java/ast/statements/BlockStatementNode.java
Normal file
10
src/main/java/ast/statements/BlockStatementNode.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package ast.statements;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class BlockStatementNode {
|
||||||
|
List<IStatementNode> statements;
|
||||||
|
|
||||||
|
public BlockStatementNode(List<IStatementNode> statements) {this.statements = statements;}
|
||||||
|
}
|
13
src/main/java/ast/statements/ElseNode.java
Normal file
13
src/main/java/ast/statements/ElseNode.java
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package ast.statements;
|
||||||
|
|
||||||
|
import ast.ASTNode;
|
||||||
|
|
||||||
|
public class ElseNode implements ASTNode {
|
||||||
|
BlockNode block;
|
||||||
|
|
||||||
|
public ElseNode(BlockNode block) {
|
||||||
|
this.block = block;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package ast.statement;
|
package ast.statements;
|
||||||
|
|
||||||
import ast.ASTNode;
|
import ast.ASTNode;
|
||||||
import visitor.Visitable;
|
import visitor.Visitable;
|
22
src/main/java/ast/statements/IfElseNode.java
Normal file
22
src/main/java/ast/statements/IfElseNode.java
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package ast.statements;
|
||||||
|
|
||||||
|
import ast.ASTNode;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class IfElseNode implements ASTNode {
|
||||||
|
IfNode ifStatement;
|
||||||
|
List<IfNode> elseIfStatements = new ArrayList<>();
|
||||||
|
ElseNode elseStatement;
|
||||||
|
|
||||||
|
public IfElseNode(IfNode ifStatement, ElseNode elseNode) {
|
||||||
|
this.ifStatement = ifStatement;
|
||||||
|
this.elseStatement = elseNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addElseIfStatement(IfNode elseIfStament) {
|
||||||
|
elseIfStatements.add(elseIfStament);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
14
src/main/java/ast/statements/IfNode.java
Normal file
14
src/main/java/ast/statements/IfNode.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package ast.statements;
|
||||||
|
|
||||||
|
import ast.ASTNode;
|
||||||
|
import ast.expressions.IExpressionNode;
|
||||||
|
|
||||||
|
public class IfNode implements ASTNode {
|
||||||
|
IExpressionNode expression;
|
||||||
|
BlockNode block;
|
||||||
|
|
||||||
|
public IfNode(IExpressionNode expression, BlockNode block) {
|
||||||
|
this.expression = expression;
|
||||||
|
this.block = block;
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
package ast.statement;
|
package ast.statements;
|
||||||
|
|
||||||
import ast.expression.IExpressionNode;
|
import ast.expressions.IExpressionNode;
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
@ -1,14 +1,14 @@
|
|||||||
package ast.statement;
|
package ast.statements;
|
||||||
|
|
||||||
import ast.expression.IExpressionNode;
|
import ast.expressions.IExpressionNode;
|
||||||
import semantic.SemanticVisitor;
|
import semantic.SemanticVisitor;
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
public class ReturnStatementNode implements IStatementNode {
|
public class ReturnNode implements IStatementNode {
|
||||||
public IExpressionNode expression;
|
public IExpressionNode expression;
|
||||||
public Boolean voidReturn = false;
|
public Boolean voidReturn = false;
|
||||||
|
|
||||||
public ReturnStatementNode(IExpressionNode expression) {
|
public ReturnNode(IExpressionNode expression) {
|
||||||
if(expression != null) {
|
if(expression != null) {
|
||||||
this.expression = expression;
|
this.expression = expression;
|
||||||
} else {
|
} else {
|
2
src/main/java/ast/statements/StatementNode.java
Normal file
2
src/main/java/ast/statements/StatementNode.java
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
package ast.statements;public class StatementNode {
|
||||||
|
}
|
14
src/main/java/ast/statements/WhileNode.java
Normal file
14
src/main/java/ast/statements/WhileNode.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package ast.statements;
|
||||||
|
|
||||||
|
import ast.ASTNode;
|
||||||
|
import ast.expressions.IExpressionNode;
|
||||||
|
|
||||||
|
public class WhileNode extends StatementNode implements ASTNode {
|
||||||
|
IExpressionNode expression;
|
||||||
|
BlockNode block;
|
||||||
|
|
||||||
|
public WhileNode(IExpressionNode expression, BlockNode block) {
|
||||||
|
this.expression = expression;
|
||||||
|
this.block = block;
|
||||||
|
}
|
||||||
|
}
|
@ -25,6 +25,4 @@ public class BaseType implements ITypeNode {
|
|||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package bytecode;
|
package bytecode;
|
||||||
|
|
||||||
import ast.ClassNode;
|
import ast.ClassNode;
|
||||||
import ast.member.FieldNode;
|
import ast.members.FieldNode;
|
||||||
import ast.member.MemberNode;
|
import ast.members.MemberNode;
|
||||||
import ast.member.MethodNode;
|
import ast.members.MethodNode;
|
||||||
import ast.type.type.BaseType;
|
import ast.type.type.BaseType;
|
||||||
import bytecode.visitor.ClassVisitor;
|
import bytecode.visitor.ClassVisitor;
|
||||||
|
|
||||||
|
@ -1,20 +1,7 @@
|
|||||||
package bytecode;
|
package bytecode;
|
||||||
|
|
||||||
import ast.expression.binaryexpression.*;
|
import ast.members.ConstructorNode;
|
||||||
import ast.expression.unaryexpression.MemberAccessNode;
|
import ast.members.MethodNode;
|
||||||
import ast.expression.unaryexpression.NotExpressionNode;
|
|
||||||
import ast.expression.unaryexpression.UnaryExpressionNode;
|
|
||||||
import ast.member.ConstructorNode;
|
|
||||||
import ast.member.MainMethodNode;
|
|
||||||
import ast.member.MethodNode;
|
|
||||||
import ast.parameter.ParameterNode;
|
|
||||||
import ast.statement.*;
|
|
||||||
import ast.statement.ifstatement.ElseStatementNode;
|
|
||||||
import ast.statement.ifstatement.IfElseStatementNode;
|
|
||||||
import ast.statement.ifstatement.IfStatementNode;
|
|
||||||
|
|
||||||
import ast.statement.statementexpression.AssignStatementExpressionNode;
|
|
||||||
import ast.type.type.BaseType;
|
|
||||||
import org.objectweb.asm.ClassWriter;
|
import org.objectweb.asm.ClassWriter;
|
||||||
import org.objectweb.asm.Label;
|
import org.objectweb.asm.Label;
|
||||||
import org.objectweb.asm.MethodVisitor;
|
import org.objectweb.asm.MethodVisitor;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package bytecode.visitor;
|
package bytecode.visitor;
|
||||||
|
|
||||||
import ast.ClassNode;
|
import ast.ClassNode;
|
||||||
import ast.member.FieldNode;
|
import ast.members.FieldNode;
|
||||||
|
|
||||||
public interface ClassVisitor {
|
public interface ClassVisitor {
|
||||||
void visit(ClassNode classNode);
|
void visit(ClassNode classNode);
|
||||||
|
@ -1,17 +1,7 @@
|
|||||||
package bytecode.visitor;
|
package bytecode.visitor;
|
||||||
|
|
||||||
import ast.expression.binaryexpression.*;
|
import ast.members.ConstructorNode;
|
||||||
import ast.expression.unaryexpression.MemberAccessNode;
|
import ast.members.MethodNode;
|
||||||
import ast.expression.unaryexpression.NotExpressionNode;
|
|
||||||
import ast.expression.unaryexpression.UnaryExpressionNode;
|
|
||||||
import ast.member.ConstructorNode;
|
|
||||||
import ast.member.MainMethodNode;
|
|
||||||
import ast.member.MethodNode;
|
|
||||||
import ast.statement.*;
|
|
||||||
import ast.statement.ifstatement.ElseStatementNode;
|
|
||||||
import ast.statement.ifstatement.IfElseStatementNode;
|
|
||||||
import ast.statement.ifstatement.IfStatementNode;
|
|
||||||
import ast.statement.statementexpression.AssignStatementExpressionNode;
|
|
||||||
|
|
||||||
public interface MethodVisitor {
|
public interface MethodVisitor {
|
||||||
void visit(ConstructorNode constructorNode);
|
void visit(ConstructorNode constructorNode);
|
||||||
|
@ -1,35 +1,37 @@
|
|||||||
package parser.astBuilder;
|
package parser.astBuilder;
|
||||||
|
|
||||||
import ast.*;
|
import ast.*;
|
||||||
import ast.block.BlockNode;
|
|
||||||
import ast.expression.*;
|
import ast.expressions.IExpressionNode;
|
||||||
import ast.expression.binaryexpression.CalculationExpressionNode;
|
import ast.expressions.binaryexpressions.CalculationNode;
|
||||||
import ast.expression.binaryexpression.DotExpressionNode;
|
import ast.expressions.binaryexpressions.DotNode;
|
||||||
import ast.expression.binaryexpression.DotSubstractionExpressionNode;
|
import ast.expressions.binaryexpressions.DotSubstractionNode;
|
||||||
import ast.expression.binaryexpression.NonCalculationExpressionNode;
|
import ast.expressions.binaryexpressions.NonCalculationNode;
|
||||||
import ast.expression.unaryexpression.MemberAccessNode;
|
import ast.expressions.unaryexpressions.MemberAccessNode;
|
||||||
import ast.expression.unaryexpression.NotExpressionNode;
|
import ast.expressions.unaryexpressions.NotNode;
|
||||||
import ast.expression.unaryexpression.UnaryExpressionNode;
|
import ast.expressions.unaryexpressions.UnaryNode;
|
||||||
import ast.member.*;
|
import ast.members.ConstructorNode;
|
||||||
import ast.statement.ifstatement.ElseStatementNode;
|
import ast.members.MemberNode;
|
||||||
import ast.statement.ifstatement.IfElseStatementNode;
|
import ast.parameters.ParameterNode;
|
||||||
import ast.parameter.ParameterNode;
|
import ast.statementexpressions.AssignNode;
|
||||||
import ast.statement.*;
|
import ast.statementexpressions.AssignableNode;
|
||||||
import ast.statement.ifstatement.IfStatementNode;
|
import ast.statementexpressions.NewDeclarationNode;
|
||||||
import ast.statement.statementexpression.AssignStatementExpressionNode;
|
import ast.statementexpressions.crementexpressions.CrementType;
|
||||||
import ast.statement.statementexpression.AssignableExpressionNode;
|
import ast.statementexpressions.crementexpressions.DecrementNode;
|
||||||
import ast.statement.statementexpression.NewDeclarationStatementExpressionNode;
|
import ast.statementexpressions.crementexpressions.IncrementNode;
|
||||||
import ast.statement.statementexpression.crementExpression.CrementType;
|
import ast.statementexpressions.methodcallstatementnexpressions.ChainedMethodNode;
|
||||||
import ast.statement.statementexpression.crementExpression.DecrementExpressionNode;
|
import ast.statementexpressions.methodcallstatementnexpressions.MethodCallNode;
|
||||||
import ast.statement.statementexpression.crementExpression.IncrementExpressionNode;
|
import ast.statementexpressions.methodcallstatementnexpressions.TargetNode;
|
||||||
import ast.statement.statementexpression.methodcallstatementnexpression.ChainedMethodNode;
|
import ast.statements.*;
|
||||||
import ast.statement.statementexpression.methodcallstatementnexpression.MethodCallStatementExpressionNode;
|
|
||||||
import ast.statement.statementexpression.methodcallstatementnexpression.TargetNode;
|
|
||||||
import ast.type.*;
|
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
|
import ast.type.EnumValueNode;
|
||||||
|
import ast.type.ValueNode;
|
||||||
import org.antlr.v4.runtime.tree.TerminalNode;
|
import org.antlr.v4.runtime.tree.TerminalNode;
|
||||||
import parser.generated.*;
|
import parser.generated.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitProgram(SimpleJavaParser.ProgramContext ctx) {
|
public ASTNode visitProgram(SimpleJavaParser.ProgramContext ctx) {
|
||||||
@ -52,42 +54,16 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitConstructorDeclaration(SimpleJavaParser.ConstructorDeclarationContext ctx) {
|
public ASTNode visitConstructorDeclaration(SimpleJavaParser.ConstructorDeclarationContext ctx) {
|
||||||
ConstructorNode constructorNode = new ConstructorNode(ctx.AccessModifier().getText(), ctx.Identifier().getText(), (BlockNode) visit(ctx.block()));
|
ConstructorNode constructorNode = new ConstructorNode(ctx.AccessModifier().getText(), ctx.Identifier().getText(), (BlockNode) visit(ctx.blockStatement()));
|
||||||
for(SimpleJavaParser.ParameterContext parameter : ctx.parameterList().parameter()) {
|
for(SimpleJavaParser.ParameterContext parameter : ctx.parameterList().parameter()) {
|
||||||
constructorNode.addParameter((ParameterNode) visit(parameter));
|
constructorNode.addParameter((ParameterNode) visit(parameter));
|
||||||
}
|
}
|
||||||
return constructorNode;
|
return constructorNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ASTNode visitMethodDeclaration(SimpleJavaParser.MethodDeclarationContext ctx) {
|
|
||||||
if(ctx.MainMethodDeclaration() != null) {
|
|
||||||
return new MainMethodNode((BlockNode) visit(ctx.block()));
|
|
||||||
} else {
|
|
||||||
if(ctx.type() != null) {
|
|
||||||
MethodNode methodNode = new MethodNode(ctx.AccessModifier().getText(), createTypeNode(ctx.type().getText()), false, ctx.Identifier().getText(), (BlockNode) visit(ctx.block()));
|
|
||||||
for(SimpleJavaParser.ParameterContext parameter : ctx.parameterList().parameter()) {
|
|
||||||
methodNode.addParameter((ParameterNode) visit(parameter));
|
|
||||||
}
|
|
||||||
return methodNode;
|
|
||||||
} else {
|
|
||||||
MethodNode methodNode = new MethodNode(ctx.AccessModifier().getText(), null, true, ctx.Identifier().getText(), (BlockNode) visit(ctx.block()));
|
|
||||||
for(SimpleJavaParser.ParameterContext parameter : ctx.parameterList().parameter()) {
|
|
||||||
methodNode.addParameter((ParameterNode) visit(parameter));
|
|
||||||
}
|
|
||||||
return methodNode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ASTNode visitFieldDeclaration(SimpleJavaParser.FieldDeclarationContext ctx) {
|
|
||||||
return new FieldNode(new AccessModifierNode(ctx.AccessModifier().getText()), createTypeNode(ctx.type().getText()), ctx.Identifier().getText());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitParameter(SimpleJavaParser.ParameterContext ctx) {
|
public ASTNode visitParameter(SimpleJavaParser.ParameterContext ctx) {
|
||||||
return new ParameterNode(createTypeNode(ctx.type().getText()), ctx.Identifier().getText());
|
return new ParameterNode(new TypeNode(ctx.type().getText()), ctx.Identifier().getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -96,8 +72,8 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
return visitReturnStatement(ctx.returnStatement());
|
return visitReturnStatement(ctx.returnStatement());
|
||||||
} else if(ctx.localVariableDeclaration() != null) {
|
} else if(ctx.localVariableDeclaration() != null) {
|
||||||
return visitLocalVariableDeclaration(ctx.localVariableDeclaration());
|
return visitLocalVariableDeclaration(ctx.localVariableDeclaration());
|
||||||
} else if(ctx.block() != null) {
|
} else if(ctx.blockStatement() != null) {
|
||||||
return visitBlock(ctx.block());
|
return visitBlockStatement(ctx.blockStatement());
|
||||||
} else if(ctx.whileStatement() != null) {
|
} else if(ctx.whileStatement() != null) {
|
||||||
return visitWhileStatement(ctx.whileStatement());
|
return visitWhileStatement(ctx.whileStatement());
|
||||||
} else if(ctx.forStatement() != null) {
|
} else if(ctx.forStatement() != null) {
|
||||||
@ -112,58 +88,105 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitReturnStatement(SimpleJavaParser.ReturnStatementContext ctx) {
|
public ASTNode visitReturnStatement(SimpleJavaParser.ReturnStatementContext ctx) {
|
||||||
return new ReturnStatementNode((IExpressionNode) visit(ctx.expression()));
|
return new ReturnNode((IExpressionNode) visit(ctx.expression()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitLocalVariableDeclaration(SimpleJavaParser.LocalVariableDeclarationContext ctx) {
|
public ASTNode visitLocalVariableDeclaration(SimpleJavaParser.LocalVariableDeclarationContext ctx) {
|
||||||
return new LocalVariableDeclarationNode(createTypeNode(ctx.type().getText()), ctx.Identifier().getText(), ctx.Assign().getText(), (IExpressionNode) visit(ctx.expression()));
|
return new LocalVariableDeclarationNode(new TypeNode(ctx.type().getText()), ctx.Identifier().getText(), ctx.Assign().getText(), (IExpressionNode) visit(ctx.expression()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitBlock(SimpleJavaParser.BlockContext ctx) {
|
public ASTNode visitBlockStatement(SimpleJavaParser.BlockStatementContext ctx) {
|
||||||
BlockNode blockNode = new BlockNode();
|
BlockNode blockNode = new BlockNode();
|
||||||
for(SimpleJavaParser.StatementContext statement : ctx.statement()) {
|
for(SimpleJavaParser.StatementContext statement : ctx.statement()) {
|
||||||
blockNode.addStatement((IStatementNode) visit(statement));
|
blockNode.addStatement((IStatementNode) visit(statement));
|
||||||
}
|
}
|
||||||
if(!blockNode.hasReturnStatement) {
|
|
||||||
blockNode.addStatement(new ReturnStatementNode(null));
|
|
||||||
}
|
|
||||||
return blockNode;
|
return blockNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitWhileStatement(SimpleJavaParser.WhileStatementContext ctx) {
|
public ASTNode visitWhileStatement(SimpleJavaParser.WhileStatementContext ctx) {
|
||||||
return new WhileStatementNode((IExpressionNode) visit(ctx.expression()), (BlockNode) visit(ctx.block()));
|
return new WhileNode((IExpressionNode) visit(ctx.expression()), (BlockNode) visit(ctx.blockStatement()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ASTNode visitDoWhileStatement(SimpleJavaParser.DoWhileStatementContext ctx) {
|
||||||
|
IExpressionNode condition = (IExpressionNode) visit(ctx.expression());
|
||||||
|
BlockNode doBlock = (BlockNode) visit(ctx.blockStatement());
|
||||||
|
|
||||||
|
WhileNode While = new WhileNode(condition, doBlock);
|
||||||
|
BlockNode resultBlock = new BlockNode();
|
||||||
|
resultBlock.addStatement((IStatementNode) doBlock);
|
||||||
|
resultBlock.addStatement((IStatementNode) While);
|
||||||
|
|
||||||
|
return resultBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitForStatement(SimpleJavaParser.ForStatementContext ctx) {
|
public ASTNode visitForStatement(SimpleJavaParser.ForStatementContext ctx) {
|
||||||
if(ctx.statementExpression(0) != null) {
|
|
||||||
return new ForStatementNode((IExpressionNode) visit(ctx.statementExpression(0)), (IExpressionNode) visit(ctx.expression()), (IExpressionNode) visit(ctx.statementExpression(1)));
|
List<StatementNode> statements = new ArrayList<>();
|
||||||
} else if(ctx.localVariableDeclaration() != null) {
|
|
||||||
return new ForStatementNode((IStatementNode) visit(ctx.localVariableDeclaration()), (IExpressionNode) visit(ctx.expression()), (IExpressionNode) visit(ctx.statementExpression(1)));
|
//init
|
||||||
|
if(ctx.statementExpression(0) != null){
|
||||||
|
statements.add((StatementNode) visit(ctx.statementExpression(0)));
|
||||||
|
} else if (ctx.localVariableDeclaration() != null) {
|
||||||
|
statements.add((StatementNode) visit(ctx.localVariableDeclaration()));
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
|
//condition
|
||||||
|
IExpressionNode condition = (IExpressionNode) visit(ctx.expression());
|
||||||
|
|
||||||
|
//ink
|
||||||
|
IStatementNode increment = null;
|
||||||
|
if(ctx.statementExpression(1) != null){
|
||||||
|
increment = (IStatementNode) visit(ctx.statementExpression(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
BlockNode forBlock = (BlockNode) visit(ctx.blockStatement());
|
||||||
|
|
||||||
|
if(increment != null){
|
||||||
|
forBlock.addStatement((increment));
|
||||||
|
}
|
||||||
|
|
||||||
|
WhileNode While = new WhileNode(condition, forBlock);
|
||||||
|
|
||||||
|
statements.add(While);
|
||||||
|
|
||||||
|
BlockNode resultBlock = new BlockNode();
|
||||||
|
for(StatementNode statement : statements) {
|
||||||
|
resultBlock.addStatement((IStatementNode) statement);
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitIfElseStatement(SimpleJavaParser.IfElseStatementContext ctx) {
|
public ASTNode visitIfElseStatement(SimpleJavaParser.IfElseStatementContext ctx) {
|
||||||
IfElseStatementNode ifElseStatementNode = new IfElseStatementNode((IfStatementNode) visit(ctx.ifStatement()));
|
IfElseNode ifElseStatementNode = new IfElseNode((IfNode) visit(ctx.ifStatement()),
|
||||||
for(SimpleJavaParser.ElseStatementContext elseStatement : ctx.elseStatement()) {
|
(ElseNode) visit(ctx.elseStatement()));
|
||||||
ifElseStatementNode.addElseStatement((ElseStatementNode) visit(elseStatement));
|
|
||||||
|
for (SimpleJavaParser.ElseIfStatementContext elseIf : ctx.elseIfStatement()){
|
||||||
|
ifElseStatementNode.addElseIfStatement(((IfNode) visit(elseIf)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ifElseStatementNode;
|
return ifElseStatementNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitIfStatement(SimpleJavaParser.IfStatementContext ctx) {
|
public ASTNode visitIfStatement(SimpleJavaParser.IfStatementContext ctx) {
|
||||||
return new IfStatementNode((IExpressionNode) visit(ctx.expression()), (BlockNode) visit(ctx.block()));
|
return new IfNode((IExpressionNode) visit(ctx.expression()), (BlockNode) visit(ctx.blockStatement()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ASTNode visitElseIfStatement(SimpleJavaParser.ElseIfStatementContext ctx) {
|
||||||
|
return new IfNode((IExpressionNode) visit(ctx.expression()), (BlockNode) visit(ctx.blockStatement()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitElseStatement(SimpleJavaParser.ElseStatementContext ctx) {
|
public ASTNode visitElseStatement(SimpleJavaParser.ElseStatementContext ctx) {
|
||||||
return new ElseStatementNode((BlockNode) visit(ctx.block()));
|
return new ElseNode((BlockNode) visit(ctx.blockStatement()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -182,21 +205,21 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitAssign(SimpleJavaParser.AssignContext ctx) {
|
public ASTNode visitAssign(SimpleJavaParser.AssignContext ctx) {
|
||||||
return new AssignStatementExpressionNode((AssignableExpressionNode) visit(ctx.assignableExpression()), (IExpressionNode) visit(ctx.expression()));
|
return new AssignNode((AssignableNode) visit(ctx.assignableExpression()), (IExpressionNode) visit(ctx.expression()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitNewDeclaration(SimpleJavaParser.NewDeclarationContext ctx) {
|
public ASTNode visitNewDeclaration(SimpleJavaParser.NewDeclarationContext ctx) {
|
||||||
NewDeclarationStatementExpressionNode newDeclarationStatementExpressionNode = new NewDeclarationStatementExpressionNode(ctx.Identifier().getText());
|
NewDeclarationNode newDeclarationNode = new NewDeclarationNode(ctx.Identifier().getText());
|
||||||
for(SimpleJavaParser.ExpressionContext expression : ctx.argumentList().expression()) {
|
for(SimpleJavaParser.ExpressionContext expression : ctx.argumentList().expression()) {
|
||||||
newDeclarationStatementExpressionNode.addExpression((IExpressionNode) visit(expression));
|
newDeclarationNode.addExpression((IExpressionNode) visit(expression));
|
||||||
}
|
}
|
||||||
return newDeclarationStatementExpressionNode;
|
return newDeclarationNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitMethodCall(SimpleJavaParser.MethodCallContext ctx) {
|
public ASTNode visitMethodCall(SimpleJavaParser.MethodCallContext ctx) {
|
||||||
MethodCallStatementExpressionNode methodCallStatementExpressionNode = new MethodCallStatementExpressionNode((TargetNode) visit(ctx.target()), ctx.Identifier().getText());
|
MethodCallNode methodCallStatementExpressionNode = new MethodCallNode((TargetNode) visit(ctx.target()), ctx.Identifier().getText());
|
||||||
for(SimpleJavaParser.ChainedMethodContext chainedMethod : ctx.chainedMethod()) {
|
for(SimpleJavaParser.ChainedMethodContext chainedMethod : ctx.chainedMethod()) {
|
||||||
methodCallStatementExpressionNode.addChainedMethod((ChainedMethodNode) visit(chainedMethod));
|
methodCallStatementExpressionNode.addChainedMethod((ChainedMethodNode) visit(chainedMethod));
|
||||||
}
|
}
|
||||||
@ -213,7 +236,7 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
} else if(ctx.memberAccess() != null) {
|
} else if(ctx.memberAccess() != null) {
|
||||||
return new TargetNode((MemberAccessNode) visit(ctx.memberAccess()));
|
return new TargetNode((MemberAccessNode) visit(ctx.memberAccess()));
|
||||||
} else if(ctx.newDeclaration() != null) {
|
} else if(ctx.newDeclaration() != null) {
|
||||||
return new TargetNode((NewDeclarationStatementExpressionNode) visit(ctx.newDeclaration()));
|
return new TargetNode((NewDeclarationNode) visit(ctx.newDeclaration()));
|
||||||
} else if(ctx.Identifier() != null) {
|
} else if(ctx.Identifier() != null) {
|
||||||
return new TargetNode(ctx.Identifier().getText());
|
return new TargetNode(ctx.Identifier().getText());
|
||||||
}
|
}
|
||||||
@ -251,12 +274,12 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitPrefixIncrementExpression(SimpleJavaParser.PrefixIncrementExpressionContext ctx) {
|
public ASTNode visitPrefixIncrementExpression(SimpleJavaParser.PrefixIncrementExpressionContext ctx) {
|
||||||
return new IncrementExpressionNode(CrementType.PREFIX, (AssignableExpressionNode) visit(ctx.assignableExpression()));
|
return new IncrementNode(CrementType.PREFIX, (AssignableNode) visit(ctx.assignableExpression()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitSuffixIncrementExpression(SimpleJavaParser.SuffixIncrementExpressionContext ctx) {
|
public ASTNode visitSuffixIncrementExpression(SimpleJavaParser.SuffixIncrementExpressionContext ctx) {
|
||||||
return new IncrementExpressionNode(CrementType.SUFFIX, (AssignableExpressionNode) visit(ctx.assignableExpression()));
|
return new IncrementNode(CrementType.SUFFIX, (AssignableNode) visit(ctx.assignableExpression()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -271,12 +294,12 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitPrefixDecrementExpression(SimpleJavaParser.PrefixDecrementExpressionContext ctx) {
|
public ASTNode visitPrefixDecrementExpression(SimpleJavaParser.PrefixDecrementExpressionContext ctx) {
|
||||||
return new DecrementExpressionNode(CrementType.PREFIX, (AssignableExpressionNode) visit(ctx.assignableExpression()));
|
return new DecrementNode(CrementType.PREFIX, (AssignableNode) visit(ctx.assignableExpression()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitSuffixDecrementExpression(SimpleJavaParser.SuffixDecrementExpressionContext ctx) {
|
public ASTNode visitSuffixDecrementExpression(SimpleJavaParser.SuffixDecrementExpressionContext ctx) {
|
||||||
return new DecrementExpressionNode(CrementType.SUFFIX, (AssignableExpressionNode) visit(ctx.assignableExpression()));
|
return new DecrementNode(CrementType.SUFFIX, (AssignableNode) visit(ctx.assignableExpression()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -292,19 +315,19 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
@Override
|
@Override
|
||||||
public ASTNode visitUnaryExpression(SimpleJavaParser.UnaryExpressionContext ctx) {
|
public ASTNode visitUnaryExpression(SimpleJavaParser.UnaryExpressionContext ctx) {
|
||||||
if(ctx.This() != null) {
|
if(ctx.This() != null) {
|
||||||
return new UnaryExpressionNode(ctx.This().getText());
|
return new UnaryNode(ctx.This().getText());
|
||||||
} else if(ctx.Identifier() != null) {
|
} else if(ctx.Identifier() != null) {
|
||||||
return new UnaryExpressionNode(ctx.Identifier().getText());
|
return new UnaryNode(ctx.Identifier().getText());
|
||||||
} else if(ctx.memberAccess() != null) {
|
} else if(ctx.memberAccess() != null) {
|
||||||
return new UnaryExpressionNode((MemberAccessNode) visitMemberAccess(ctx.memberAccess()));
|
return new UnaryNode((MemberAccessNode) visitMemberAccess(ctx.memberAccess()));
|
||||||
} else if(ctx.value() != null) {
|
} else if(ctx.value() != null) {
|
||||||
return new UnaryExpressionNode((ValueNode) visitValue(ctx.value()));
|
return new UnaryNode((ValueNode) visitValue(ctx.value()));
|
||||||
} else if(ctx.notExpression() != null) {
|
} else if(ctx.notExpression() != null) {
|
||||||
return new UnaryExpressionNode((NotExpressionNode) visitNotExpression(ctx.notExpression()));
|
return new UnaryNode((NotNode) visitNotExpression(ctx.notExpression()));
|
||||||
} else if(ctx.statementExpression() != null) {
|
} else if(ctx.statementExpression() != null) {
|
||||||
return new UnaryExpressionNode((IStatementNode) visitStatementExpression(ctx.statementExpression()));
|
return new UnaryNode((IStatementNode) visitStatementExpression(ctx.statementExpression()));
|
||||||
} else if(ctx.expression() != null) {
|
} else if(ctx.expression() != null) {
|
||||||
return new UnaryExpressionNode((IExpressionNode) visitExpression(ctx.expression()));
|
return new UnaryNode((IExpressionNode) visitExpression(ctx.expression()));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -339,7 +362,7 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitNotExpression(SimpleJavaParser.NotExpressionContext ctx) {
|
public ASTNode visitNotExpression(SimpleJavaParser.NotExpressionContext ctx) {
|
||||||
return new NotExpressionNode((IExpressionNode) visitExpression(ctx.expression()));
|
return new NotNode((IExpressionNode) visitExpression(ctx.expression()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -356,9 +379,9 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
@Override
|
@Override
|
||||||
public ASTNode visitCalculationExpression(SimpleJavaParser.CalculationExpressionContext ctx) {
|
public ASTNode visitCalculationExpression(SimpleJavaParser.CalculationExpressionContext ctx) {
|
||||||
if(ctx.calculationExpression() != null) {
|
if(ctx.calculationExpression() != null) {
|
||||||
return new CalculationExpressionNode((CalculationExpressionNode) visit(ctx.calculationExpression()), ctx.LineOperator().getText(), (DotExpressionNode) visit(ctx.dotExpression()));
|
return new CalculationNode((CalculationNode) visit(ctx.calculationExpression()), ctx.LineOperator().getText(), (DotNode) visit(ctx.dotExpression()));
|
||||||
} else if(ctx.dotExpression() != null) {
|
} else if(ctx.dotExpression() != null) {
|
||||||
return new CalculationExpressionNode((DotExpressionNode) visit(ctx.dotExpression()));
|
return new CalculationNode((DotNode) visit(ctx.dotExpression()));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -366,9 +389,9 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
@Override
|
@Override
|
||||||
public ASTNode visitDotExpression(SimpleJavaParser.DotExpressionContext ctx) {
|
public ASTNode visitDotExpression(SimpleJavaParser.DotExpressionContext ctx) {
|
||||||
if(ctx.dotExpression() != null) {
|
if(ctx.dotExpression() != null) {
|
||||||
return new DotExpressionNode((DotExpressionNode) visit(ctx.dotExpression()), ctx.DotOperator().getText(), (DotSubstractionExpressionNode) visit(ctx.dotSubtractionExpression()));
|
return new DotNode((DotNode) visit(ctx.dotExpression()), ctx.DotOperator().getText(), (DotSubstractionNode) visit(ctx.dotSubtractionExpression()));
|
||||||
} else if(ctx.dotSubtractionExpression() != null) {
|
} else if(ctx.dotSubtractionExpression() != null) {
|
||||||
return new DotExpressionNode((DotSubstractionExpressionNode) visit(ctx.dotSubtractionExpression()));
|
return new DotNode((DotSubstractionNode) visit(ctx.dotSubtractionExpression()));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -376,28 +399,28 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
@Override
|
@Override
|
||||||
public ASTNode visitDotSubtractionExpression(SimpleJavaParser.DotSubtractionExpressionContext ctx) {
|
public ASTNode visitDotSubtractionExpression(SimpleJavaParser.DotSubtractionExpressionContext ctx) {
|
||||||
if(ctx.IntValue() != null) {
|
if(ctx.IntValue() != null) {
|
||||||
return new DotSubstractionExpressionNode(new ValueNode(EnumValueNode.INT_VALUE, ctx.IntValue().getText()));
|
return new DotSubstractionNode(new ValueNode(EnumValueNode.INT_VALUE, ctx.IntValue().getText()));
|
||||||
} else if(ctx.Identifier() != null) {
|
} else if(ctx.Identifier() != null) {
|
||||||
return new DotSubstractionExpressionNode(ctx.Identifier().getText());
|
return new DotSubstractionNode(ctx.Identifier().getText());
|
||||||
} else if(ctx.memberAccess() != null) {
|
} else if(ctx.memberAccess() != null) {
|
||||||
return new DotSubstractionExpressionNode((MemberAccessNode) visit(ctx.memberAccess()));
|
return new DotSubstractionNode((MemberAccessNode) visit(ctx.memberAccess()));
|
||||||
} else if(ctx.methodCall() != null && ctx.calculationExpression() != null) {
|
} else if(ctx.methodCall() != null && ctx.calculationExpression() != null) {
|
||||||
return new DotSubstractionExpressionNode((MethodCallStatementExpressionNode) visit(ctx.methodCall()), (CalculationExpressionNode) visit(ctx.calculationExpression()));
|
return new DotSubstractionNode((MethodCallNode) visit(ctx.methodCall()), (CalculationNode) visit(ctx.calculationExpression()));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitNonCalculationExpression(SimpleJavaParser.NonCalculationExpressionContext ctx) {
|
public ASTNode visitNonCalculationExpression(SimpleJavaParser.NonCalculationExpressionContext ctx) {
|
||||||
return new NonCalculationExpressionNode((UnaryExpressionNode) visit(ctx.unaryExpression()), ctx.nonCalculationOperator().getText(), (IExpressionNode) visit(ctx.expression()));
|
return new NonCalculationNode((UnaryNode) visit(ctx.unaryExpression()), ctx.nonCalculationOperator().getText(), (IExpressionNode) visit(ctx.expression()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ASTNode visitAssignableExpression(SimpleJavaParser.AssignableExpressionContext ctx) {
|
public ASTNode visitAssignableExpression(SimpleJavaParser.AssignableExpressionContext ctx) {
|
||||||
if(ctx.Identifier() != null) {
|
if(ctx.Identifier() != null) {
|
||||||
return new AssignableExpressionNode(ctx.Identifier().getText());
|
return new AssignableNode(ctx.Identifier().getText());
|
||||||
} else if(ctx.memberAccess() != null) {
|
} else if(ctx.memberAccess() != null) {
|
||||||
return new AssignableExpressionNode((MemberAccessNode) visit(ctx.memberAccess()));
|
return new AssignableNode((MemberAccessNode) visit(ctx.memberAccess()));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -413,3 +436,4 @@ public class ASTBuilder extends SimpleJavaBaseVisitor<ASTNode> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -35,19 +35,20 @@ Comma=34
|
|||||||
Class=35
|
Class=35
|
||||||
This=36
|
This=36
|
||||||
While=37
|
While=37
|
||||||
If=38
|
Do=38
|
||||||
Else=39
|
If=39
|
||||||
For=40
|
Else=40
|
||||||
Return=41
|
For=41
|
||||||
New=42
|
Return=42
|
||||||
CharValue=43
|
New=43
|
||||||
IntValue=44
|
CharValue=44
|
||||||
BooleanValue=45
|
IntValue=45
|
||||||
NullValue=46
|
BooleanValue=46
|
||||||
Identifier=47
|
NullValue=47
|
||||||
WS=48
|
Identifier=48
|
||||||
InlineComment=49
|
WS=49
|
||||||
MultilineComment=50
|
InlineComment=50
|
||||||
|
MultilineComment=51
|
||||||
'++'=1
|
'++'=1
|
||||||
'--'=2
|
'--'=2
|
||||||
'void'=3
|
'void'=3
|
||||||
@ -80,9 +81,10 @@ MultilineComment=50
|
|||||||
'class'=35
|
'class'=35
|
||||||
'this'=36
|
'this'=36
|
||||||
'while'=37
|
'while'=37
|
||||||
'if'=38
|
'do'=38
|
||||||
'else'=39
|
'if'=39
|
||||||
'for'=40
|
'else'=40
|
||||||
'return'=41
|
'for'=41
|
||||||
'new'=42
|
'return'=42
|
||||||
'null'=46
|
'new'=43
|
||||||
|
'null'=47
|
||||||
|
@ -137,13 +137,13 @@ public class SimpleJavaBaseListener implements SimpleJavaListener {
|
|||||||
*
|
*
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void enterBlock(SimpleJavaParser.BlockContext ctx) { }
|
@Override public void enterBlockStatement(SimpleJavaParser.BlockStatementContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitBlock(SimpleJavaParser.BlockContext ctx) { }
|
@Override public void exitBlockStatement(SimpleJavaParser.BlockStatementContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@ -180,6 +180,18 @@ public class SimpleJavaBaseListener implements SimpleJavaListener {
|
|||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitWhileStatement(SimpleJavaParser.WhileStatementContext ctx) { }
|
@Override public void exitWhileStatement(SimpleJavaParser.WhileStatementContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterDoWhileStatement(SimpleJavaParser.DoWhileStatementContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitDoWhileStatement(SimpleJavaParser.DoWhileStatementContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@ -216,6 +228,18 @@ public class SimpleJavaBaseListener implements SimpleJavaListener {
|
|||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitIfStatement(SimpleJavaParser.IfStatementContext ctx) { }
|
@Override public void exitIfStatement(SimpleJavaParser.IfStatementContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterElseIfStatement(SimpleJavaParser.ElseIfStatementContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitElseIfStatement(SimpleJavaParser.ElseIfStatementContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
|
@ -88,7 +88,7 @@ public class SimpleJavaBaseVisitor<T> extends AbstractParseTreeVisitor<T> implem
|
|||||||
* <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 visitBlock(SimpleJavaParser.BlockContext ctx) { return visitChildren(ctx); }
|
@Override public T visitBlockStatement(SimpleJavaParser.BlockStatementContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@ -110,6 +110,13 @@ public class SimpleJavaBaseVisitor<T> extends AbstractParseTreeVisitor<T> implem
|
|||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitWhileStatement(SimpleJavaParser.WhileStatementContext ctx) { return visitChildren(ctx); }
|
@Override public T visitWhileStatement(SimpleJavaParser.WhileStatementContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitDoWhileStatement(SimpleJavaParser.DoWhileStatementContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@ -131,6 +138,13 @@ public class SimpleJavaBaseVisitor<T> extends AbstractParseTreeVisitor<T> implem
|
|||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitIfStatement(SimpleJavaParser.IfStatementContext ctx) { return visitChildren(ctx); }
|
@Override public T visitIfStatement(SimpleJavaParser.IfStatementContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitElseIfStatement(SimpleJavaParser.ElseIfStatementContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
|
File diff suppressed because one or more lines are too long
@ -23,9 +23,9 @@ public class SimpleJavaLexer extends Lexer {
|
|||||||
Less=20, GreaterEqual=21, LessEqual=22, Equal=23, NotEqual=24, Not=25,
|
Less=20, GreaterEqual=21, LessEqual=22, Equal=23, NotEqual=24, Not=25,
|
||||||
And=26, Or=27, Dot=28, OpenRoundBracket=29, ClosedRoundBracket=30, OpenCurlyBracket=31,
|
And=26, Or=27, Dot=28, OpenRoundBracket=29, ClosedRoundBracket=30, OpenCurlyBracket=31,
|
||||||
ClosedCurlyBracket=32, Semicolon=33, Comma=34, Class=35, This=36, While=37,
|
ClosedCurlyBracket=32, Semicolon=33, Comma=34, Class=35, This=36, While=37,
|
||||||
If=38, Else=39, For=40, Return=41, New=42, CharValue=43, IntValue=44,
|
Do=38, If=39, Else=40, For=41, Return=42, New=43, CharValue=44, IntValue=45,
|
||||||
BooleanValue=45, NullValue=46, Identifier=47, WS=48, InlineComment=49,
|
BooleanValue=46, NullValue=47, Identifier=48, WS=49, InlineComment=50,
|
||||||
MultilineComment=50;
|
MultilineComment=51;
|
||||||
public static String[] channelNames = {
|
public static String[] channelNames = {
|
||||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||||
};
|
};
|
||||||
@ -42,9 +42,9 @@ public class SimpleJavaLexer extends Lexer {
|
|||||||
"GreaterEqual", "LessEqual", "Equal", "NotEqual", "Not", "And", "Or",
|
"GreaterEqual", "LessEqual", "Equal", "NotEqual", "Not", "And", "Or",
|
||||||
"Dot", "OpenRoundBracket", "ClosedRoundBracket", "OpenCurlyBracket",
|
"Dot", "OpenRoundBracket", "ClosedRoundBracket", "OpenCurlyBracket",
|
||||||
"ClosedCurlyBracket", "Semicolon", "Comma", "Class", "This", "While",
|
"ClosedCurlyBracket", "Semicolon", "Comma", "Class", "This", "While",
|
||||||
"If", "Else", "For", "Return", "New", "CharValue", "IntValue", "BooleanValue",
|
"Do", "If", "Else", "For", "Return", "New", "CharValue", "IntValue",
|
||||||
"NullValue", "Alphabetic", "Numeric", "ValidIdentSymbols", "Identifier",
|
"BooleanValue", "NullValue", "Alphabetic", "Numeric", "ValidIdentSymbols",
|
||||||
"WS", "InlineComment", "MultilineComment"
|
"Identifier", "WS", "InlineComment", "MultilineComment"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public static final String[] ruleNames = makeRuleNames();
|
public static final String[] ruleNames = makeRuleNames();
|
||||||
@ -55,8 +55,8 @@ public class SimpleJavaLexer extends Lexer {
|
|||||||
"'public static void main(String[] args)'", null, null, null, null, "'='",
|
"'public static void main(String[] args)'", null, null, null, null, "'='",
|
||||||
"'+'", "'-'", "'*'", "'%'", "'/'", "'>'", "'<'", "'>='", "'<='", "'=='",
|
"'+'", "'-'", "'*'", "'%'", "'/'", "'>'", "'<'", "'>='", "'<='", "'=='",
|
||||||
"'!='", "'!'", "'&&'", "'||'", "'.'", "'('", "')'", "'{'", "'}'", "';'",
|
"'!='", "'!'", "'&&'", "'||'", "'.'", "'('", "')'", "'{'", "'}'", "';'",
|
||||||
"','", "'class'", "'this'", "'while'", "'if'", "'else'", "'for'", "'return'",
|
"','", "'class'", "'this'", "'while'", "'do'", "'if'", "'else'", "'for'",
|
||||||
"'new'", null, null, null, "'null'"
|
"'return'", "'new'", null, null, null, "'null'"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||||
@ -68,8 +68,9 @@ public class SimpleJavaLexer extends Lexer {
|
|||||||
"Greater", "Less", "GreaterEqual", "LessEqual", "Equal", "NotEqual",
|
"Greater", "Less", "GreaterEqual", "LessEqual", "Equal", "NotEqual",
|
||||||
"Not", "And", "Or", "Dot", "OpenRoundBracket", "ClosedRoundBracket",
|
"Not", "And", "Or", "Dot", "OpenRoundBracket", "ClosedRoundBracket",
|
||||||
"OpenCurlyBracket", "ClosedCurlyBracket", "Semicolon", "Comma", "Class",
|
"OpenCurlyBracket", "ClosedCurlyBracket", "Semicolon", "Comma", "Class",
|
||||||
"This", "While", "If", "Else", "For", "Return", "New", "CharValue", "IntValue",
|
"This", "While", "Do", "If", "Else", "For", "Return", "New", "CharValue",
|
||||||
"BooleanValue", "NullValue", "Identifier", "WS", "InlineComment", "MultilineComment"
|
"IntValue", "BooleanValue", "NullValue", "Identifier", "WS", "InlineComment",
|
||||||
|
"MultilineComment"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||||
@ -131,7 +132,7 @@ public class SimpleJavaLexer extends Lexer {
|
|||||||
public ATN getATN() { return _ATN; }
|
public ATN getATN() { return _ATN; }
|
||||||
|
|
||||||
public static final String _serializedATN =
|
public static final String _serializedATN =
|
||||||
"\u0004\u00002\u0198\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
"\u0004\u00003\u019d\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
||||||
"\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
|
"\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
|
||||||
"\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
|
"\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
|
||||||
"\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
|
"\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
|
||||||
@ -145,244 +146,246 @@ public class SimpleJavaLexer 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*\u0002+\u0007"+
|
"&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+
|
||||||
"+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+
|
"+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+
|
||||||
"0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0001\u0000"+
|
"0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u0007"+
|
||||||
"\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002"+
|
"5\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001"+
|
||||||
"\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+
|
"\u0001\u0002\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\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005"+
|
"\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
|
||||||
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
|
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006"+
|
||||||
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
||||||
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
||||||
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
||||||
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
||||||
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
||||||
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
|
||||||
"\u0001\u0006\u0003\u0006\u00b0\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+
|
"\u0001\u0006\u0001\u0006\u0003\u0006\u00b2\b\u0006\u0001\u0007\u0001\u0007"+
|
||||||
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
||||||
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
||||||
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
||||||
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
||||||
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
||||||
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
||||||
"\u0001\b\u0001\b\u0001\b\u0003\b\u00dc\b\b\u0001\t\u0001\t\u0003\t\u00e0"+
|
"\u0001\u0007\u0001\b\u0001\b\u0001\b\u0003\b\u00de\b\b\u0001\t\u0001\t"+
|
||||||
"\b\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0003\n\u00e8\b\n"+
|
"\u0003\t\u00e2\b\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0003"+
|
||||||
"\u0001\u000b\u0001\u000b\u0003\u000b\u00ec\b\u000b\u0001\f\u0001\f\u0001"+
|
"\n\u00ea\b\n\u0001\u000b\u0001\u000b\u0003\u000b\u00ee\b\u000b\u0001\f"+
|
||||||
"\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u0010"+
|
"\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f"+
|
||||||
"\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0013"+
|
"\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012"+
|
||||||
"\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015"+
|
"\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+
|
||||||
"\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017"+
|
"\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017"+
|
||||||
"\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019"+
|
"\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019"+
|
||||||
"\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001c"+
|
"\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b"+
|
||||||
"\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001f"+
|
"\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e"+
|
||||||
"\u0001\u001f\u0001 \u0001 \u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001"+
|
"\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$\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*\u014a"+
|
"\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001*\u0001*\u0001"+
|
||||||
"\b*\n*\f*\u014d\t*\u0001*\u0001*\u0001+\u0003+\u0152\b+\u0001+\u0004+"+
|
"*\u0001*\u0001+\u0001+\u0005+\u014f\b+\n+\f+\u0152\t+\u0001+\u0001+\u0001"+
|
||||||
"\u0155\b+\u000b+\f+\u0156\u0001,\u0001,\u0001,\u0001,\u0001,\u0001,\u0001"+
|
",\u0003,\u0157\b,\u0001,\u0004,\u015a\b,\u000b,\f,\u015b\u0001-\u0001"+
|
||||||
",\u0001,\u0001,\u0003,\u0162\b,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+
|
"-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0003-\u0167\b-\u0001"+
|
||||||
".\u0001.\u0001/\u0001/\u00010\u00010\u00010\u00030\u0170\b0\u00011\u0001"+
|
".\u0001.\u0001.\u0001.\u0001.\u0001/\u0001/\u00010\u00010\u00011\u0001"+
|
||||||
"1\u00051\u0174\b1\n1\f1\u0177\t1\u00012\u00042\u017a\b2\u000b2\f2\u017b"+
|
"1\u00011\u00031\u0175\b1\u00012\u00012\u00052\u0179\b2\n2\f2\u017c\t2"+
|
||||||
"\u00012\u00012\u00013\u00013\u00013\u00013\u00053\u0184\b3\n3\f3\u0187"+
|
"\u00013\u00043\u017f\b3\u000b3\f3\u0180\u00013\u00013\u00014\u00014\u0001"+
|
||||||
"\t3\u00013\u00013\u00014\u00014\u00014\u00014\u00054\u018f\b4\n4\f4\u0192"+
|
"4\u00014\u00054\u0189\b4\n4\f4\u018c\t4\u00014\u00014\u00015\u00015\u0001"+
|
||||||
"\t4\u00014\u00014\u00014\u00014\u00014\u0001\u0190\u00005\u0001\u0001"+
|
"5\u00015\u00055\u0194\b5\n5\f5\u0197\t5\u00015\u00015\u00015\u00015\u0001"+
|
||||||
"\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f"+
|
"5\u0001\u0195\u00006\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t"+
|
||||||
"\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b\u000e\u001d\u000f"+
|
"\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f"+
|
||||||
"\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015+\u0016-\u0017/\u0018"+
|
"\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014"+
|
||||||
"1\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f? A!C\"E#G$I%K&M\'O("+
|
")\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e"+
|
||||||
"Q)S*U+W,Y-[.]\u0000_\u0000a\u0000c/e0g1i2\u0001\u0000\u0005\u0002\u0000"+
|
"=\u001f? A!C\"E#G$I%K&M\'O(Q)S*U+W,Y-[.]/_\u0000a\u0000c\u0000e0g1i2k"+
|
||||||
"\n\n\r\r\u0002\u0000AZaz\u0001\u000009\u0002\u0000$$__\u0003\u0000\t\n"+
|
"3\u0001\u0000\u0005\u0002\u0000\n\n\r\r\u0002\u0000AZaz\u0001\u000009"+
|
||||||
"\r\r \u01aa\u0000\u0001\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000"+
|
"\u0002\u0000$$__\u0003\u0000\t\n\r\r \u01af\u0000\u0001\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000"+
|
"\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000"+
|
"\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000"+
|
"\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000"+
|
"\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000"+
|
"\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000"+
|
"\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000"+
|
"\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%"+
|
"\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001"+
|
||||||
"\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\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000\u0000\u0000"+
|
"\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001"+
|
||||||
"3\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u00007\u0001"+
|
"\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;\u0001\u0000\u0000"+
|
"\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001\u0000\u0000\u0000\u0000"+
|
"\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?"+
|
||||||
"A\u0001\u0000\u0000\u0000\u0000C\u0001\u0000\u0000\u0000\u0000E\u0001"+
|
"\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000K\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000\u0000\u0000"+
|
"\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000\u0000M"+
|
||||||
"O\u0001\u0000\u0000\u0000\u0000Q\u0001\u0000\u0000\u0000\u0000S\u0001"+
|
"\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000Q\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u0000U\u0001\u0000\u0000\u0000\u0000W\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000Y\u0001\u0000\u0000\u0000\u0000[\u0001\u0000\u0000\u0000\u0000"+
|
"\u0000W\u0001\u0000\u0000\u0000\u0000Y\u0001\u0000\u0000\u0000\u0000["+
|
||||||
"c\u0001\u0000\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000g\u0001"+
|
"\u0001\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000e\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u0000i\u0001\u0000\u0000\u0000\u0001k\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000g\u0001\u0000\u0000\u0000\u0000i\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0003n\u0001\u0000\u0000\u0000\u0005q\u0001\u0000\u0000\u0000\u0007"+
|
"\u0000k\u0001\u0000\u0000\u0000\u0001m\u0001\u0000\u0000\u0000\u0003p"+
|
||||||
"v\u0001\u0000\u0000\u0000\t~\u0001\u0000\u0000\u0000\u000b\u0083\u0001"+
|
"\u0001\u0000\u0000\u0000\u0005s\u0001\u0000\u0000\u0000\u0007x\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\r\u00af\u0001\u0000\u0000\u0000\u000f\u00b1\u0001\u0000"+
|
"\u0000\u0000\t\u0080\u0001\u0000\u0000\u0000\u000b\u0085\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u0011\u00db\u0001\u0000\u0000\u0000\u0013\u00df\u0001\u0000"+
|
"\u0000\r\u00b1\u0001\u0000\u0000\u0000\u000f\u00b3\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0015\u00e7\u0001\u0000\u0000\u0000\u0017\u00eb\u0001\u0000"+
|
"\u0011\u00dd\u0001\u0000\u0000\u0000\u0013\u00e1\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0019\u00ed\u0001\u0000\u0000\u0000\u001b\u00ef\u0001\u0000"+
|
"\u0015\u00e9\u0001\u0000\u0000\u0000\u0017\u00ed\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u001d\u00f1\u0001\u0000\u0000\u0000\u001f\u00f3\u0001\u0000"+
|
"\u0019\u00ef\u0001\u0000\u0000\u0000\u001b\u00f1\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000!\u00f5\u0001\u0000\u0000\u0000#\u00f7\u0001\u0000\u0000\u0000"+
|
"\u001d\u00f3\u0001\u0000\u0000\u0000\u001f\u00f5\u0001\u0000\u0000\u0000"+
|
||||||
"%\u00f9\u0001\u0000\u0000\u0000\'\u00fb\u0001\u0000\u0000\u0000)\u00fd"+
|
"!\u00f7\u0001\u0000\u0000\u0000#\u00f9\u0001\u0000\u0000\u0000%\u00fb"+
|
||||||
"\u0001\u0000\u0000\u0000+\u0100\u0001\u0000\u0000\u0000-\u0103\u0001\u0000"+
|
"\u0001\u0000\u0000\u0000\'\u00fd\u0001\u0000\u0000\u0000)\u00ff\u0001"+
|
||||||
"\u0000\u0000/\u0106\u0001\u0000\u0000\u00001\u0109\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000+\u0102\u0001\u0000\u0000\u0000-\u0105\u0001\u0000\u0000"+
|
||||||
"3\u010b\u0001\u0000\u0000\u00005\u010e\u0001\u0000\u0000\u00007\u0111"+
|
"\u0000/\u0108\u0001\u0000\u0000\u00001\u010b\u0001\u0000\u0000\u00003"+
|
||||||
"\u0001\u0000\u0000\u00009\u0113\u0001\u0000\u0000\u0000;\u0115\u0001\u0000"+
|
"\u010d\u0001\u0000\u0000\u00005\u0110\u0001\u0000\u0000\u00007\u0113\u0001"+
|
||||||
"\u0000\u0000=\u0117\u0001\u0000\u0000\u0000?\u0119\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u00009\u0115\u0001\u0000\u0000\u0000;\u0117\u0001\u0000\u0000"+
|
||||||
"A\u011b\u0001\u0000\u0000\u0000C\u011d\u0001\u0000\u0000\u0000E\u011f"+
|
"\u0000=\u0119\u0001\u0000\u0000\u0000?\u011b\u0001\u0000\u0000\u0000A"+
|
||||||
"\u0001\u0000\u0000\u0000G\u0125\u0001\u0000\u0000\u0000I\u012a\u0001\u0000"+
|
"\u011d\u0001\u0000\u0000\u0000C\u011f\u0001\u0000\u0000\u0000E\u0121\u0001"+
|
||||||
"\u0000\u0000K\u0130\u0001\u0000\u0000\u0000M\u0133\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000G\u0127\u0001\u0000\u0000\u0000I\u012c\u0001\u0000\u0000"+
|
||||||
"O\u0138\u0001\u0000\u0000\u0000Q\u013c\u0001\u0000\u0000\u0000S\u0143"+
|
"\u0000K\u0132\u0001\u0000\u0000\u0000M\u0135\u0001\u0000\u0000\u0000O"+
|
||||||
"\u0001\u0000\u0000\u0000U\u0147\u0001\u0000\u0000\u0000W\u0151\u0001\u0000"+
|
"\u0138\u0001\u0000\u0000\u0000Q\u013d\u0001\u0000\u0000\u0000S\u0141\u0001"+
|
||||||
"\u0000\u0000Y\u0161\u0001\u0000\u0000\u0000[\u0163\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000U\u0148\u0001\u0000\u0000\u0000W\u014c\u0001\u0000\u0000"+
|
||||||
"]\u0168\u0001\u0000\u0000\u0000_\u016a\u0001\u0000\u0000\u0000a\u016f"+
|
"\u0000Y\u0156\u0001\u0000\u0000\u0000[\u0166\u0001\u0000\u0000\u0000]"+
|
||||||
"\u0001\u0000\u0000\u0000c\u0171\u0001\u0000\u0000\u0000e\u0179\u0001\u0000"+
|
"\u0168\u0001\u0000\u0000\u0000_\u016d\u0001\u0000\u0000\u0000a\u016f\u0001"+
|
||||||
"\u0000\u0000g\u017f\u0001\u0000\u0000\u0000i\u018a\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000c\u0174\u0001\u0000\u0000\u0000e\u0176\u0001\u0000\u0000"+
|
||||||
"kl\u0005+\u0000\u0000lm\u0005+\u0000\u0000m\u0002\u0001\u0000\u0000\u0000"+
|
"\u0000g\u017e\u0001\u0000\u0000\u0000i\u0184\u0001\u0000\u0000\u0000k"+
|
||||||
"no\u0005-\u0000\u0000op\u0005-\u0000\u0000p\u0004\u0001\u0000\u0000\u0000"+
|
"\u018f\u0001\u0000\u0000\u0000mn\u0005+\u0000\u0000no\u0005+\u0000\u0000"+
|
||||||
"qr\u0005v\u0000\u0000rs\u0005o\u0000\u0000st\u0005i\u0000\u0000tu\u0005"+
|
"o\u0002\u0001\u0000\u0000\u0000pq\u0005-\u0000\u0000qr\u0005-\u0000\u0000"+
|
||||||
"d\u0000\u0000u\u0006\u0001\u0000\u0000\u0000vw\u0005b\u0000\u0000wx\u0005"+
|
"r\u0004\u0001\u0000\u0000\u0000st\u0005v\u0000\u0000tu\u0005o\u0000\u0000"+
|
||||||
"o\u0000\u0000xy\u0005o\u0000\u0000yz\u0005l\u0000\u0000z{\u0005e\u0000"+
|
"uv\u0005i\u0000\u0000vw\u0005d\u0000\u0000w\u0006\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000{|\u0005a\u0000\u0000|}\u0005n\u0000\u0000}\b\u0001\u0000\u0000"+
|
"xy\u0005b\u0000\u0000yz\u0005o\u0000\u0000z{\u0005o\u0000\u0000{|\u0005"+
|
||||||
"\u0000~\u007f\u0005c\u0000\u0000\u007f\u0080\u0005h\u0000\u0000\u0080"+
|
"l\u0000\u0000|}\u0005e\u0000\u0000}~\u0005a\u0000\u0000~\u007f\u0005n"+
|
||||||
"\u0081\u0005a\u0000\u0000\u0081\u0082\u0005r\u0000\u0000\u0082\n\u0001"+
|
"\u0000\u0000\u007f\b\u0001\u0000\u0000\u0000\u0080\u0081\u0005c\u0000"+
|
||||||
"\u0000\u0000\u0000\u0083\u0084\u0005i\u0000\u0000\u0084\u0085\u0005n\u0000"+
|
"\u0000\u0081\u0082\u0005h\u0000\u0000\u0082\u0083\u0005a\u0000\u0000\u0083"+
|
||||||
"\u0000\u0085\u0086\u0005t\u0000\u0000\u0086\f\u0001\u0000\u0000\u0000"+
|
"\u0084\u0005r\u0000\u0000\u0084\n\u0001\u0000\u0000\u0000\u0085\u0086"+
|
||||||
"\u0087\u0088\u0005p\u0000\u0000\u0088\u0089\u0005u\u0000\u0000\u0089\u008a"+
|
"\u0005i\u0000\u0000\u0086\u0087\u0005n\u0000\u0000\u0087\u0088\u0005t"+
|
||||||
"\u0005b\u0000\u0000\u008a\u008b\u0005l\u0000\u0000\u008b\u008c\u0005i"+
|
"\u0000\u0000\u0088\f\u0001\u0000\u0000\u0000\u0089\u008a\u0005p\u0000"+
|
||||||
"\u0000\u0000\u008c\u00b0\u0005c\u0000\u0000\u008d\u008e\u0005p\u0000\u0000"+
|
"\u0000\u008a\u008b\u0005u\u0000\u0000\u008b\u008c\u0005b\u0000\u0000\u008c"+
|
||||||
"\u008e\u008f\u0005r\u0000\u0000\u008f\u0090\u0005i\u0000\u0000\u0090\u0091"+
|
"\u008d\u0005l\u0000\u0000\u008d\u008e\u0005i\u0000\u0000\u008e\u00b2\u0005"+
|
||||||
"\u0005v\u0000\u0000\u0091\u0092\u0005a\u0000\u0000\u0092\u0093\u0005t"+
|
"c\u0000\u0000\u008f\u0090\u0005p\u0000\u0000\u0090\u0091\u0005r\u0000"+
|
||||||
"\u0000\u0000\u0093\u00b0\u0005e\u0000\u0000\u0094\u0095\u0005p\u0000\u0000"+
|
"\u0000\u0091\u0092\u0005i\u0000\u0000\u0092\u0093\u0005v\u0000\u0000\u0093"+
|
||||||
"\u0095\u0096\u0005u\u0000\u0000\u0096\u0097\u0005b\u0000\u0000\u0097\u0098"+
|
"\u0094\u0005a\u0000\u0000\u0094\u0095\u0005t\u0000\u0000\u0095\u00b2\u0005"+
|
||||||
"\u0005l\u0000\u0000\u0098\u0099\u0005i\u0000\u0000\u0099\u009a\u0005c"+
|
"e\u0000\u0000\u0096\u0097\u0005p\u0000\u0000\u0097\u0098\u0005u\u0000"+
|
||||||
"\u0000\u0000\u009a\u009b\u0005 \u0000\u0000\u009b\u009c\u0005s\u0000\u0000"+
|
"\u0000\u0098\u0099\u0005b\u0000\u0000\u0099\u009a\u0005l\u0000\u0000\u009a"+
|
||||||
"\u009c\u009d\u0005t\u0000\u0000\u009d\u009e\u0005a\u0000\u0000\u009e\u009f"+
|
"\u009b\u0005i\u0000\u0000\u009b\u009c\u0005c\u0000\u0000\u009c\u009d\u0005"+
|
||||||
"\u0005t\u0000\u0000\u009f\u00a0\u0005i\u0000\u0000\u00a0\u00b0\u0005c"+
|
" \u0000\u0000\u009d\u009e\u0005s\u0000\u0000\u009e\u009f\u0005t\u0000"+
|
||||||
"\u0000\u0000\u00a1\u00a2\u0005p\u0000\u0000\u00a2\u00a3\u0005r\u0000\u0000"+
|
"\u0000\u009f\u00a0\u0005a\u0000\u0000\u00a0\u00a1\u0005t\u0000\u0000\u00a1"+
|
||||||
"\u00a3\u00a4\u0005i\u0000\u0000\u00a4\u00a5\u0005v\u0000\u0000\u00a5\u00a6"+
|
"\u00a2\u0005i\u0000\u0000\u00a2\u00b2\u0005c\u0000\u0000\u00a3\u00a4\u0005"+
|
||||||
"\u0005a\u0000\u0000\u00a6\u00a7\u0005t\u0000\u0000\u00a7\u00a8\u0005e"+
|
"p\u0000\u0000\u00a4\u00a5\u0005r\u0000\u0000\u00a5\u00a6\u0005i\u0000"+
|
||||||
"\u0000\u0000\u00a8\u00a9\u0005 \u0000\u0000\u00a9\u00aa\u0005s\u0000\u0000"+
|
"\u0000\u00a6\u00a7\u0005v\u0000\u0000\u00a7\u00a8\u0005a\u0000\u0000\u00a8"+
|
||||||
"\u00aa\u00ab\u0005t\u0000\u0000\u00ab\u00ac\u0005a\u0000\u0000\u00ac\u00ad"+
|
"\u00a9\u0005t\u0000\u0000\u00a9\u00aa\u0005e\u0000\u0000\u00aa\u00ab\u0005"+
|
||||||
"\u0005t\u0000\u0000\u00ad\u00ae\u0005i\u0000\u0000\u00ae\u00b0\u0005c"+
|
" \u0000\u0000\u00ab\u00ac\u0005s\u0000\u0000\u00ac\u00ad\u0005t\u0000"+
|
||||||
"\u0000\u0000\u00af\u0087\u0001\u0000\u0000\u0000\u00af\u008d\u0001\u0000"+
|
"\u0000\u00ad\u00ae\u0005a\u0000\u0000\u00ae\u00af\u0005t\u0000\u0000\u00af"+
|
||||||
"\u0000\u0000\u00af\u0094\u0001\u0000\u0000\u0000\u00af\u00a1\u0001\u0000"+
|
"\u00b0\u0005i\u0000\u0000\u00b0\u00b2\u0005c\u0000\u0000\u00b1\u0089\u0001"+
|
||||||
"\u0000\u0000\u00b0\u000e\u0001\u0000\u0000\u0000\u00b1\u00b2\u0005p\u0000"+
|
"\u0000\u0000\u0000\u00b1\u008f\u0001\u0000\u0000\u0000\u00b1\u0096\u0001"+
|
||||||
"\u0000\u00b2\u00b3\u0005u\u0000\u0000\u00b3\u00b4\u0005b\u0000\u0000\u00b4"+
|
"\u0000\u0000\u0000\u00b1\u00a3\u0001\u0000\u0000\u0000\u00b2\u000e\u0001"+
|
||||||
"\u00b5\u0005l\u0000\u0000\u00b5\u00b6\u0005i\u0000\u0000\u00b6\u00b7\u0005"+
|
"\u0000\u0000\u0000\u00b3\u00b4\u0005p\u0000\u0000\u00b4\u00b5\u0005u\u0000"+
|
||||||
"c\u0000\u0000\u00b7\u00b8\u0005 \u0000\u0000\u00b8\u00b9\u0005s\u0000"+
|
"\u0000\u00b5\u00b6\u0005b\u0000\u0000\u00b6\u00b7\u0005l\u0000\u0000\u00b7"+
|
||||||
"\u0000\u00b9\u00ba\u0005t\u0000\u0000\u00ba\u00bb\u0005a\u0000\u0000\u00bb"+
|
"\u00b8\u0005i\u0000\u0000\u00b8\u00b9\u0005c\u0000\u0000\u00b9\u00ba\u0005"+
|
||||||
"\u00bc\u0005t\u0000\u0000\u00bc\u00bd\u0005i\u0000\u0000\u00bd\u00be\u0005"+
|
" \u0000\u0000\u00ba\u00bb\u0005s\u0000\u0000\u00bb\u00bc\u0005t\u0000"+
|
||||||
"c\u0000\u0000\u00be\u00bf\u0005 \u0000\u0000\u00bf\u00c0\u0005v\u0000"+
|
"\u0000\u00bc\u00bd\u0005a\u0000\u0000\u00bd\u00be\u0005t\u0000\u0000\u00be"+
|
||||||
"\u0000\u00c0\u00c1\u0005o\u0000\u0000\u00c1\u00c2\u0005i\u0000\u0000\u00c2"+
|
"\u00bf\u0005i\u0000\u0000\u00bf\u00c0\u0005c\u0000\u0000\u00c0\u00c1\u0005"+
|
||||||
"\u00c3\u0005d\u0000\u0000\u00c3\u00c4\u0005 \u0000\u0000\u00c4\u00c5\u0005"+
|
" \u0000\u0000\u00c1\u00c2\u0005v\u0000\u0000\u00c2\u00c3\u0005o\u0000"+
|
||||||
"m\u0000\u0000\u00c5\u00c6\u0005a\u0000\u0000\u00c6\u00c7\u0005i\u0000"+
|
"\u0000\u00c3\u00c4\u0005i\u0000\u0000\u00c4\u00c5\u0005d\u0000\u0000\u00c5"+
|
||||||
"\u0000\u00c7\u00c8\u0005n\u0000\u0000\u00c8\u00c9\u0005(\u0000\u0000\u00c9"+
|
"\u00c6\u0005 \u0000\u0000\u00c6\u00c7\u0005m\u0000\u0000\u00c7\u00c8\u0005"+
|
||||||
"\u00ca\u0005S\u0000\u0000\u00ca\u00cb\u0005t\u0000\u0000\u00cb\u00cc\u0005"+
|
"a\u0000\u0000\u00c8\u00c9\u0005i\u0000\u0000\u00c9\u00ca\u0005n\u0000"+
|
||||||
"r\u0000\u0000\u00cc\u00cd\u0005i\u0000\u0000\u00cd\u00ce\u0005n\u0000"+
|
"\u0000\u00ca\u00cb\u0005(\u0000\u0000\u00cb\u00cc\u0005S\u0000\u0000\u00cc"+
|
||||||
"\u0000\u00ce\u00cf\u0005g\u0000\u0000\u00cf\u00d0\u0005[\u0000\u0000\u00d0"+
|
"\u00cd\u0005t\u0000\u0000\u00cd\u00ce\u0005r\u0000\u0000\u00ce\u00cf\u0005"+
|
||||||
"\u00d1\u0005]\u0000\u0000\u00d1\u00d2\u0005 \u0000\u0000\u00d2\u00d3\u0005"+
|
"i\u0000\u0000\u00cf\u00d0\u0005n\u0000\u0000\u00d0\u00d1\u0005g\u0000"+
|
||||||
"a\u0000\u0000\u00d3\u00d4\u0005r\u0000\u0000\u00d4\u00d5\u0005g\u0000"+
|
"\u0000\u00d1\u00d2\u0005[\u0000\u0000\u00d2\u00d3\u0005]\u0000\u0000\u00d3"+
|
||||||
"\u0000\u00d5\u00d6\u0005s\u0000\u0000\u00d6\u00d7\u0005)\u0000\u0000\u00d7"+
|
"\u00d4\u0005 \u0000\u0000\u00d4\u00d5\u0005a\u0000\u0000\u00d5\u00d6\u0005"+
|
||||||
"\u0010\u0001\u0000\u0000\u0000\u00d8\u00dc\u0003\u001f\u000f\u0000\u00d9"+
|
"r\u0000\u0000\u00d6\u00d7\u0005g\u0000\u0000\u00d7\u00d8\u0005s\u0000"+
|
||||||
"\u00dc\u0003#\u0011\u0000\u00da\u00dc\u0003!\u0010\u0000\u00db\u00d8\u0001"+
|
"\u0000\u00d8\u00d9\u0005)\u0000\u0000\u00d9\u0010\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u00db\u00d9\u0001\u0000\u0000\u0000\u00db\u00da\u0001"+
|
"\u00da\u00de\u0003\u001f\u000f\u0000\u00db\u00de\u0003#\u0011\u0000\u00dc"+
|
||||||
"\u0000\u0000\u0000\u00dc\u0012\u0001\u0000\u0000\u0000\u00dd\u00e0\u0003"+
|
"\u00de\u0003!\u0010\u0000\u00dd\u00da\u0001\u0000\u0000\u0000\u00dd\u00db"+
|
||||||
"\u001b\r\u0000\u00de\u00e0\u0003\u001d\u000e\u0000\u00df\u00dd\u0001\u0000"+
|
"\u0001\u0000\u0000\u0000\u00dd\u00dc\u0001\u0000\u0000\u0000\u00de\u0012"+
|
||||||
"\u0000\u0000\u00df\u00de\u0001\u0000\u0000\u0000\u00e0\u0014\u0001\u0000"+
|
"\u0001\u0000\u0000\u0000\u00df\u00e2\u0003\u001b\r\u0000\u00e0\u00e2\u0003"+
|
||||||
"\u0000\u0000\u00e1\u00e8\u0003%\u0012\u0000\u00e2\u00e8\u0003\'\u0013"+
|
"\u001d\u000e\u0000\u00e1\u00df\u0001\u0000\u0000\u0000\u00e1\u00e0\u0001"+
|
||||||
"\u0000\u00e3\u00e8\u0003)\u0014\u0000\u00e4\u00e8\u0003+\u0015\u0000\u00e5"+
|
"\u0000\u0000\u0000\u00e2\u0014\u0001\u0000\u0000\u0000\u00e3\u00ea\u0003"+
|
||||||
"\u00e8\u0003-\u0016\u0000\u00e6\u00e8\u0003/\u0017\u0000\u00e7\u00e1\u0001"+
|
"%\u0012\u0000\u00e4\u00ea\u0003\'\u0013\u0000\u00e5\u00ea\u0003)\u0014"+
|
||||||
"\u0000\u0000\u0000\u00e7\u00e2\u0001\u0000\u0000\u0000\u00e7\u00e3\u0001"+
|
"\u0000\u00e6\u00ea\u0003+\u0015\u0000\u00e7\u00ea\u0003-\u0016\u0000\u00e8"+
|
||||||
"\u0000\u0000\u0000\u00e7\u00e4\u0001\u0000\u0000\u0000\u00e7\u00e5\u0001"+
|
"\u00ea\u0003/\u0017\u0000\u00e9\u00e3\u0001\u0000\u0000\u0000\u00e9\u00e4"+
|
||||||
"\u0000\u0000\u0000\u00e7\u00e6\u0001\u0000\u0000\u0000\u00e8\u0016\u0001"+
|
"\u0001\u0000\u0000\u0000\u00e9\u00e5\u0001\u0000\u0000\u0000\u00e9\u00e6"+
|
||||||
"\u0000\u0000\u0000\u00e9\u00ec\u00033\u0019\u0000\u00ea\u00ec\u00035\u001a"+
|
"\u0001\u0000\u0000\u0000\u00e9\u00e7\u0001\u0000\u0000\u0000\u00e9\u00e8"+
|
||||||
"\u0000\u00eb\u00e9\u0001\u0000\u0000\u0000\u00eb\u00ea\u0001\u0000\u0000"+
|
"\u0001\u0000\u0000\u0000\u00ea\u0016\u0001\u0000\u0000\u0000\u00eb\u00ee"+
|
||||||
"\u0000\u00ec\u0018\u0001\u0000\u0000\u0000\u00ed\u00ee\u0005=\u0000\u0000"+
|
"\u00033\u0019\u0000\u00ec\u00ee\u00035\u001a\u0000\u00ed\u00eb\u0001\u0000"+
|
||||||
"\u00ee\u001a\u0001\u0000\u0000\u0000\u00ef\u00f0\u0005+\u0000\u0000\u00f0"+
|
"\u0000\u0000\u00ed\u00ec\u0001\u0000\u0000\u0000\u00ee\u0018\u0001\u0000"+
|
||||||
"\u001c\u0001\u0000\u0000\u0000\u00f1\u00f2\u0005-\u0000\u0000\u00f2\u001e"+
|
"\u0000\u0000\u00ef\u00f0\u0005=\u0000\u0000\u00f0\u001a\u0001\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u00f3\u00f4\u0005*\u0000\u0000\u00f4 \u0001\u0000"+
|
"\u0000\u00f1\u00f2\u0005+\u0000\u0000\u00f2\u001c\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u00f5\u00f6\u0005%\u0000\u0000\u00f6\"\u0001\u0000\u0000"+
|
"\u00f3\u00f4\u0005-\u0000\u0000\u00f4\u001e\u0001\u0000\u0000\u0000\u00f5"+
|
||||||
"\u0000\u00f7\u00f8\u0005/\u0000\u0000\u00f8$\u0001\u0000\u0000\u0000\u00f9"+
|
"\u00f6\u0005*\u0000\u0000\u00f6 \u0001\u0000\u0000\u0000\u00f7\u00f8\u0005"+
|
||||||
"\u00fa\u0005>\u0000\u0000\u00fa&\u0001\u0000\u0000\u0000\u00fb\u00fc\u0005"+
|
"%\u0000\u0000\u00f8\"\u0001\u0000\u0000\u0000\u00f9\u00fa\u0005/\u0000"+
|
||||||
"<\u0000\u0000\u00fc(\u0001\u0000\u0000\u0000\u00fd\u00fe\u0005>\u0000"+
|
"\u0000\u00fa$\u0001\u0000\u0000\u0000\u00fb\u00fc\u0005>\u0000\u0000\u00fc"+
|
||||||
"\u0000\u00fe\u00ff\u0005=\u0000\u0000\u00ff*\u0001\u0000\u0000\u0000\u0100"+
|
"&\u0001\u0000\u0000\u0000\u00fd\u00fe\u0005<\u0000\u0000\u00fe(\u0001"+
|
||||||
"\u0101\u0005<\u0000\u0000\u0101\u0102\u0005=\u0000\u0000\u0102,\u0001"+
|
"\u0000\u0000\u0000\u00ff\u0100\u0005>\u0000\u0000\u0100\u0101\u0005=\u0000"+
|
||||||
"\u0000\u0000\u0000\u0103\u0104\u0005=\u0000\u0000\u0104\u0105\u0005=\u0000"+
|
"\u0000\u0101*\u0001\u0000\u0000\u0000\u0102\u0103\u0005<\u0000\u0000\u0103"+
|
||||||
"\u0000\u0105.\u0001\u0000\u0000\u0000\u0106\u0107\u0005!\u0000\u0000\u0107"+
|
"\u0104\u0005=\u0000\u0000\u0104,\u0001\u0000\u0000\u0000\u0105\u0106\u0005"+
|
||||||
"\u0108\u0005=\u0000\u0000\u01080\u0001\u0000\u0000\u0000\u0109\u010a\u0005"+
|
"=\u0000\u0000\u0106\u0107\u0005=\u0000\u0000\u0107.\u0001\u0000\u0000"+
|
||||||
"!\u0000\u0000\u010a2\u0001\u0000\u0000\u0000\u010b\u010c\u0005&\u0000"+
|
"\u0000\u0108\u0109\u0005!\u0000\u0000\u0109\u010a\u0005=\u0000\u0000\u010a"+
|
||||||
"\u0000\u010c\u010d\u0005&\u0000\u0000\u010d4\u0001\u0000\u0000\u0000\u010e"+
|
"0\u0001\u0000\u0000\u0000\u010b\u010c\u0005!\u0000\u0000\u010c2\u0001"+
|
||||||
"\u010f\u0005|\u0000\u0000\u010f\u0110\u0005|\u0000\u0000\u01106\u0001"+
|
"\u0000\u0000\u0000\u010d\u010e\u0005&\u0000\u0000\u010e\u010f\u0005&\u0000"+
|
||||||
"\u0000\u0000\u0000\u0111\u0112\u0005.\u0000\u0000\u01128\u0001\u0000\u0000"+
|
"\u0000\u010f4\u0001\u0000\u0000\u0000\u0110\u0111\u0005|\u0000\u0000\u0111"+
|
||||||
"\u0000\u0113\u0114\u0005(\u0000\u0000\u0114:\u0001\u0000\u0000\u0000\u0115"+
|
"\u0112\u0005|\u0000\u0000\u01126\u0001\u0000\u0000\u0000\u0113\u0114\u0005"+
|
||||||
"\u0116\u0005)\u0000\u0000\u0116<\u0001\u0000\u0000\u0000\u0117\u0118\u0005"+
|
".\u0000\u0000\u01148\u0001\u0000\u0000\u0000\u0115\u0116\u0005(\u0000"+
|
||||||
"{\u0000\u0000\u0118>\u0001\u0000\u0000\u0000\u0119\u011a\u0005}\u0000"+
|
"\u0000\u0116:\u0001\u0000\u0000\u0000\u0117\u0118\u0005)\u0000\u0000\u0118"+
|
||||||
"\u0000\u011a@\u0001\u0000\u0000\u0000\u011b\u011c\u0005;\u0000\u0000\u011c"+
|
"<\u0001\u0000\u0000\u0000\u0119\u011a\u0005{\u0000\u0000\u011a>\u0001"+
|
||||||
"B\u0001\u0000\u0000\u0000\u011d\u011e\u0005,\u0000\u0000\u011eD\u0001"+
|
"\u0000\u0000\u0000\u011b\u011c\u0005}\u0000\u0000\u011c@\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u011f\u0120\u0005c\u0000\u0000\u0120\u0121\u0005l\u0000"+
|
"\u0000\u011d\u011e\u0005;\u0000\u0000\u011eB\u0001\u0000\u0000\u0000\u011f"+
|
||||||
"\u0000\u0121\u0122\u0005a\u0000\u0000\u0122\u0123\u0005s\u0000\u0000\u0123"+
|
"\u0120\u0005,\u0000\u0000\u0120D\u0001\u0000\u0000\u0000\u0121\u0122\u0005"+
|
||||||
"\u0124\u0005s\u0000\u0000\u0124F\u0001\u0000\u0000\u0000\u0125\u0126\u0005"+
|
"c\u0000\u0000\u0122\u0123\u0005l\u0000\u0000\u0123\u0124\u0005a\u0000"+
|
||||||
"t\u0000\u0000\u0126\u0127\u0005h\u0000\u0000\u0127\u0128\u0005i\u0000"+
|
"\u0000\u0124\u0125\u0005s\u0000\u0000\u0125\u0126\u0005s\u0000\u0000\u0126"+
|
||||||
"\u0000\u0128\u0129\u0005s\u0000\u0000\u0129H\u0001\u0000\u0000\u0000\u012a"+
|
"F\u0001\u0000\u0000\u0000\u0127\u0128\u0005t\u0000\u0000\u0128\u0129\u0005"+
|
||||||
"\u012b\u0005w\u0000\u0000\u012b\u012c\u0005h\u0000\u0000\u012c\u012d\u0005"+
|
"h\u0000\u0000\u0129\u012a\u0005i\u0000\u0000\u012a\u012b\u0005s\u0000"+
|
||||||
"i\u0000\u0000\u012d\u012e\u0005l\u0000\u0000\u012e\u012f\u0005e\u0000"+
|
"\u0000\u012bH\u0001\u0000\u0000\u0000\u012c\u012d\u0005w\u0000\u0000\u012d"+
|
||||||
"\u0000\u012fJ\u0001\u0000\u0000\u0000\u0130\u0131\u0005i\u0000\u0000\u0131"+
|
"\u012e\u0005h\u0000\u0000\u012e\u012f\u0005i\u0000\u0000\u012f\u0130\u0005"+
|
||||||
"\u0132\u0005f\u0000\u0000\u0132L\u0001\u0000\u0000\u0000\u0133\u0134\u0005"+
|
"l\u0000\u0000\u0130\u0131\u0005e\u0000\u0000\u0131J\u0001\u0000\u0000"+
|
||||||
"e\u0000\u0000\u0134\u0135\u0005l\u0000\u0000\u0135\u0136\u0005s\u0000"+
|
"\u0000\u0132\u0133\u0005d\u0000\u0000\u0133\u0134\u0005o\u0000\u0000\u0134"+
|
||||||
"\u0000\u0136\u0137\u0005e\u0000\u0000\u0137N\u0001\u0000\u0000\u0000\u0138"+
|
"L\u0001\u0000\u0000\u0000\u0135\u0136\u0005i\u0000\u0000\u0136\u0137\u0005"+
|
||||||
"\u0139\u0005f\u0000\u0000\u0139\u013a\u0005o\u0000\u0000\u013a\u013b\u0005"+
|
"f\u0000\u0000\u0137N\u0001\u0000\u0000\u0000\u0138\u0139\u0005e\u0000"+
|
||||||
"r\u0000\u0000\u013bP\u0001\u0000\u0000\u0000\u013c\u013d\u0005r\u0000"+
|
"\u0000\u0139\u013a\u0005l\u0000\u0000\u013a\u013b\u0005s\u0000\u0000\u013b"+
|
||||||
"\u0000\u013d\u013e\u0005e\u0000\u0000\u013e\u013f\u0005t\u0000\u0000\u013f"+
|
"\u013c\u0005e\u0000\u0000\u013cP\u0001\u0000\u0000\u0000\u013d\u013e\u0005"+
|
||||||
"\u0140\u0005u\u0000\u0000\u0140\u0141\u0005r\u0000\u0000\u0141\u0142\u0005"+
|
"f\u0000\u0000\u013e\u013f\u0005o\u0000\u0000\u013f\u0140\u0005r\u0000"+
|
||||||
"n\u0000\u0000\u0142R\u0001\u0000\u0000\u0000\u0143\u0144\u0005n\u0000"+
|
"\u0000\u0140R\u0001\u0000\u0000\u0000\u0141\u0142\u0005r\u0000\u0000\u0142"+
|
||||||
"\u0000\u0144\u0145\u0005e\u0000\u0000\u0145\u0146\u0005w\u0000\u0000\u0146"+
|
"\u0143\u0005e\u0000\u0000\u0143\u0144\u0005t\u0000\u0000\u0144\u0145\u0005"+
|
||||||
"T\u0001\u0000\u0000\u0000\u0147\u014b\u0005\'\u0000\u0000\u0148\u014a"+
|
"u\u0000\u0000\u0145\u0146\u0005r\u0000\u0000\u0146\u0147\u0005n\u0000"+
|
||||||
"\b\u0000\u0000\u0000\u0149\u0148\u0001\u0000\u0000\u0000\u014a\u014d\u0001"+
|
"\u0000\u0147T\u0001\u0000\u0000\u0000\u0148\u0149\u0005n\u0000\u0000\u0149"+
|
||||||
"\u0000\u0000\u0000\u014b\u0149\u0001\u0000\u0000\u0000\u014b\u014c\u0001"+
|
"\u014a\u0005e\u0000\u0000\u014a\u014b\u0005w\u0000\u0000\u014bV\u0001"+
|
||||||
"\u0000\u0000\u0000\u014c\u014e\u0001\u0000\u0000\u0000\u014d\u014b\u0001"+
|
"\u0000\u0000\u0000\u014c\u0150\u0005\'\u0000\u0000\u014d\u014f\b\u0000"+
|
||||||
"\u0000\u0000\u0000\u014e\u014f\u0005\'\u0000\u0000\u014fV\u0001\u0000"+
|
"\u0000\u0000\u014e\u014d\u0001\u0000\u0000\u0000\u014f\u0152\u0001\u0000"+
|
||||||
"\u0000\u0000\u0150\u0152\u0003\u001d\u000e\u0000\u0151\u0150\u0001\u0000"+
|
"\u0000\u0000\u0150\u014e\u0001\u0000\u0000\u0000\u0150\u0151\u0001\u0000"+
|
||||||
"\u0000\u0000\u0151\u0152\u0001\u0000\u0000\u0000\u0152\u0154\u0001\u0000"+
|
"\u0000\u0000\u0151\u0153\u0001\u0000\u0000\u0000\u0152\u0150\u0001\u0000"+
|
||||||
"\u0000\u0000\u0153\u0155\u0003_/\u0000\u0154\u0153\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0153\u0154\u0005\'\u0000\u0000\u0154X\u0001\u0000\u0000"+
|
||||||
"\u0155\u0156\u0001\u0000\u0000\u0000\u0156\u0154\u0001\u0000\u0000\u0000"+
|
"\u0000\u0155\u0157\u0003\u001d\u000e\u0000\u0156\u0155\u0001\u0000\u0000"+
|
||||||
"\u0156\u0157\u0001\u0000\u0000\u0000\u0157X\u0001\u0000\u0000\u0000\u0158"+
|
"\u0000\u0156\u0157\u0001\u0000\u0000\u0000\u0157\u0159\u0001\u0000\u0000"+
|
||||||
"\u0159\u0005t\u0000\u0000\u0159\u015a\u0005r\u0000\u0000\u015a\u015b\u0005"+
|
"\u0000\u0158\u015a\u0003a0\u0000\u0159\u0158\u0001\u0000\u0000\u0000\u015a"+
|
||||||
"u\u0000\u0000\u015b\u0162\u0005e\u0000\u0000\u015c\u015d\u0005f\u0000"+
|
"\u015b\u0001\u0000\u0000\u0000\u015b\u0159\u0001\u0000\u0000\u0000\u015b"+
|
||||||
"\u0000\u015d\u015e\u0005a\u0000\u0000\u015e\u015f\u0005l\u0000\u0000\u015f"+
|
"\u015c\u0001\u0000\u0000\u0000\u015cZ\u0001\u0000\u0000\u0000\u015d\u015e"+
|
||||||
"\u0160\u0005s\u0000\u0000\u0160\u0162\u0005e\u0000\u0000\u0161\u0158\u0001"+
|
"\u0005t\u0000\u0000\u015e\u015f\u0005r\u0000\u0000\u015f\u0160\u0005u"+
|
||||||
"\u0000\u0000\u0000\u0161\u015c\u0001\u0000\u0000\u0000\u0162Z\u0001\u0000"+
|
"\u0000\u0000\u0160\u0167\u0005e\u0000\u0000\u0161\u0162\u0005f\u0000\u0000"+
|
||||||
"\u0000\u0000\u0163\u0164\u0005n\u0000\u0000\u0164\u0165\u0005u\u0000\u0000"+
|
"\u0162\u0163\u0005a\u0000\u0000\u0163\u0164\u0005l\u0000\u0000\u0164\u0165"+
|
||||||
"\u0165\u0166\u0005l\u0000\u0000\u0166\u0167\u0005l\u0000\u0000\u0167\\"+
|
"\u0005s\u0000\u0000\u0165\u0167\u0005e\u0000\u0000\u0166\u015d\u0001\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u0168\u0169\u0007\u0001\u0000\u0000\u0169^\u0001"+
|
"\u0000\u0000\u0166\u0161\u0001\u0000\u0000\u0000\u0167\\\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u016a\u016b\u0007\u0002\u0000\u0000\u016b`\u0001\u0000"+
|
"\u0000\u0168\u0169\u0005n\u0000\u0000\u0169\u016a\u0005u\u0000\u0000\u016a"+
|
||||||
"\u0000\u0000\u016c\u0170\u0003].\u0000\u016d\u0170\u0003_/\u0000\u016e"+
|
"\u016b\u0005l\u0000\u0000\u016b\u016c\u0005l\u0000\u0000\u016c^\u0001"+
|
||||||
"\u0170\u0007\u0003\u0000\u0000\u016f\u016c\u0001\u0000\u0000\u0000\u016f"+
|
"\u0000\u0000\u0000\u016d\u016e\u0007\u0001\u0000\u0000\u016e`\u0001\u0000"+
|
||||||
"\u016d\u0001\u0000\u0000\u0000\u016f\u016e\u0001\u0000\u0000\u0000\u0170"+
|
"\u0000\u0000\u016f\u0170\u0007\u0002\u0000\u0000\u0170b\u0001\u0000\u0000"+
|
||||||
"b\u0001\u0000\u0000\u0000\u0171\u0175\u0003].\u0000\u0172\u0174\u0003"+
|
"\u0000\u0171\u0175\u0003_/\u0000\u0172\u0175\u0003a0\u0000\u0173\u0175"+
|
||||||
"a0\u0000\u0173\u0172\u0001\u0000\u0000\u0000\u0174\u0177\u0001\u0000\u0000"+
|
"\u0007\u0003\u0000\u0000\u0174\u0171\u0001\u0000\u0000\u0000\u0174\u0172"+
|
||||||
"\u0000\u0175\u0173\u0001\u0000\u0000\u0000\u0175\u0176\u0001\u0000\u0000"+
|
"\u0001\u0000\u0000\u0000\u0174\u0173\u0001\u0000\u0000\u0000\u0175d\u0001"+
|
||||||
"\u0000\u0176d\u0001\u0000\u0000\u0000\u0177\u0175\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u0176\u017a\u0003_/\u0000\u0177\u0179\u0003c1\u0000"+
|
||||||
"\u0178\u017a\u0007\u0004\u0000\u0000\u0179\u0178\u0001\u0000\u0000\u0000"+
|
"\u0178\u0177\u0001\u0000\u0000\u0000\u0179\u017c\u0001\u0000\u0000\u0000"+
|
||||||
"\u017a\u017b\u0001\u0000\u0000\u0000\u017b\u0179\u0001\u0000\u0000\u0000"+
|
"\u017a\u0178\u0001\u0000\u0000\u0000\u017a\u017b\u0001\u0000\u0000\u0000"+
|
||||||
"\u017b\u017c\u0001\u0000\u0000\u0000\u017c\u017d\u0001\u0000\u0000\u0000"+
|
"\u017bf\u0001\u0000\u0000\u0000\u017c\u017a\u0001\u0000\u0000\u0000\u017d"+
|
||||||
"\u017d\u017e\u00062\u0000\u0000\u017ef\u0001\u0000\u0000\u0000\u017f\u0180"+
|
"\u017f\u0007\u0004\u0000\u0000\u017e\u017d\u0001\u0000\u0000\u0000\u017f"+
|
||||||
"\u0005/\u0000\u0000\u0180\u0181\u0005/\u0000\u0000\u0181\u0185\u0001\u0000"+
|
"\u0180\u0001\u0000\u0000\u0000\u0180\u017e\u0001\u0000\u0000\u0000\u0180"+
|
||||||
"\u0000\u0000\u0182\u0184\b\u0000\u0000\u0000\u0183\u0182\u0001\u0000\u0000"+
|
"\u0181\u0001\u0000\u0000\u0000\u0181\u0182\u0001\u0000\u0000\u0000\u0182"+
|
||||||
"\u0000\u0184\u0187\u0001\u0000\u0000\u0000\u0185\u0183\u0001\u0000\u0000"+
|
"\u0183\u00063\u0000\u0000\u0183h\u0001\u0000\u0000\u0000\u0184\u0185\u0005"+
|
||||||
"\u0000\u0185\u0186\u0001\u0000\u0000\u0000\u0186\u0188\u0001\u0000\u0000"+
|
"/\u0000\u0000\u0185\u0186\u0005/\u0000\u0000\u0186\u018a\u0001\u0000\u0000"+
|
||||||
"\u0000\u0187\u0185\u0001\u0000\u0000\u0000\u0188\u0189\u00063\u0000\u0000"+
|
"\u0000\u0187\u0189\b\u0000\u0000\u0000\u0188\u0187\u0001\u0000\u0000\u0000"+
|
||||||
"\u0189h\u0001\u0000\u0000\u0000\u018a\u018b\u0005/\u0000\u0000\u018b\u018c"+
|
"\u0189\u018c\u0001\u0000\u0000\u0000\u018a\u0188\u0001\u0000\u0000\u0000"+
|
||||||
"\u0005*\u0000\u0000\u018c\u0190\u0001\u0000\u0000\u0000\u018d\u018f\t"+
|
"\u018a\u018b\u0001\u0000\u0000\u0000\u018b\u018d\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u018e\u018d\u0001\u0000\u0000\u0000\u018f\u0192\u0001"+
|
"\u018c\u018a\u0001\u0000\u0000\u0000\u018d\u018e\u00064\u0000\u0000\u018e"+
|
||||||
"\u0000\u0000\u0000\u0190\u0191\u0001\u0000\u0000\u0000\u0190\u018e\u0001"+
|
"j\u0001\u0000\u0000\u0000\u018f\u0190\u0005/\u0000\u0000\u0190\u0191\u0005"+
|
||||||
"\u0000\u0000\u0000\u0191\u0193\u0001\u0000\u0000\u0000\u0192\u0190\u0001"+
|
"*\u0000\u0000\u0191\u0195\u0001\u0000\u0000\u0000\u0192\u0194\t\u0000"+
|
||||||
"\u0000\u0000\u0000\u0193\u0194\u0005*\u0000\u0000\u0194\u0195\u0005/\u0000"+
|
"\u0000\u0000\u0193\u0192\u0001\u0000\u0000\u0000\u0194\u0197\u0001\u0000"+
|
||||||
"\u0000\u0195\u0196\u0001\u0000\u0000\u0000\u0196\u0197\u00064\u0000\u0000"+
|
"\u0000\u0000\u0195\u0196\u0001\u0000\u0000\u0000\u0195\u0193\u0001\u0000"+
|
||||||
"\u0197j\u0001\u0000\u0000\u0000\u000f\u0000\u00af\u00db\u00df\u00e7\u00eb"+
|
"\u0000\u0000\u0196\u0198\u0001\u0000\u0000\u0000\u0197\u0195\u0001\u0000"+
|
||||||
"\u014b\u0151\u0156\u0161\u016f\u0175\u017b\u0185\u0190\u0001\u0006\u0000"+
|
"\u0000\u0000\u0198\u0199\u0005*\u0000\u0000\u0199\u019a\u0005/\u0000\u0000"+
|
||||||
"\u0000";
|
"\u019a\u019b\u0001\u0000\u0000\u0000\u019b\u019c\u00065\u0000\u0000\u019c"+
|
||||||
|
"l\u0001\u0000\u0000\u0000\u000f\u0000\u00b1\u00dd\u00e1\u00e9\u00ed\u0150"+
|
||||||
|
"\u0156\u015b\u0166\u0174\u017a\u0180\u018a\u0195\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 {
|
||||||
|
@ -35,19 +35,20 @@ Comma=34
|
|||||||
Class=35
|
Class=35
|
||||||
This=36
|
This=36
|
||||||
While=37
|
While=37
|
||||||
If=38
|
Do=38
|
||||||
Else=39
|
If=39
|
||||||
For=40
|
Else=40
|
||||||
Return=41
|
For=41
|
||||||
New=42
|
Return=42
|
||||||
CharValue=43
|
New=43
|
||||||
IntValue=44
|
CharValue=44
|
||||||
BooleanValue=45
|
IntValue=45
|
||||||
NullValue=46
|
BooleanValue=46
|
||||||
Identifier=47
|
NullValue=47
|
||||||
WS=48
|
Identifier=48
|
||||||
InlineComment=49
|
WS=49
|
||||||
MultilineComment=50
|
InlineComment=50
|
||||||
|
MultilineComment=51
|
||||||
'++'=1
|
'++'=1
|
||||||
'--'=2
|
'--'=2
|
||||||
'void'=3
|
'void'=3
|
||||||
@ -80,9 +81,10 @@ MultilineComment=50
|
|||||||
'class'=35
|
'class'=35
|
||||||
'this'=36
|
'this'=36
|
||||||
'while'=37
|
'while'=37
|
||||||
'if'=38
|
'do'=38
|
||||||
'else'=39
|
'if'=39
|
||||||
'for'=40
|
'else'=40
|
||||||
'return'=41
|
'for'=41
|
||||||
'new'=42
|
'return'=42
|
||||||
'null'=46
|
'new'=43
|
||||||
|
'null'=47
|
||||||
|
@ -108,15 +108,15 @@ public interface SimpleJavaListener extends ParseTreeListener {
|
|||||||
*/
|
*/
|
||||||
void exitStatement(SimpleJavaParser.StatementContext ctx);
|
void exitStatement(SimpleJavaParser.StatementContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link SimpleJavaParser#block}.
|
* Enter a parse tree produced by {@link SimpleJavaParser#blockStatement}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void enterBlock(SimpleJavaParser.BlockContext ctx);
|
void enterBlockStatement(SimpleJavaParser.BlockStatementContext ctx);
|
||||||
/**
|
/**
|
||||||
* Exit a parse tree produced by {@link SimpleJavaParser#block}.
|
* Exit a parse tree produced by {@link SimpleJavaParser#blockStatement}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitBlock(SimpleJavaParser.BlockContext ctx);
|
void exitBlockStatement(SimpleJavaParser.BlockStatementContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link SimpleJavaParser#returnStatement}.
|
* Enter a parse tree produced by {@link SimpleJavaParser#returnStatement}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -147,6 +147,16 @@ public interface SimpleJavaListener extends ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitWhileStatement(SimpleJavaParser.WhileStatementContext ctx);
|
void exitWhileStatement(SimpleJavaParser.WhileStatementContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link SimpleJavaParser#doWhileStatement}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterDoWhileStatement(SimpleJavaParser.DoWhileStatementContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link SimpleJavaParser#doWhileStatement}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitDoWhileStatement(SimpleJavaParser.DoWhileStatementContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link SimpleJavaParser#forStatement}.
|
* Enter a parse tree produced by {@link SimpleJavaParser#forStatement}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -177,6 +187,16 @@ public interface SimpleJavaListener extends ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitIfStatement(SimpleJavaParser.IfStatementContext ctx);
|
void exitIfStatement(SimpleJavaParser.IfStatementContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link SimpleJavaParser#elseIfStatement}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterElseIfStatement(SimpleJavaParser.ElseIfStatementContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link SimpleJavaParser#elseIfStatement}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitElseIfStatement(SimpleJavaParser.ElseIfStatementContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link SimpleJavaParser#elseStatement}.
|
* Enter a parse tree produced by {@link SimpleJavaParser#elseStatement}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -71,11 +71,11 @@ public interface SimpleJavaVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
*/
|
*/
|
||||||
T visitStatement(SimpleJavaParser.StatementContext ctx);
|
T visitStatement(SimpleJavaParser.StatementContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link SimpleJavaParser#block}.
|
* Visit a parse tree produced by {@link SimpleJavaParser#blockStatement}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitBlock(SimpleJavaParser.BlockContext ctx);
|
T visitBlockStatement(SimpleJavaParser.BlockStatementContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link SimpleJavaParser#returnStatement}.
|
* Visit a parse tree produced by {@link SimpleJavaParser#returnStatement}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -94,6 +94,12 @@ public interface SimpleJavaVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitWhileStatement(SimpleJavaParser.WhileStatementContext ctx);
|
T visitWhileStatement(SimpleJavaParser.WhileStatementContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link SimpleJavaParser#doWhileStatement}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitDoWhileStatement(SimpleJavaParser.DoWhileStatementContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link SimpleJavaParser#forStatement}.
|
* Visit a parse tree produced by {@link SimpleJavaParser#forStatement}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -112,6 +118,12 @@ public interface SimpleJavaVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitIfStatement(SimpleJavaParser.IfStatementContext ctx);
|
T visitIfStatement(SimpleJavaParser.IfStatementContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link SimpleJavaParser#elseIfStatement}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitElseIfStatement(SimpleJavaParser.ElseIfStatementContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link SimpleJavaParser#elseStatement}.
|
* Visit a parse tree produced by {@link SimpleJavaParser#elseStatement}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
@ -6,9 +6,9 @@ program: classDeclaration+;
|
|||||||
classDeclaration: AccessModifier? 'class' Identifier OpenCurlyBracket memberDeclaration* ClosedCurlyBracket;
|
classDeclaration: AccessModifier? 'class' Identifier OpenCurlyBracket memberDeclaration* ClosedCurlyBracket;
|
||||||
memberDeclaration: constructorDeclaration | fieldDeclaration | methodDeclaration;
|
memberDeclaration: constructorDeclaration | fieldDeclaration | methodDeclaration;
|
||||||
|
|
||||||
constructorDeclaration: AccessModifier? Identifier OpenRoundBracket parameterList? ClosedRoundBracket block;
|
constructorDeclaration: AccessModifier? Identifier OpenRoundBracket parameterList? ClosedRoundBracket blockStatement;
|
||||||
fieldDeclaration: AccessModifier? type Identifier Semicolon;
|
fieldDeclaration: AccessModifier? type Identifier Semicolon;
|
||||||
methodDeclaration: MainMethodDeclaration block | AccessModifier? (type | Void) Identifier OpenRoundBracket parameterList? ClosedRoundBracket block;
|
methodDeclaration: MainMethodDeclaration blockStatement | AccessModifier? (type | Void) Identifier OpenRoundBracket parameterList? ClosedRoundBracket blockStatement;
|
||||||
|
|
||||||
parameterList: parameter (Comma parameter)*;
|
parameterList: parameter (Comma parameter)*;
|
||||||
parameter: type Identifier;
|
parameter: type Identifier;
|
||||||
@ -17,23 +17,26 @@ argumentList: (expression (Comma expression)*)?;
|
|||||||
// Anweisungen
|
// Anweisungen
|
||||||
statement: returnStatement Semicolon
|
statement: returnStatement Semicolon
|
||||||
| localVariableDeclaration Semicolon
|
| localVariableDeclaration Semicolon
|
||||||
| block
|
| blockStatement
|
||||||
| whileStatement
|
| whileStatement
|
||||||
|
| doWhileStatement
|
||||||
| forStatement
|
| forStatement
|
||||||
| ifElseStatement
|
| ifElseStatement
|
||||||
| statementExpression Semicolon;
|
| statementExpression Semicolon;
|
||||||
|
|
||||||
block: OpenCurlyBracket statement* ClosedCurlyBracket;
|
blockStatement: OpenCurlyBracket statement* ClosedCurlyBracket;
|
||||||
|
|
||||||
returnStatement: Return (expression)?;
|
returnStatement: Return (expression)?;
|
||||||
localVariableDeclaration: type Identifier (Assign expression)?;
|
localVariableDeclaration: type Identifier (Assign expression)?;
|
||||||
|
|
||||||
whileStatement: While OpenRoundBracket expression ClosedRoundBracket block;
|
whileStatement: While OpenRoundBracket expression ClosedRoundBracket blockStatement;
|
||||||
forStatement: For OpenRoundBracket (statementExpression | localVariableDeclaration) Semicolon (expression)? Semicolon (statementExpression)? ClosedRoundBracket block;
|
doWhileStatement: Do blockStatement While OpenRoundBracket expression ClosedRoundBracket Semicolon;
|
||||||
|
forStatement: For OpenRoundBracket (statementExpression | localVariableDeclaration) Semicolon (expression)? Semicolon (statementExpression)? ClosedRoundBracket blockStatement;
|
||||||
|
|
||||||
ifElseStatement: ifStatement elseStatement*;
|
ifElseStatement: ifStatement elseIfStatement* elseStatement?;
|
||||||
ifStatement: If OpenRoundBracket expression ClosedRoundBracket block;
|
ifStatement: If OpenRoundBracket expression ClosedRoundBracket blockStatement;
|
||||||
elseStatement: Else block;
|
elseIfStatement: Else If OpenRoundBracket expression ClosedRoundBracket blockStatement;
|
||||||
|
elseStatement: Else blockStatement;
|
||||||
|
|
||||||
statementExpression: assign | newDeclaration | methodCall | crementExpression;
|
statementExpression: assign | newDeclaration | methodCall | crementExpression;
|
||||||
assign: assignableExpression Assign expression;
|
assign: assignableExpression Assign expression;
|
||||||
@ -144,6 +147,7 @@ Comma: ',';
|
|||||||
Class: 'class';
|
Class: 'class';
|
||||||
This: 'this';
|
This: 'this';
|
||||||
While: 'while';
|
While: 'while';
|
||||||
|
Do: 'do';
|
||||||
If: 'if';
|
If: 'if';
|
||||||
Else: 'else';
|
Else: 'else';
|
||||||
For: 'for';
|
For: 'for';
|
||||||
|
@ -7,22 +7,21 @@ import java.util.List;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import ast.*;
|
import ast.*;
|
||||||
import ast.block.BlockNode;
|
import ast.expressions.IExpressionNode;
|
||||||
import ast.expression.IExpressionNode;
|
import ast.expressions.binaryexpressions.*;
|
||||||
import ast.expression.binaryexpression.*;
|
import ast.expressions.unaryexpressions.UnaryNode;
|
||||||
import ast.expression.unaryexpression.UnaryExpressionNode;
|
import ast.members.ConstructorNode;
|
||||||
import ast.member.*;
|
import ast.members.FieldNode;
|
||||||
import ast.parameter.ParameterNode;
|
import ast.members.MemberNode;
|
||||||
import ast.statement.*;
|
import ast.members.MethodNode;
|
||||||
import ast.statement.ifstatement.ElseStatementNode;
|
import ast.parameters.ParameterNode;
|
||||||
import ast.statement.ifstatement.IfElseStatementNode;
|
import ast.statementexpressions.AssignNode;
|
||||||
import ast.statement.ifstatement.IfStatementNode;
|
import ast.statementexpressions.AssignableNode;
|
||||||
import ast.statement.statementexpression.AssignStatementExpressionNode;
|
import ast.statementexpressions.NewDeclarationNode;
|
||||||
import ast.statement.statementexpression.AssignableExpressionNode;
|
import ast.statementexpressions.crementexpressions.DecrementNode;
|
||||||
import ast.statement.statementexpression.NewDeclarationStatementExpressionNode;
|
import ast.statementexpressions.crementexpressions.IncrementNode;
|
||||||
import ast.statement.statementexpression.crementExpression.DecrementExpressionNode;
|
import ast.statementexpressions.methodcallstatementnexpressions.MethodCallNode;
|
||||||
import ast.statement.statementexpression.crementExpression.IncrementExpressionNode;
|
import ast.statements.*;
|
||||||
import ast.statement.statementexpression.methodcallstatementnexpression.MethodCallStatementExpressionNode;
|
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
import semantic.context.Context;
|
import semantic.context.Context;
|
||||||
import semantic.exeptions.*;
|
import semantic.exeptions.*;
|
||||||
@ -174,12 +173,12 @@ public class SemanticAnalyzer implements SemanticVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(IfStatementNode toCheck) {
|
public TypeCheckResult analyze(IfNode toCheck) {
|
||||||
return new TypeCheckResult(true, null);
|
return new TypeCheckResult(true, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(ReturnStatementNode toCheck) {
|
public TypeCheckResult analyze(ReturnNode toCheck) {
|
||||||
|
|
||||||
if(toCheck.expression != null){
|
if(toCheck.expression != null){
|
||||||
var result = toCheck.expression.accept(this);
|
var result = toCheck.expression.accept(this);
|
||||||
@ -191,7 +190,7 @@ public class SemanticAnalyzer implements SemanticVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(WhileStatementNode toCheck) {
|
public TypeCheckResult analyze(WhileNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,24 +218,24 @@ public class SemanticAnalyzer implements SemanticVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(AssignableExpressionNode toCheck) {
|
public TypeCheckResult analyze(AssignableNode toCheck) {
|
||||||
return new TypeCheckResult(true, currentFields.get(toCheck.identifier));
|
return new TypeCheckResult(true, currentFields.get(toCheck.identifier));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(ElseStatementNode toCheck) {
|
public TypeCheckResult analyze(ElseNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(ForStatementNode toCheck) {
|
public TypeCheckResult analyze(ForNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(AssignStatementExpressionNode toCheck) {
|
public TypeCheckResult analyze(AssignNode toCheck) {
|
||||||
AssignableExpressionNode assignable = toCheck.assignable;
|
AssignableNode assignable = toCheck.assignable;
|
||||||
var oldNullType = currentNullType;
|
var oldNullType = currentNullType;
|
||||||
currentNullType = currentFields.get(toCheck.assignable.identifier);
|
currentNullType = currentFields.get(toCheck.assignable.identifier);
|
||||||
IExpressionNode rExpression = toCheck.expression;
|
IExpressionNode rExpression = toCheck.expression;
|
||||||
@ -274,17 +273,17 @@ public class SemanticAnalyzer implements SemanticVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(DecrementExpressionNode toCheck) {
|
public TypeCheckResult analyze(DecrementNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(IfElseStatementNode toCheck) {
|
public TypeCheckResult analyze(IfElseNode toCheck) {
|
||||||
return new TypeCheckResult(true, null);
|
return new TypeCheckResult(true, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(MethodCallStatementExpressionNode toCheck) {
|
public TypeCheckResult analyze(MethodCallNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -316,22 +315,22 @@ public class SemanticAnalyzer implements SemanticVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(NewDeclarationStatementExpressionNode toCheck) {
|
public TypeCheckResult analyze(NewDeclarationNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(IncrementExpressionNode toCheck) {
|
public TypeCheckResult analyze(IncrementNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(BinaryExpressionNode toCheck) {
|
public TypeCheckResult analyze(BinaryNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(CalculationExpressionNode calcNode) {
|
public TypeCheckResult analyze(CalculationNode calcNode) {
|
||||||
if (calcNode.calculationExpression != null) {
|
if (calcNode.calculationExpression != null) {
|
||||||
calcNode.calculationExpression.accept(this);
|
calcNode.calculationExpression.accept(this);
|
||||||
}
|
}
|
||||||
@ -339,22 +338,22 @@ public class SemanticAnalyzer implements SemanticVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(DotExpressionNode toCheck) {
|
public TypeCheckResult analyze(DotNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(DotSubstractionExpressionNode toCheck) {
|
public TypeCheckResult analyze(DotSubstractionNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(NonCalculationExpressionNode toCheck) {
|
public TypeCheckResult analyze(NonCalculationNode toCheck) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeCheckResult analyze(UnaryExpressionNode unary) {
|
public TypeCheckResult analyze(UnaryNode unary) {
|
||||||
var valid = true;
|
var valid = true;
|
||||||
|
|
||||||
if (currentScope.contains(unary.identifier)) {
|
if (currentScope.contains(unary.identifier)) {
|
||||||
|
@ -1,20 +1,17 @@
|
|||||||
package semantic;
|
package semantic;
|
||||||
|
|
||||||
|
|
||||||
import ast.*;
|
import ast.*;
|
||||||
import ast.block.BlockNode;
|
import ast.expressions.binaryexpressions.*;
|
||||||
import ast.expression.binaryexpression.*;
|
import ast.expressions.unaryexpressions.UnaryNode;
|
||||||
import ast.expression.unaryexpression.UnaryExpressionNode;
|
import ast.members.*;
|
||||||
import ast.member.*;
|
import ast.parameters.ParameterNode;
|
||||||
import ast.parameter.ParameterNode;
|
import ast.statementexpressions.AssignNode;
|
||||||
import ast.statement.*;
|
import ast.statementexpressions.AssignableNode;
|
||||||
import ast.statement.ifstatement.*;
|
import ast.statementexpressions.NewDeclarationNode;
|
||||||
import ast.statement.statementexpression.AssignStatementExpressionNode;
|
import ast.statementexpressions.crementexpressions.DecrementNode;
|
||||||
import ast.statement.statementexpression.AssignableExpressionNode;
|
import ast.statementexpressions.crementexpressions.IncrementNode;
|
||||||
import ast.statement.statementexpression.NewDeclarationStatementExpressionNode;
|
import ast.statementexpressions.methodcallstatementnexpressions.MethodCallNode;
|
||||||
import ast.statement.statementexpression.crementExpression.DecrementExpressionNode;
|
import ast.statements.*;
|
||||||
import ast.statement.statementexpression.crementExpression.IncrementExpressionNode;
|
|
||||||
import ast.statement.statementexpression.methodcallstatementnexpression.MethodCallStatementExpressionNode;
|
|
||||||
import typechecker.TypeCheckResult;
|
import typechecker.TypeCheckResult;
|
||||||
|
|
||||||
public interface SemanticVisitor {
|
public interface SemanticVisitor {
|
||||||
@ -27,46 +24,46 @@ public interface SemanticVisitor {
|
|||||||
|
|
||||||
TypeCheckResult analyze(FieldNode toCheck);
|
TypeCheckResult analyze(FieldNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(IfStatementNode toCheck);
|
TypeCheckResult analyze(IfNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(ReturnStatementNode toCheck);
|
TypeCheckResult analyze(ReturnNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(WhileStatementNode toCheck);
|
TypeCheckResult analyze(WhileNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(ParameterNode toCheck);
|
TypeCheckResult analyze(ParameterNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(BlockNode toCheck);
|
TypeCheckResult analyze(BlockNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(AssignableExpressionNode toCheck);
|
TypeCheckResult analyze(AssignableNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(ElseStatementNode toCheck);
|
TypeCheckResult analyze(ElseNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(ForStatementNode toCheck);
|
TypeCheckResult analyze(ForNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(AssignStatementExpressionNode toCheck);
|
TypeCheckResult analyze(AssignNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(DecrementExpressionNode toCheck);
|
TypeCheckResult analyze(DecrementNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(IfElseStatementNode toCheck);
|
TypeCheckResult analyze(IfElseNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(MethodCallStatementExpressionNode toCheck);
|
TypeCheckResult analyze(MethodCallNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(LocalVariableDeclarationNode toCheck);
|
TypeCheckResult analyze(LocalVariableDeclarationNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(NewDeclarationStatementExpressionNode toCheck);
|
TypeCheckResult analyze(NewDeclarationNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(IncrementExpressionNode toCheck);
|
TypeCheckResult analyze(IncrementNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(BinaryExpressionNode toCheck);
|
TypeCheckResult analyze(BinaryNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(CalculationExpressionNode toCheck);
|
TypeCheckResult analyze(CalculationNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(DotExpressionNode toCheck);
|
TypeCheckResult analyze(DotNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(DotSubstractionExpressionNode toCheck);
|
TypeCheckResult analyze(DotSubstractionNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(NonCalculationExpressionNode toCheck);
|
TypeCheckResult analyze(NonCalculationNode toCheck);
|
||||||
|
|
||||||
TypeCheckResult analyze(UnaryExpressionNode toCheck);
|
TypeCheckResult analyze(UnaryNode toCheck);
|
||||||
|
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
package semantic.context;
|
package semantic.context;
|
||||||
|
|
||||||
import ast.ClassNode;
|
import ast.ClassNode;
|
||||||
import ast.member.FieldNode;
|
import ast.members.FieldNode;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class ClassContext {
|
public class ClassContext {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package semantic.context;
|
package semantic.context;
|
||||||
|
|
||||||
import ast.member.FieldNode;
|
import ast.members.FieldNode;
|
||||||
import ast.type.*;
|
import ast.type.*;
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
|
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
package semantic;
|
package semantic;
|
||||||
|
|
||||||
import ast.*;
|
import ast.*;
|
||||||
import ast.block.BlockNode;
|
import ast.members.FieldNode;
|
||||||
import ast.member.FieldNode;
|
import ast.members.MethodNode;
|
||||||
import ast.member.MethodNode;
|
import ast.parameters.ParameterNode;
|
||||||
import ast.parameter.ParameterNode;
|
|
||||||
import ast.type.AccessModifierNode;
|
import ast.type.AccessModifierNode;
|
||||||
import ast.type.type.*;
|
import ast.type.type.*;
|
||||||
|
|
||||||
@ -43,7 +42,7 @@ public class Mocker {
|
|||||||
//Statements
|
//Statements
|
||||||
|
|
||||||
//Block
|
//Block
|
||||||
methodNode.block = new BlockNode();
|
methodNode.block = new ast.block.BlockStatementNode();
|
||||||
|
|
||||||
c.members.add(methodNode);
|
c.members.add(methodNode);
|
||||||
|
|
||||||
@ -58,7 +57,7 @@ public class Mocker {
|
|||||||
ClassNode c = new ClassNode();
|
ClassNode c = new ClassNode();
|
||||||
|
|
||||||
MethodNode methodNode = new MethodNode();
|
MethodNode methodNode = new MethodNode();
|
||||||
methodNode.block = new BlockNode();
|
methodNode.block = new ast.block.BlockStatementNode();
|
||||||
methodNode.setType(new BaseType(TypeEnum.INT));
|
methodNode.setType(new BaseType(TypeEnum.INT));
|
||||||
|
|
||||||
methodNode.setIdentifier("testMethod");
|
methodNode.setIdentifier("testMethod");
|
||||||
@ -66,7 +65,7 @@ public class Mocker {
|
|||||||
c.members.add(methodNode);
|
c.members.add(methodNode);
|
||||||
|
|
||||||
MethodNode methodNode1 = new MethodNode();
|
MethodNode methodNode1 = new MethodNode();
|
||||||
methodNode1.block = new BlockNode();
|
methodNode1.block = new ast.block.BlockStatementNode();
|
||||||
methodNode1.setType(new BaseType(TypeEnum.INT));
|
methodNode1.setType(new BaseType(TypeEnum.INT));
|
||||||
|
|
||||||
methodNode1.setIdentifier("testMethod");
|
methodNode1.setIdentifier("testMethod");
|
||||||
@ -84,13 +83,13 @@ public class Mocker {
|
|||||||
ClassNode c = new ClassNode();
|
ClassNode c = new ClassNode();
|
||||||
|
|
||||||
MethodNode methodNode = new MethodNode();
|
MethodNode methodNode = new MethodNode();
|
||||||
methodNode.block = new BlockNode();
|
methodNode.block = new ast.block.BlockStatementNode();
|
||||||
methodNode.setIdentifier("testMethod");
|
methodNode.setIdentifier("testMethod");
|
||||||
|
|
||||||
c.members.add(methodNode);
|
c.members.add(methodNode);
|
||||||
|
|
||||||
MethodNode methodNode1 = new MethodNode();
|
MethodNode methodNode1 = new MethodNode();
|
||||||
methodNode1.block = new BlockNode();
|
methodNode1.block = new ast.block.BlockStatementNode();
|
||||||
methodNode1.setIdentifier("testMethod1");
|
methodNode1.setIdentifier("testMethod1");
|
||||||
|
|
||||||
c.members.add(methodNode1);
|
c.members.add(methodNode1);
|
||||||
|
Loading…
Reference in New Issue
Block a user
Bin mir noch nicht ganz sicher ob des für meins sinvolle ist weil ich glaub ich brauche gar nicht alle Nodes für den TypCheck aber wir können es gerne so lassen.
Weiß ich auch nicht. Von mir ist das nicht
Achso ok🤣