Skip to content

Commit

Permalink
Refactor codebase to improve maintainability
Browse files Browse the repository at this point in the history
- Import only used classes instead of wildcard imports
- Fully qualify class names instead of using imports
- Remove unused imports
- Use StringBuilder instead of StringBuffer for mutable strings
- Add missing @OverRide annotations
- Split long method/class names across multiple lines
- Fix formatting of string literals
- Add missing generic type parameters
- Remove unused local variables
- Add clarifying comments
- Fix typos
- Add Javadoc comments where applicable
  • Loading branch information
whtoo committed Nov 20, 2023
1 parent 40a3746 commit 72bd985
Show file tree
Hide file tree
Showing 47 changed files with 229 additions and 127 deletions.
4 changes: 3 additions & 1 deletion ep16/src/main/java/org/teachfx/antlr4/ep16/Compiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import org.teachfx.antlr4.ep16.visitor.LocalDefine;
import org.teachfx.antlr4.ep16.visitor.LocalResolver;

import java.io.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class Compiler {

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

package org.teachfx.antlr4.ep16.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.ep16.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,12 @@

package org.teachfx.antlr4.ep17.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.ep17.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,7 +2,8 @@

import org.teachfx.antlr4.ep17.misc.Graph;
import org.teachfx.antlr4.ep17.parser.CymbolBaseVisitor;
import org.teachfx.antlr4.ep17.parser.CymbolParser.*;
import org.teachfx.antlr4.ep17.parser.CymbolParser.ExprFuncCallContext;
import org.teachfx.antlr4.ep17.parser.CymbolParser.FunctionDeclContext;
public class CallGraphVisitor extends CymbolBaseVisitor<Object> {
public Graph callGraph;
private String currentFunctionName = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.ParseTreeWalker;
import org.teachfx.antlr4.ep18.stackvm.*;
import org.teachfx.antlr4.ep18.parser.VMAssemblerLexer;
import org.teachfx.antlr4.ep18.parser.VMAssemblerParser;
import org.teachfx.antlr4.ep18.stackvm.*;

import java.io.FileInputStream;
import java.io.InputStream;
Expand Down
4 changes: 2 additions & 2 deletions ep18/src/main/java/org/teachfx/antlr4/ep18/VMRunner.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.ParseTreeWalker;
import org.teachfx.antlr4.ep18.stackvm.ByteCodeAssembler;
import org.teachfx.antlr4.ep18.stackvm.BytecodeDefinition;
import org.teachfx.antlr4.ep18.parser.VMAssemblerLexer;
import org.teachfx.antlr4.ep18.parser.VMAssemblerParser;
import org.teachfx.antlr4.ep18.stackvm.ByteCodeAssembler;
import org.teachfx.antlr4.ep18.stackvm.BytecodeDefinition;

import java.io.FileInputStream;
import java.io.InputStream;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

package org.teachfx.antlr4.ep18.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 VMAssemblerLexer extends Lexer {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@

package org.teachfx.antlr4.ep18.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 VMAssemblerParser extends Parser {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import org.antlr.v4.runtime.Token;
import org.teachfx.antlr4.ep18.parser.VMAssemblerBaseListener;
import org.teachfx.antlr4.ep18.parser.VMAssemblerParser;
import org.teachfx.antlr4.ep18.parser.*;
import org.teachfx.antlr4.ep18.parser.VMAssemblerParser.*;
import org.teachfx.antlr4.ep18.parser.VMAssemblerParser.FunctionDeclarationContext;
import org.teachfx.antlr4.ep18.parser.VMAssemblerParser.GlobalsContext;
import org.teachfx.antlr4.ep18.parser.VMAssemblerParser.InstrContext;
import org.teachfx.antlr4.ep18.parser.VMAssemblerParser.LabelContext;

import java.util.ArrayList;
import java.util.HashMap;
Expand Down
5 changes: 4 additions & 1 deletion ep19/src/main/java/org/teachfx/antlr4/ep19/Compiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@
import org.teachfx.antlr4.ep19.pass.LocalDefine;
import org.teachfx.antlr4.ep19.pass.LocalResolver;

import java.io.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class Compiler {

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

package org.teachfx.antlr4.ep19.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.ep19.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,7 +2,10 @@

import org.teachfx.antlr4.ep19.misc.Util;
import org.teachfx.antlr4.ep19.parser.CymbolBaseVisitor;
import org.teachfx.antlr4.ep19.parser.CymbolParser.*;
import org.teachfx.antlr4.ep19.parser.CymbolParser.BlockContext;
import org.teachfx.antlr4.ep19.parser.CymbolParser.ExprFuncCallContext;
import org.teachfx.antlr4.ep19.parser.CymbolParser.FunctionDeclContext;
import org.teachfx.antlr4.ep19.parser.CymbolParser.StructDeclContext;

public abstract class CymbolASTVisitor<T> extends CymbolBaseVisitor<T> {
public String tab = "";
Expand Down
12 changes: 8 additions & 4 deletions ep19/src/main/java/org/teachfx/antlr4/ep19/pass/LocalDefine.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.tree.ParseTreeProperty;
import org.teachfx.antlr4.ep19.misc.Util;
import org.teachfx.antlr4.ep19.symtab.TypeTable;
import org.teachfx.antlr4.ep19.symtab.scope.*;
import org.teachfx.antlr4.ep19.symtab.symbol.*;
import org.teachfx.antlr4.ep19.parser.CymbolBaseVisitor;
import org.teachfx.antlr4.ep19.parser.CymbolParser.*;
import org.teachfx.antlr4.ep19.symtab.TypeTable;
import org.teachfx.antlr4.ep19.symtab.scope.BaseScope;
import org.teachfx.antlr4.ep19.symtab.scope.GlobalScope;
import org.teachfx.antlr4.ep19.symtab.scope.LocalScope;
import org.teachfx.antlr4.ep19.symtab.scope.Scope;
import org.teachfx.antlr4.ep19.symtab.symbol.MethodSymbol;
import org.teachfx.antlr4.ep19.symtab.symbol.StructSymbol;
import org.teachfx.antlr4.ep19.symtab.symbol.VariableSymbol;

/**
*
Expand Down
61 changes: 58 additions & 3 deletions ep20/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,61 @@ graph LR
### CFG

```mermaid
graph TD;
L0["iconst 0;istore 0;;iconst 7;igt"]
```
graph LR;
.def dec1: args=1 ,locals=1[t0 = @0;
t1 = 1 ;
t0 SUB t1;
jmp L1;
]
L1[ret;
]
.def main: args=0 ,locals=1[t0 = 10 ;
@0 = t0;
jmp L4;
]
L4[t0 = @0;
t1 = 0 ;
t0 GT t1;
jmpIf t0,L5,L6;
]
L5[t0 = @0;
t1 = 5 ;
t0 GT t1;
jmpIf t0,L7,L8;
]
L7[t0 = @0;
call print(args:1);
t0 = @0;
t1 = 7 ;
t0 EQ t1;
jmpIf t0,L9,L10;
]
L9[t0 = 7 ;
jmp L3;
]
L10[]
L8[t0 = "break" ;
call print(args:1);
t0 = @0;
call dec1(args:1);
@0 = t0;
jmp L4;
]
L6[t0 = 0 ;
jmp L3;
]
L3[halt;
]
L0 --> L1
L2 --> L4
L4 --> L5
L5 --> L7
L7 --> L9
L9 --> L10
L10 --> L8
L8 --> L6
L6 --> L3
```

3 changes: 1 addition & 2 deletions ep20/src/main/java/org/teachfx/antlr4/ep20/Compiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
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;
Expand Down Expand Up @@ -51,7 +50,7 @@ public static void main(String[] args) throws IOException {
astRoot.accept(irBuilder);

var cfg = irBuilder.getCFG();
logger.info("CFG:\n" + cfg);
logger.info("CFG:\n" + cfg.toString());

var assembler = new CymbolAssembler();
irBuilder.prog.accept(assembler);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public void setVal(T val) {
@Override
public String toString() {
if(val instanceof String) {
return " %s ".formatted(val);
return " '%s' ".formatted(val);
} else if (val instanceof Integer) {
return " %d ".formatted(val);
} else if (val instanceof Boolean) {
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.pass.cfg.LinearIRBlock;
import org.teachfx.antlr4.ep20.ir.IRVisitor;
import org.teachfx.antlr4.ep20.ir.expr.VarSlot;
import org.teachfx.antlr4.ep20.pass.cfg.LinearIRBlock;

public class CJMP extends Stmt {
public VarSlot cond;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.teachfx.antlr4.ep20.ir.stmt;

import org.teachfx.antlr4.ep20.pass.cfg.LinearIRBlock;
import org.teachfx.antlr4.ep20.ir.IRVisitor;
import org.teachfx.antlr4.ep20.pass.cfg.LinearIRBlock;

public class JMP extends Stmt
{
Expand Down
Loading

0 comments on commit 72bd985

Please sign in to comment.