├── .gitignore ├── README.md ├── Tutorial.md ├── Yx.iml ├── src ├── AST │ ├── ASTNode.java │ ├── ASTVisitor.java │ ├── ExprNode.java │ ├── FnRootNode.java │ ├── RootNode.java │ ├── StmtNode.java │ ├── assignExprNode.java │ ├── binaryExprNode.java │ ├── blockStmtNode.java │ ├── cmpExprNode.java │ ├── constExprNode.java │ ├── exprStmtNode.java │ ├── ifStmtNode.java │ ├── returnStmtNode.java │ ├── structDefNode.java │ ├── varDefStmtNode.java │ └── varExprNode.java ├── Assembly │ ├── AsmBlock.java │ ├── AsmFn.java │ ├── Inst │ │ ├── Bz.java │ │ ├── IType.java │ │ ├── Inst.java │ │ ├── Jp.java │ │ ├── Ld.java │ │ ├── Li.java │ │ ├── Mv.java │ │ ├── RType.java │ │ ├── Ret.java │ │ └── St.java │ └── Operand │ │ ├── Imm.java │ │ ├── Operand.java │ │ ├── PhyReg.java │ │ ├── Reg.java │ │ └── VirtualReg.java ├── Backend │ ├── AsmPrinter.java │ ├── IRBuilder.java │ ├── IRPrinter.java │ ├── InstSelector.java │ ├── Pass.java │ └── RegAlloc.java ├── Frontend │ ├── ASTBuilder.java │ ├── SemanticChecker.java │ └── SymbolCollector.java ├── MIR │ ├── binary.java │ ├── block.java │ ├── branch.java │ ├── constant.java │ ├── entity.java │ ├── jump.java │ ├── mainFn.java │ ├── register.java │ ├── ret.java │ ├── statement.java │ └── terminalStmt.java ├── Main.java ├── Parser │ ├── Yx.g4 │ ├── Yx.interp │ ├── Yx.tokens │ ├── YxBaseListener.java │ ├── YxBaseVisitor.java │ ├── YxLexer.interp │ ├── YxLexer.java │ ├── YxLexer.tokens │ ├── YxListener.java │ ├── YxParser.java │ └── YxVisitor.java └── Util │ ├── Scope.java │ ├── Type.java │ ├── YxErrorListener.java │ ├── error │ ├── error.java │ ├── internalError.java │ ├── semanticError.java │ └── syntaxError.java │ ├── globalScope.java │ └── position.java └── testcases ├── correct.yx ├── wrong1 - int not match.yx ├── wrong2 - bool not match.yx ├── wrong3 - variable undefined.yx └── wrong4 - multi definition.yx /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/README.md -------------------------------------------------------------------------------- /Tutorial.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/Tutorial.md -------------------------------------------------------------------------------- /Yx.iml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/Yx.iml -------------------------------------------------------------------------------- /src/AST/ASTNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/ASTNode.java -------------------------------------------------------------------------------- /src/AST/ASTVisitor.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/ASTVisitor.java -------------------------------------------------------------------------------- /src/AST/ExprNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/ExprNode.java -------------------------------------------------------------------------------- /src/AST/FnRootNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/FnRootNode.java -------------------------------------------------------------------------------- /src/AST/RootNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/RootNode.java -------------------------------------------------------------------------------- /src/AST/StmtNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/StmtNode.java -------------------------------------------------------------------------------- /src/AST/assignExprNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/assignExprNode.java -------------------------------------------------------------------------------- /src/AST/binaryExprNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/binaryExprNode.java -------------------------------------------------------------------------------- /src/AST/blockStmtNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/blockStmtNode.java -------------------------------------------------------------------------------- /src/AST/cmpExprNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/cmpExprNode.java -------------------------------------------------------------------------------- /src/AST/constExprNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/constExprNode.java -------------------------------------------------------------------------------- /src/AST/exprStmtNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/exprStmtNode.java -------------------------------------------------------------------------------- /src/AST/ifStmtNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/ifStmtNode.java -------------------------------------------------------------------------------- /src/AST/returnStmtNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/returnStmtNode.java -------------------------------------------------------------------------------- /src/AST/structDefNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/structDefNode.java -------------------------------------------------------------------------------- /src/AST/varDefStmtNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/varDefStmtNode.java -------------------------------------------------------------------------------- /src/AST/varExprNode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/AST/varExprNode.java -------------------------------------------------------------------------------- /src/Assembly/AsmBlock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/AsmBlock.java -------------------------------------------------------------------------------- /src/Assembly/AsmFn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/AsmFn.java -------------------------------------------------------------------------------- /src/Assembly/Inst/Bz.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/Bz.java -------------------------------------------------------------------------------- /src/Assembly/Inst/IType.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/IType.java -------------------------------------------------------------------------------- /src/Assembly/Inst/Inst.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/Inst.java -------------------------------------------------------------------------------- /src/Assembly/Inst/Jp.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/Jp.java -------------------------------------------------------------------------------- /src/Assembly/Inst/Ld.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/Ld.java -------------------------------------------------------------------------------- /src/Assembly/Inst/Li.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/Li.java -------------------------------------------------------------------------------- /src/Assembly/Inst/Mv.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/Mv.java -------------------------------------------------------------------------------- /src/Assembly/Inst/RType.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/RType.java -------------------------------------------------------------------------------- /src/Assembly/Inst/Ret.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/Ret.java -------------------------------------------------------------------------------- /src/Assembly/Inst/St.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Inst/St.java -------------------------------------------------------------------------------- /src/Assembly/Operand/Imm.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Operand/Imm.java -------------------------------------------------------------------------------- /src/Assembly/Operand/Operand.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Operand/Operand.java -------------------------------------------------------------------------------- /src/Assembly/Operand/PhyReg.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Operand/PhyReg.java -------------------------------------------------------------------------------- /src/Assembly/Operand/Reg.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Operand/Reg.java -------------------------------------------------------------------------------- /src/Assembly/Operand/VirtualReg.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Assembly/Operand/VirtualReg.java -------------------------------------------------------------------------------- /src/Backend/AsmPrinter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Backend/AsmPrinter.java -------------------------------------------------------------------------------- /src/Backend/IRBuilder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Backend/IRBuilder.java -------------------------------------------------------------------------------- /src/Backend/IRPrinter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Backend/IRPrinter.java -------------------------------------------------------------------------------- /src/Backend/InstSelector.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Backend/InstSelector.java -------------------------------------------------------------------------------- /src/Backend/Pass.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Backend/Pass.java -------------------------------------------------------------------------------- /src/Backend/RegAlloc.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Backend/RegAlloc.java -------------------------------------------------------------------------------- /src/Frontend/ASTBuilder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Frontend/ASTBuilder.java -------------------------------------------------------------------------------- /src/Frontend/SemanticChecker.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Frontend/SemanticChecker.java -------------------------------------------------------------------------------- /src/Frontend/SymbolCollector.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Frontend/SymbolCollector.java -------------------------------------------------------------------------------- /src/MIR/binary.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/binary.java -------------------------------------------------------------------------------- /src/MIR/block.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/block.java -------------------------------------------------------------------------------- /src/MIR/branch.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/branch.java -------------------------------------------------------------------------------- /src/MIR/constant.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/constant.java -------------------------------------------------------------------------------- /src/MIR/entity.java: -------------------------------------------------------------------------------- 1 | package MIR; 2 | 3 | public class entity { 4 | } 5 | -------------------------------------------------------------------------------- /src/MIR/jump.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/jump.java -------------------------------------------------------------------------------- /src/MIR/mainFn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/mainFn.java -------------------------------------------------------------------------------- /src/MIR/register.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/register.java -------------------------------------------------------------------------------- /src/MIR/ret.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/ret.java -------------------------------------------------------------------------------- /src/MIR/statement.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/statement.java -------------------------------------------------------------------------------- /src/MIR/terminalStmt.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/MIR/terminalStmt.java -------------------------------------------------------------------------------- /src/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Main.java -------------------------------------------------------------------------------- /src/Parser/Yx.g4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/Yx.g4 -------------------------------------------------------------------------------- /src/Parser/Yx.interp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/Yx.interp -------------------------------------------------------------------------------- /src/Parser/Yx.tokens: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/Yx.tokens -------------------------------------------------------------------------------- /src/Parser/YxBaseListener.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/YxBaseListener.java -------------------------------------------------------------------------------- /src/Parser/YxBaseVisitor.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/YxBaseVisitor.java -------------------------------------------------------------------------------- /src/Parser/YxLexer.interp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/YxLexer.interp -------------------------------------------------------------------------------- /src/Parser/YxLexer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/YxLexer.java -------------------------------------------------------------------------------- /src/Parser/YxLexer.tokens: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/YxLexer.tokens -------------------------------------------------------------------------------- /src/Parser/YxListener.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/YxListener.java -------------------------------------------------------------------------------- /src/Parser/YxParser.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/YxParser.java -------------------------------------------------------------------------------- /src/Parser/YxVisitor.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Parser/YxVisitor.java -------------------------------------------------------------------------------- /src/Util/Scope.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Util/Scope.java -------------------------------------------------------------------------------- /src/Util/Type.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Util/Type.java -------------------------------------------------------------------------------- /src/Util/YxErrorListener.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Util/YxErrorListener.java -------------------------------------------------------------------------------- /src/Util/error/error.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Util/error/error.java -------------------------------------------------------------------------------- /src/Util/error/internalError.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Util/error/internalError.java -------------------------------------------------------------------------------- /src/Util/error/semanticError.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Util/error/semanticError.java -------------------------------------------------------------------------------- /src/Util/error/syntaxError.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Util/error/syntaxError.java -------------------------------------------------------------------------------- /src/Util/globalScope.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Util/globalScope.java -------------------------------------------------------------------------------- /src/Util/position.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/src/Util/position.java -------------------------------------------------------------------------------- /testcases/correct.yx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/testcases/correct.yx -------------------------------------------------------------------------------- /testcases/wrong1 - int not match.yx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/testcases/wrong1 - int not match.yx -------------------------------------------------------------------------------- /testcases/wrong2 - bool not match.yx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/testcases/wrong2 - bool not match.yx -------------------------------------------------------------------------------- /testcases/wrong3 - variable undefined.yx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/testcases/wrong3 - variable undefined.yx -------------------------------------------------------------------------------- /testcases/wrong4 - multi definition.yx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZYHowell/Yx/HEAD/testcases/wrong4 - multi definition.yx --------------------------------------------------------------------------------