mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-12-28 10:08:02 +00:00
wip update records
This commit is contained in:
commit
2b10b883a6
@ -2,7 +2,7 @@ package de.maishai;
|
||||
|
||||
import de.maishai.antlr.DecafBaseVisitor;
|
||||
import de.maishai.antlr.DecafParser;
|
||||
import de.maishai.ast.Statement;
|
||||
import de.maishai.ast.records.Statement;
|
||||
import de.maishai.ast.records.Block;
|
||||
import de.maishai.ast.records.LocalVariable;
|
||||
|
||||
|
@ -2,7 +2,7 @@ package de.maishai;
|
||||
|
||||
import de.maishai.antlr.DecafBaseVisitor;
|
||||
import de.maishai.antlr.DecafParser;
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.records.Expression;
|
||||
import de.maishai.ast.Operator;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.*;
|
||||
|
@ -2,8 +2,8 @@ package de.maishai;
|
||||
|
||||
import de.maishai.antlr.DecafBaseVisitor;
|
||||
import de.maishai.antlr.DecafParser;
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Statement;
|
||||
import de.maishai.ast.records.Expression;
|
||||
import de.maishai.ast.records.Statement;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.*;
|
||||
|
||||
|
@ -1,14 +0,0 @@
|
||||
package de.maishai.ast;
|
||||
|
||||
|
||||
import de.maishai.ast.records.Assignment;
|
||||
import de.maishai.ast.records.Binary;
|
||||
import de.maishai.ast.records.BoolConstant;
|
||||
import de.maishai.ast.records.CharConstant;
|
||||
import de.maishai.ast.records.Id;
|
||||
import de.maishai.ast.records.IntConstant;
|
||||
import de.maishai.ast.records.MethodCall;
|
||||
import de.maishai.ast.records.New;
|
||||
|
||||
public sealed interface Expression extends Node permits Assignment, Binary, BoolConstant, CharConstant, Id, IntConstant, MethodCall, New {
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package de.maishai.ast;
|
||||
|
||||
import de.maishai.ast.records.Block;
|
||||
import de.maishai.ast.records.Class;
|
||||
import de.maishai.ast.records.MainMethod;
|
||||
import de.maishai.ast.records.Method;
|
||||
import de.maishai.ast.records.Parameter;
|
||||
import de.maishai.ast.records.Program;
|
||||
import de.maishai.ast.records.Variable;
|
||||
|
||||
public sealed interface Node permits Expression, Statement, Block, Class, MainMethod, Method, Parameter, Program, Variable {
|
||||
}
|
@ -1,8 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
public record Assignment(Id loc, Expression value) implements Statement, Expression {
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Operator;
|
||||
|
||||
public record Binary(Expression left, Operator op, Expression right) implements Expression {
|
||||
|
@ -2,9 +2,6 @@ package de.maishai.ast.records;
|
||||
|
||||
|
||||
|
||||
import de.maishai.ast.Node;
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record Block(List<LocalVariable> vars, List<Statement> stmts) implements Node {
|
||||
|
@ -1,7 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
|
||||
public record BoolConstant(Boolean value) implements Expression {
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
public record Break() implements Statement {
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
|
||||
public record CharConstant(char value) implements Expression {
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
import de.maishai.ast.Node;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record Class(Id id , List<LocalVariable> variables, List<Method> methods) implements Node {
|
||||
|
@ -1,7 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
public record Continue() implements Statement {
|
||||
}
|
||||
|
@ -1,8 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
public record DoWhile(Block block, Expression cond) implements Statement {
|
||||
}
|
||||
|
5
src/main/java/de/maishai/ast/records/Expression.java
Normal file
5
src/main/java/de/maishai/ast/records/Expression.java
Normal file
@ -0,0 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
public sealed interface Expression extends Node permits Assignment, Binary, BoolConstant, CharConstant, Id, IntConstant, MethodCall, New {
|
||||
}
|
@ -1,8 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
public record For(Expression assign, Expression cond, Expression inc, Block block) implements Statement {
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
|
||||
public record Id(String name) implements Expression {
|
||||
}
|
||||
|
@ -1,6 +1,4 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Statement;
|
||||
public record IfElse(Expression cond, Block ifBlock, Block elseBlock) implements Statement {
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
|
||||
public record IntConstant(Integer value) implements Expression {
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Node;
|
||||
import de.maishai.ast.Type;
|
||||
|
||||
public record LocalVariable(Id name, Type type) implements Node {
|
||||
|
@ -1,11 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
|
||||
import de.maishai.ast.Node;
|
||||
import de.maishai.ast.ReturnType;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record MainMethod(Block block) implements Node {
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package de.maishai.ast.records;
|
||||
|
||||
|
||||
|
||||
import de.maishai.ast.Node;
|
||||
import de.maishai.ast.ReturnType;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -2,9 +2,6 @@ package de.maishai.ast.records;
|
||||
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record MethodCall(Id id, List<Expression> args) implements Expression, Statement {
|
||||
|
@ -2,8 +2,6 @@ package de.maishai.ast.records;
|
||||
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Statement;
|
||||
import de.maishai.ast.Type;
|
||||
|
||||
import java.util.List;
|
||||
|
4
src/main/java/de/maishai/ast/records/Node.java
Normal file
4
src/main/java/de/maishai/ast/records/Node.java
Normal file
@ -0,0 +1,4 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
public sealed interface Node permits Expression, Statement, Block, Class, MainMethod, Method, Parameter, Program, Variable {
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Node;
|
||||
import de.maishai.ast.Type;
|
||||
|
||||
public record Parameter(String name, Type type) implements Node {
|
||||
|
@ -1,8 +1,6 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Node;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record Program(List<Class> classes) implements Node {
|
||||
|
@ -1,8 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
public record Return(Expression ret) implements Statement {
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
public record ReturnVoid() implements Statement {
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package de.maishai.ast;
|
||||
package de.maishai.ast.records;
|
||||
|
||||
import de.maishai.ast.records.Break;
|
||||
import de.maishai.ast.records.Continue;
|
||||
@ -7,6 +7,7 @@ import de.maishai.ast.records.For;
|
||||
import de.maishai.ast.records.IfElse;
|
||||
import de.maishai.ast.records.MethodCall;
|
||||
import de.maishai.ast.records.New;
|
||||
import de.maishai.ast.records.Node;
|
||||
import de.maishai.ast.records.Return;
|
||||
import de.maishai.ast.records.ReturnVoid;
|
||||
import de.maishai.ast.records.While;
|
@ -1,8 +1,5 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Expression;
|
||||
import de.maishai.ast.Statement;
|
||||
|
||||
public record While(Expression cond, Block block) implements Statement {
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user