Skip to content

Commit

Permalink
1. [REFACTOR]::remove unused codes and import.
Browse files Browse the repository at this point in the history
  • Loading branch information
whtoo committed Oct 12, 2023
1 parent 6a93f50 commit f07c967
Show file tree
Hide file tree
Showing 17 changed files with 64 additions and 57 deletions.
7 changes: 4 additions & 3 deletions ep20/src/main/java/org/teachfx/antlr4/ep20/Compiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,17 @@
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import org.teachfx.antlr4.ep20.ast.ASTNode;
import org.teachfx.antlr4.ep20.parser.*;
import org.teachfx.antlr4.ep20.parser.CymbolLexer;
import org.teachfx.antlr4.ep20.parser.CymbolParser;
import org.teachfx.antlr4.ep20.pass.ast.CymbolASTBuilder;
import org.teachfx.antlr4.ep20.pass.codegen.CymbolAssembler;
import org.teachfx.antlr4.ep20.pass.ir.CymbolIRBuilder;
import org.teachfx.antlr4.ep20.pass.symtab.LocalDefine;
import org.teachfx.antlr4.ep20.pass.ast.CymbolASTBuilder;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;

public class Compiler {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.teachfx.antlr4.ep20.debugger.ast;

import org.teachfx.antlr4.ep20.ast.type.*;
import org.teachfx.antlr4.ep20.ast.type.TypeNode;
import org.teachfx.antlr4.ep20.parser.Location;
import org.teachfx.antlr4.ep20.symtab.type.Type;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.teachfx.antlr4.ep20.ir;

import org.teachfx.antlr4.ep20.ir.def.Func;
import org.teachfx.antlr4.ep20.ir.expr.Var;
import org.teachfx.antlr4.ep20.ir.expr.*;
import org.teachfx.antlr4.ep20.ir.stmt.*;

Expand Down
2 changes: 1 addition & 1 deletion ep20/src/main/java/org/teachfx/antlr4/ep20/ir/LValue.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.teachfx.antlr4.ep20.ir;

import org.teachfx.antlr4.ep20.ir.expr.Var;
import org.teachfx.antlr4.ep20.ir.expr.Expr;
import org.teachfx.antlr4.ep20.ir.expr.Var;

public class LValue extends IRNode {
protected Expr exprVal;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.teachfx.antlr4.ep20.ir.def;

import org.teachfx.antlr4.ep20.ast.stmt.BlockStmtNode;
import org.teachfx.antlr4.ep20.ir.IRNode;
import org.teachfx.antlr4.ep20.ir.IRVisitor;
import org.teachfx.antlr4.ep20.symtab.symbol.Symbol;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.teachfx.antlr4.ep20.ir.stmt;

import org.teachfx.antlr4.ep20.ir.IRVisitor;
import org.teachfx.antlr4.ep20.ir.expr.Var;
import org.teachfx.antlr4.ep20.ir.expr.Expr;
import org.teachfx.antlr4.ep20.ir.expr.Var;

public class Assign extends Stmt {
protected Var lhs;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import org.teachfx.antlr4.ep20.ir.IRVisitor;
import org.teachfx.antlr4.ep20.ir.expr.Expr;
import org.teachfx.antlr4.ep20.symtab.scope.Scope;

public class CJMP extends Stmt {
public Expr cond;
Expand Down
25 changes: 25 additions & 0 deletions ep20/src/main/java/org/teachfx/antlr4/ep20/ir/stmt/Label.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
import java.util.Objects;

public class Label extends Stmt {

private JumpEntryType entryType = JumpEntryType.blockType;
private Stmt nextEntry = null;

private String rawLabel;
private Scope scope;
protected int seq;
Expand Down Expand Up @@ -66,4 +69,26 @@ public void setEntryType(JumpEntryType entryType) {
public String toString() {
return toSource();
}

public Stmt getNextEntry() {
return nextEntry;
}

public void setNextEntry(Stmt nextEntry) {
this.nextEntry = nextEntry;
}

public boolean hasNextEntry() {
return Objects.nonNull(nextEntry) && nextEntry.getStmtType() != StmtType.LABEL;
}

public Stmt fetchNextJumpEntry() {
var item = getNextEntry();
Stmt stmtEntry = item;
while (item.getStmtType() == StmtType.LABEL) {
item = ((Label) item).getNextEntry();
}

return item;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class ReturnVal extends Stmt {
public ReturnVal(Expr retVal, Scope scope) {
retFuncLabel = new Label(null,scope);
retFuncLabel.setEntryType(JumpEntryType.funcType);
retFuncLabel.setNextEntry(this);
this.retVal = retVal;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

package org.teachfx.antlr4.ep20.parser;

import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.atn.ATN;
import org.antlr.v4.runtime.atn.ATNDeserializer;
import org.antlr.v4.runtime.atn.LexerATNSimulator;
import org.antlr.v4.runtime.atn.PredictionContextCache;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.misc.*;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
public class CymbolLexer extends Lexer {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@

package org.teachfx.antlr4.ep20.parser;

import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import org.antlr.v4.runtime.atn.ATN;
import org.antlr.v4.runtime.atn.ATNDeserializer;
import org.antlr.v4.runtime.atn.ParserATNSimulator;
import org.antlr.v4.runtime.atn.PredictionContextCache;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.tree.ParseTreeListener;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
import org.antlr.v4.runtime.tree.TerminalNode;

import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
public class CymbolParser extends Parser {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@

import org.teachfx.antlr4.ep20.ir.IRVisitor;
import org.teachfx.antlr4.ep20.ir.Prog;
import org.teachfx.antlr4.ep20.ir.def.*;
import org.teachfx.antlr4.ep20.ir.def.Func;
import org.teachfx.antlr4.ep20.ir.expr.*;
import org.teachfx.antlr4.ep20.ir.stmt.*;
import org.teachfx.antlr4.ep20.symtab.symbol.MethodSymbol;
import org.teachfx.antlr4.ep20.symtab.symbol.VariableSymbol;

import java.io.*;
import java.io.OutputStreamWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import org.teachfx.antlr4.ep20.ast.expr.*;
import org.teachfx.antlr4.ep20.ast.stmt.*;
import org.teachfx.antlr4.ep20.ast.type.TypeNode;
import org.teachfx.antlr4.ep20.ir.JumpEntryType;
import org.teachfx.antlr4.ep20.ir.Prog;
import org.teachfx.antlr4.ep20.ir.def.Func;
import org.teachfx.antlr4.ep20.ir.expr.*;
Expand All @@ -25,7 +24,7 @@ public class CymbolIRBuilder implements ASTVisitor<Void, Expr> {
public Prog root = null;
private Func currentFunc = null;
private List<Stmt> stmts;
private Stack<Label> labelStack;
private Stack<Label> breakStack;
private Stack<Label> continueStack;
private Stack<Label> returnBlockStack;

Expand Down Expand Up @@ -53,21 +52,21 @@ public Void visit(FuncDeclNode funcDeclNode) {
/**/
stmts = new ArrayList<>();
/**/
labelStack = new Stack<>();
breakStack = new Stack<>();
continueStack = new Stack<>();
returnBlockStack = new Stack<>();

currentFunc = new Func(funcDeclNode.getDeclName(), (MethodSymbol) funcDeclNode.getRefSymbol(), stmts);

setRetHook(methodSymbolStack.peek());

pushReturnEntry(currentFunc.retHook.retFuncLabel);
pushExitEntry(currentFunc.retHook.retFuncLabel);

transformBlockStmt(funcDeclNode.getBody());

currentFunc.setBody(stmts);

popReturnEntry();
popExitEntry();

root.addFunc(currentFunc);

Expand Down Expand Up @@ -196,7 +195,7 @@ public Void visit(ExprStmtNode exprStmtNode) {
public Void visit(ReturnStmtNode returnStmtNode) {
var retVal = (Expr) visit(returnStmtNode.getRetNode());
addStmt(new ExprStmt(retVal));
jump(currentReturnEntry());
jump(currentExitEntry());
return null;
}

Expand All @@ -206,7 +205,7 @@ public Void visit(WhileStmtNode whileStmtNode) {
var thenLabel = new Label(null, whileStmtNode.getScope());
var endLabel = new Label(null, whileStmtNode.getScope());

// endLabel = currentReturnEntry();
pushExitEntry(endLabel);

pushBreakTarget(endLabel);
pushContinueTarget(beginLabel);
Expand All @@ -216,9 +215,9 @@ public Void visit(WhileStmtNode whileStmtNode) {
label(thenLabel);
transformBlockStmt(whileStmtNode.getBlockNode());
jump(beginLabel);
if (endLabel.getEntryType() == JumpEntryType.blockType) {
label(endLabel);
}

label(endLabel);

popBreakTarget();
popContinueTarget();
return null;
Expand Down Expand Up @@ -254,14 +253,10 @@ protected void addStmt(Stmt stmt) {
}

protected void jump(Label thenLabel) {
System.out.println(thenLabel.toSource());
addStmt(new JMP(thenLabel));
}

protected void label(Label label) {
if (label.toSource().equalsIgnoreCase("Local_Local_fib_0")) {
System.out.println(">>>>=====");
}
addStmt(label);
}

Expand All @@ -270,47 +265,38 @@ protected void cjump(Expr cond, Label thenLabel, Label elseLabel) {
}

protected Label currentBreakTarget() {
return labelStack.peek();
return breakStack.peek();
}

private Label currentContinueTarget() {
return continueStack.peek();
}

protected void pushBreakTarget(Label label) {
labelStack.push(label);
breakStack.push(label);
}

protected void pushContinueTarget(Label label) {
continueStack.push(label);
}

protected void popBreakTarget() {
labelStack.pop();
breakStack.pop();
}

protected void popContinueTarget() {
continueStack.pop();
}

protected void pushReturnEntry(Label retLabel) {

if (returnBlockStack.isEmpty()) {
returnBlockStack.push(retLabel);
return;
}

if (returnBlockStack.peek().getEntryType() == JumpEntryType.funcType && retLabel.getEntryType() == JumpEntryType.blockType) {
return;
}
protected void pushExitEntry(Label retLabel) {
returnBlockStack.push(retLabel);
}

protected void popReturnEntry() {
protected void popExitEntry() {
returnBlockStack.pop();
}

protected Label currentReturnEntry() {
protected Label currentExitEntry() {
return returnBlockStack.peek();
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.teachfx.antlr4.ep20.pass.sematic;

import org.teachfx.antlr4.ep20.ast.decl.FuncDeclNode;
import org.teachfx.antlr4.ep20.ast.decl.VarDeclListNode;
import org.teachfx.antlr4.ep20.ast.decl.VarDeclNode;
import org.teachfx.antlr4.ep20.ast.expr.*;
import org.teachfx.antlr4.ep20.ast.stmt.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package org.teachfx.antlr4.ep20.symtab.symbol;

import org.teachfx.antlr4.ep20.ast.ASTNode;
import org.teachfx.antlr4.ep20.ast.expr.ExprNode;
import org.teachfx.antlr4.ep20.ast.stmt.ScopeType;
import org.teachfx.antlr4.ep20.ast.stmt.StmtNode;
import org.teachfx.antlr4.ep20.symtab.scope.Scope;
import org.teachfx.antlr4.ep20.symtab.type.Type;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.teachfx.antlr4.ep20.symtab.symbol;

import org.teachfx.antlr4.ep20.ast.ASTNode;
import org.teachfx.antlr4.ep20.symtab.type.Type;
import org.teachfx.antlr4.ep20.symtab.scope.Scope;
import org.teachfx.antlr4.ep20.symtab.type.Type;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import org.teachfx.antlr4.ep20.debugger.ast.Dumpable;
import org.teachfx.antlr4.ep20.debugger.ast.Dumper;
import org.teachfx.antlr4.ep20.symtab.type.Type;
import org.teachfx.antlr4.ep20.symtab.scope.Scope;
import org.teachfx.antlr4.ep20.symtab.type.Type;

import java.util.Objects;

Expand Down

0 comments on commit f07c967

Please sign in to comment.