实例介绍
自己用JAVA实现一个从MINIJAVA转换成MIPS的编译器,最终能跑在MIPS机器上
【实例截图】
【核心代码】
4744302543315019302.zip
├── MiniJava
│ ├── bin
│ │ ├── kanga
│ │ │ ├── JavaCharStream.class
│ │ │ ├── JTBToolkit.class
│ │ │ ├── kanga2mips
│ │ │ │ └── Main.class
│ │ │ ├── KangaParser.class
│ │ │ ├── KangaParserConstants.class
│ │ │ ├── KangaParserTokenManager.class
│ │ │ ├── ParseException.class
│ │ │ ├── syntaxtree
│ │ │ │ ├── ALoadStmt.class
│ │ │ │ ├── AStoreStmt.class
│ │ │ │ ├── BinOp.class
│ │ │ │ ├── CallStmt.class
│ │ │ │ ├── CJumpStmt.class
│ │ │ │ ├── ErrorStmt.class
│ │ │ │ ├── Exp.class
│ │ │ │ ├── Goal.class
│ │ │ │ ├── HAllocate.class
│ │ │ │ ├── HLoadStmt.class
│ │ │ │ ├── HStoreStmt.class
│ │ │ │ ├── IntegerLiteral.class
│ │ │ │ ├── JumpStmt.class
│ │ │ │ ├── Label.class
│ │ │ │ ├── MoveStmt.class
│ │ │ │ ├── NodeChoice.class
│ │ │ │ ├── Node.class
│ │ │ │ ├── NodeList.class
│ │ │ │ ├── NodeListInterface.class
│ │ │ │ ├── NodeListOptional.class
│ │ │ │ ├── NodeOptional.class
│ │ │ │ ├── NodeSequence.class
│ │ │ │ ├── NodeToken.class
│ │ │ │ ├── NoOpStmt.class
│ │ │ │ ├── Operator.class
│ │ │ │ ├── PassArgStmt.class
│ │ │ │ ├── PrintStmt.class
│ │ │ │ ├── Procedure.class
│ │ │ │ ├── Reg.class
│ │ │ │ ├── SimpleExp.class
│ │ │ │ ├── SpilledArg.class
│ │ │ │ ├── Stmt.class
│ │ │ │ └── StmtList.class
│ │ │ ├── Token.class
│ │ │ ├── TokenMgrError.class
│ │ │ └── visitor
│ │ │ ├── DepthFirstVisitor.class
│ │ │ ├── GJDepthFirst.class
│ │ │ ├── GJNoArguDepthFirst.class
│ │ │ ├── GJNoArguVisitor.class
│ │ │ ├── GJVisitor.class
│ │ │ ├── GJVoidDepthFirst.class
│ │ │ ├── GJVoidVisitor.class
│ │ │ ├── Kanga2MipsVisitor.class
│ │ │ └── Visitor.class
│ │ ├── Main.class
│ │ ├── minijava
│ │ │ ├── JavaCharStream.class
│ │ │ ├── JTBToolkit.class
│ │ │ ├── minijava2piglet
│ │ │ │ └── Main.class
│ │ │ ├── MiniJavaParser$JJCalls.class
│ │ │ ├── MiniJavaParser$LookaheadSuccess.class
│ │ │ ├── MiniJavaParser.class
│ │ │ ├── MiniJavaParserConstants.class
│ │ │ ├── MiniJavaParserTokenManager.class
│ │ │ ├── ParseException.class
│ │ │ ├── symboltable
│ │ │ │ ├── LabelManager.class
│ │ │ │ ├── MArray.class
│ │ │ │ ├── MBoolean.class
│ │ │ │ ├── MClass.class
│ │ │ │ ├── MClasses.class
│ │ │ │ ├── MIdentifier.class
│ │ │ │ ├── MInteger.class
│ │ │ │ ├── MLabel.class
│ │ │ │ ├── MMethod.class
│ │ │ │ ├── MParameters.class
│ │ │ │ ├── MTemp.class
│ │ │ │ ├── MType.class
│ │ │ │ └── TempManager.class
│ │ │ ├── syntaxtree
│ │ │ │ ├── AllocationExpression.class
│ │ │ │ ├── AndExpression.class
│ │ │ │ ├── ArrayAllocationExpression.class
│ │ │ │ ├── ArrayAssignmentStatement.class
│ │ │ │ ├── ArrayLength.class
│ │ │ │ ├── ArrayLookup.class
│ │ │ │ ├── ArrayType.class
│ │ │ │ ├── AssignmentStatement.class
│ │ │ │ ├── Block.class
│ │ │ │ ├── BooleanType.class
│ │ │ │ ├── BracketExpression.class
│ │ │ │ ├── ClassDeclaration.class
│ │ │ │ ├── ClassExtendsDeclaration.class
│ │ │ │ ├── CompareExpression.class
│ │ │ │ ├── Expression.class
│ │ │ │ ├── ExpressionList.class
│ │ │ │ ├── ExpressionRest.class
│ │ │ │ ├── FalseLiteral.class
│ │ │ │ ├── FormalParameter.class
│ │ │ │ ├── FormalParameterList.class
│ │ │ │ ├── FormalParameterRest.class
│ │ │ │ ├── Goal.class
│ │ │ │ ├── Identifier.class
│ │ │ │ ├── IfStatement.class
│ │ │ │ ├── IntegerLiteral.class
│ │ │ │ ├── IntegerType.class
│ │ │ │ ├── MainClass.class
│ │ │ │ ├── MessageSend.class
│ │ │ │ ├── MethodDeclaration.class
│ │ │ │ ├── MinusExpression.class
│ │ │ │ ├── NodeChoice.class
│ │ │ │ ├── Node.class
│ │ │ │ ├── NodeList.class
│ │ │ │ ├── NodeListInterface.class
│ │ │ │ ├── NodeListOptional.class
│ │ │ │ ├── NodeOptional.class
│ │ │ │ ├── NodeSequence.class
│ │ │ │ ├── NodeToken.class
│ │ │ │ ├── NotExpression.class
│ │ │ │ ├── PlusExpression.class
│ │ │ │ ├── PrimaryExpression.class
│ │ │ │ ├── PrintStatement.class
│ │ │ │ ├── Statement.class
│ │ │ │ ├── ThisExpression.class
│ │ │ │ ├── TimesExpression.class
│ │ │ │ ├── TrueLiteral.class
│ │ │ │ ├── Type.class
│ │ │ │ ├── TypeDeclaration.class
│ │ │ │ ├── VarDeclaration.class
│ │ │ │ └── WhileStatement.class
│ │ │ ├── Token.class
│ │ │ ├── TokenMgrError.class
│ │ │ ├── typecheck
│ │ │ │ └── Main.class
│ │ │ └── visitor
│ │ │ ├── BuildSymbolTableVisitor.class
│ │ │ ├── CheckExtendsVisitor.class
│ │ │ ├── DepthFirstVisitor.class
│ │ │ ├── GJDepthFirst.class
│ │ │ ├── GJNoArguDepthFirst.class
│ │ │ ├── GJNoArguVisitor.class
│ │ │ ├── GJVisitor.class
│ │ │ ├── GJVoidDepthFirst.class
│ │ │ ├── GJVoidVisitor.class
│ │ │ ├── Minijava2PigletVisitor.class
│ │ │ ├── TypeCheckVisitor.class
│ │ │ └── Visitor.class
│ │ ├── piglet
│ │ │ ├── JavaCharStream.class
│ │ │ ├── JTBToolkit.class
│ │ │ ├── ParseException.class
│ │ │ ├── piglet2spiglet
│ │ │ │ ├── Main$1.class
│ │ │ │ └── Main.class
│ │ │ ├── PigletParser.class
│ │ │ ├── PigletParserConstants.class
│ │ │ ├── PigletParserTokenManager.class
│ │ │ ├── syntaxtree
│ │ │ │ ├── BinOp.class
│ │ │ │ ├── Call.class
│ │ │ │ ├── CJumpStmt.class
│ │ │ │ ├── ErrorStmt.class
│ │ │ │ ├── Exp.class
│ │ │ │ ├── Goal.class
│ │ │ │ ├── HAllocate.class
│ │ │ │ ├── HLoadStmt.class
│ │ │ │ ├── HStoreStmt.class
│ │ │ │ ├── IntegerLiteral.class
│ │ │ │ ├── JumpStmt.class
│ │ │ │ ├── Label.class
│ │ │ │ ├── MoveStmt.class
│ │ │ │ ├── NodeChoice.class
│ │ │ │ ├── Node.class
│ │ │ │ ├── NodeList.class
│ │ │ │ ├── NodeListInterface.class
│ │ │ │ ├── NodeListOptional.class
│ │ │ │ ├── NodeOptional.class
│ │ │ │ ├── NodeSequence.class
│ │ │ │ ├── NodeToken.class
│ │ │ │ ├── NoOpStmt.class
│ │ │ │ ├── Operator.class
│ │ │ │ ├── PrintStmt.class
│ │ │ │ ├── Procedure.class
│ │ │ │ ├── Stmt.class
│ │ │ │ ├── StmtExp.class
│ │ │ │ ├── StmtList.class
│ │ │ │ └── Temp.class
│ │ │ ├── Token.class
│ │ │ ├── TokenMgrError.class
│ │ │ └── visitor
│ │ │ ├── DepthFirstVisitor.class
│ │ │ ├── GJDepthFirst.class
│ │ │ ├── GJNoArguDepthFirst.class
│ │ │ ├── GJNoArguVisitor.class
│ │ │ ├── GJVisitor.class
│ │ │ ├── GJVoidDepthFirst.class
│ │ │ ├── GJVoidVisitor.class
│ │ │ └── Visitor.class
│ │ └── spiglet
│ │ ├── JavaCharStream.class
│ │ ├── JTBToolkit.class
│ │ ├── ParseException.class
│ │ ├── spiglet2kanga
│ │ │ └── Main.class
│ │ ├── SpigletParser.class
│ │ ├── SpigletParserConstants.class
│ │ ├── SpigletParserTokenManager.class
│ │ ├── SymbolTable
│ │ │ ├── AllFlowGraphs.class
│ │ │ ├── FlowGraph.class
│ │ │ ├── FlowGraphNode.class
│ │ │ ├── InterferenceGraph$MergeNodeType.class
│ │ │ ├── InterferenceGraph.class
│ │ │ ├── MyBitSet.class
│ │ │ ├── NodeManager.class
│ │ │ ├── ParameterTemp.class
│ │ │ ├── TempReference.class
│ │ │ └── TempStructType.class
│ │ ├── syntaxtree
│ │ │ ├── BinOp.class
│ │ │ ├── Call.class
│ │ │ ├── CJumpStmt.class
│ │ │ ├── ErrorStmt.class
│ │ │ ├── Exp.class
│ │ │ ├── Goal.class
│ │ │ ├── HAllocate.class
│ │ │ ├── HLoadStmt.class
│ │ │ ├── HStoreStmt.class
│ │ │ ├── IntegerLiteral.class
│ │ │ ├── JumpStmt.class
│ │ │ ├── Label.class
│ │ │ ├── MoveStmt.class
│ │ │ ├── NodeChoice.class
│ │ │ ├── Node.class
│ │ │ ├── NodeList.class
│ │ │ ├── NodeListInterface.class
│ │ │ ├── NodeListOptional.class
│ │ │ ├── NodeOptional.class
│ │ │ ├── NodeSequence.class
│ │ │ ├── NodeToken.class
│ │ │ ├── NoOpStmt.class
│ │ │ ├── Operator.class
│ │ │ ├── PrintStmt.class
│ │ │ ├── Procedure.class
│ │ │ ├── SimpleExp.class
│ │ │ ├── Stmt.class
│ │ │ ├── StmtExp.class
│ │ │ ├── StmtList.class
│ │ │ └── Temp.class
│ │ ├── Token.class
│ │ ├── TokenMgrError.class
│ │ └── visitor
│ │ ├── BuildFlowGraphVisitor.class
│ │ ├── DepthFirstVisitor.class
│ │ ├── GJDepthFirst.class
│ │ ├── GJNoArguDepthFirst.class
│ │ ├── GJNoArguVisitor.class
│ │ ├── GJVisitor.class
│ │ ├── GJVoidDepthFirst.class
│ │ ├── GJVoidVisitor.class
│ │ ├── Spiglet2KangaVisitor.class
│ │ └── Visitor.class
│ └── src
│ ├── kanga
│ │ ├── JavaCharStream.java
│ │ ├── kanga2mips
│ │ │ └── Main.java
│ │ ├── KangaParserConstants.java
│ │ ├── KangaParser.java
│ │ ├── KangaParserTokenManager.java
│ │ ├── ParseException.java
│ │ ├── syntaxtree
│ │ │ ├── ALoadStmt.java
│ │ │ ├── AStoreStmt.java
│ │ │ ├── BinOp.java
│ │ │ ├── CallStmt.java
│ │ │ ├── CJumpStmt.java
│ │ │ ├── ErrorStmt.java
│ │ │ ├── Exp.java
│ │ │ ├── Goal.java
│ │ │ ├── HAllocate.java
│ │ │ ├── HLoadStmt.java
│ │ │ ├── HStoreStmt.java
│ │ │ ├── IntegerLiteral.java
│ │ │ ├── JumpStmt.java
│ │ │ ├── Label.java
│ │ │ ├── MoveStmt.java
│ │ │ ├── NodeChoice.java
│ │ │ ├── Node.java
│ │ │ ├── NodeListInterface.java
│ │ │ ├── NodeList.java
│ │ │ ├── NodeListOptional.java
│ │ │ ├── NodeOptional.java
│ │ │ ├── NodeSequence.java
│ │ │ ├── NodeToken.java
│ │ │ ├── NoOpStmt.java
│ │ │ ├── Operator.java
│ │ │ ├── PassArgStmt.java
│ │ │ ├── PrintStmt.java
│ │ │ ├── Procedure.java
│ │ │ ├── Reg.java
│ │ │ ├── SimpleExp.java
│ │ │ ├── SpilledArg.java
│ │ │ ├── Stmt.java
│ │ │ └── StmtList.java
│ │ ├── Token.java
│ │ ├── TokenMgrError.java
│ │ └── visitor
│ │ ├── DepthFirstVisitor.java
│ │ ├── GJDepthFirst.java
│ │ ├── GJNoArguDepthFirst.java
│ │ ├── GJNoArguVisitor.java
│ │ ├── GJVisitor.java
│ │ ├── GJVoidDepthFirst.java
│ │ ├── GJVoidVisitor.java
│ │ ├── Kanga2MipsVisitor.java
│ │ └── Visitor.java
│ ├── Main.java
│ ├── minijava
│ │ ├── JavaCharStream.java
│ │ ├── minijava2piglet
│ │ │ └── Main.java
│ │ ├── MiniJavaParserConstants.java
│ │ ├── MiniJavaParser.java
│ │ ├── MiniJavaParserTokenManager.java
│ │ ├── ParseException.java
│ │ ├── symboltable
│ │ │ ├── LabelManager.java
│ │ │ ├── MArray.java
│ │ │ ├── MBoolean.java
│ │ │ ├── MClasses.java
│ │ │ ├── MClass.java
│ │ │ ├── MIdentifier.java
│ │ │ ├── MInteger.java
│ │ │ ├── MLabel.java
│ │ │ ├── MMethod.java
│ │ │ ├── MParameters.java
│ │ │ ├── MTemp.java
│ │ │ ├── MType.java
│ │ │ └── TempManager.java
│ │ ├── syntaxtree
│ │ │ ├── AllocationExpression.java
│ │ │ ├── AndExpression.java
│ │ │ ├── ArrayAllocationExpression.java
│ │ │ ├── ArrayAssignmentStatement.java
│ │ │ ├── ArrayLength.java
│ │ │ ├── ArrayLookup.java
│ │ │ ├── ArrayType.java
│ │ │ ├── AssignmentStatement.java
│ │ │ ├── Block.java
│ │ │ ├── BooleanType.java
│ │ │ ├── BracketExpression.java
│ │ │ ├── ClassDeclaration.java
│ │ │ ├── ClassExtendsDeclaration.java
│ │ │ ├── CompareExpression.java
│ │ │ ├── Expression.java
│ │ │ ├── ExpressionList.java
│ │ │ ├── ExpressionRest.java
│ │ │ ├── FalseLiteral.java
│ │ │ ├── FormalParameter.java
│ │ │ ├── FormalParameterList.java
│ │ │ ├── FormalParameterRest.java
│ │ │ ├── Goal.java
│ │ │ ├── Identifier.java
│ │ │ ├── IfStatement.java
│ │ │ ├── IntegerLiteral.java
│ │ │ ├── IntegerType.java
│ │ │ ├── MainClass.java
│ │ │ ├── MessageSend.java
│ │ │ ├── MethodDeclaration.java
│ │ │ ├── MinusExpression.java
│ │ │ ├── NodeChoice.java
│ │ │ ├── Node.java
│ │ │ ├── NodeListInterface.java
│ │ │ ├── NodeList.java
│ │ │ ├── NodeListOptional.java
│ │ │ ├── NodeOptional.java
│ │ │ ├── NodeSequence.java
│ │ │ ├── NodeToken.java
│ │ │ ├── NotExpression.java
│ │ │ ├── PlusExpression.java
│ │ │ ├── PrimaryExpression.java
│ │ │ ├── PrintStatement.java
│ │ │ ├── Statement.java
│ │ │ ├── ThisExpression.java
│ │ │ ├── TimesExpression.java
│ │ │ ├── TrueLiteral.java
│ │ │ ├── TypeDeclaration.java
│ │ │ ├── Type.java
│ │ │ ├── VarDeclaration.java
│ │ │ └── WhileStatement.java
│ │ ├── Token.java
│ │ ├── TokenMgrError.java
│ │ ├── typecheck
│ │ │ └── Main.java
│ │ └── visitor
│ │ ├── BuildSymbolTableVisitor.java
│ │ ├── CheckExtendsVisitor.java
│ │ ├── DepthFirstVisitor.java
│ │ ├── GJDepthFirst.java
│ │ ├── GJNoArguDepthFirst.java
│ │ ├── GJNoArguVisitor.java
│ │ ├── GJVisitor.java
│ │ ├── GJVoidDepthFirst.java
│ │ ├── GJVoidVisitor.java
│ │ ├── Minijava2PigletVisitor.java
│ │ ├── TypeCheckVisitor.java
│ │ └── Visitor.java
│ ├── piglet
│ │ ├── JavaCharStream.java
│ │ ├── ParseException.java
│ │ ├── piglet2spiglet
│ │ │ └── Main.java
│ │ ├── PigletParserConstants.java
│ │ ├── PigletParser.java
│ │ ├── PigletParserTokenManager.java
│ │ ├── syntaxtree
│ │ │ ├── BinOp.java
│ │ │ ├── Call.java
│ │ │ ├── CJumpStmt.java
│ │ │ ├── ErrorStmt.java
│ │ │ ├── Exp.java
│ │ │ ├── Goal.java
│ │ │ ├── HAllocate.java
│ │ │ ├── HLoadStmt.java
│ │ │ ├── HStoreStmt.java
│ │ │ ├── IntegerLiteral.java
│ │ │ ├── JumpStmt.java
│ │ │ ├── Label.java
│ │ │ ├── MoveStmt.java
│ │ │ ├── NodeChoice.java
│ │ │ ├── Node.java
│ │ │ ├── NodeListInterface.java
│ │ │ ├── NodeList.java
│ │ │ ├── NodeListOptional.java
│ │ │ ├── NodeOptional.java
│ │ │ ├── NodeSequence.java
│ │ │ ├── NodeToken.java
│ │ │ ├── NoOpStmt.java
│ │ │ ├── Operator.java
│ │ │ ├── PrintStmt.java
│ │ │ ├── Procedure.java
│ │ │ ├── StmtExp.java
│ │ │ ├── Stmt.java
│ │ │ ├── StmtList.java
│ │ │ └── Temp.java
│ │ ├── Token.java
│ │ ├── TokenMgrError.java
│ │ └── visitor
│ │ ├── DepthFirstVisitor.java
│ │ ├── GJDepthFirst.java
│ │ ├── GJNoArguDepthFirst.java
│ │ ├── GJNoArguVisitor.java
│ │ ├── GJVisitor.java
│ │ ├── GJVoidDepthFirst.java
│ │ ├── GJVoidVisitor.java
│ │ └── Visitor.java
│ └── spiglet
│ ├── JavaCharStream.java
│ ├── ParseException.java
│ ├── spiglet2kanga
│ │ └── Main.java
│ ├── SpigletParserConstants.java
│ ├── SpigletParser.java
│ ├── SpigletParserTokenManager.java
│ ├── SymbolTable
│ │ ├── AllFlowGraphs.java
│ │ ├── FlowGraph.java
│ │ ├── FlowGraphNode.java
│ │ ├── InterferenceGraph.java
│ │ ├── MyBitSet.java
│ │ ├── NodeManager.java
│ │ ├── ParameterTemp.java
│ │ ├── TempReference.java
│ │ └── TempStructType.java
│ ├── syntaxtree
│ │ ├── BinOp.java
│ │ ├── Call.java
│ │ ├── CJumpStmt.java
│ │ ├── ErrorStmt.java
│ │ ├── Exp.java
│ │ ├── Goal.java
│ │ ├── HAllocate.java
│ │ ├── HLoadStmt.java
│ │ ├── HStoreStmt.java
│ │ ├── IntegerLiteral.java
│ │ ├── JumpStmt.java
│ │ ├── Label.java
│ │ ├── MoveStmt.java
│ │ ├── NodeChoice.java
│ │ ├── Node.java
│ │ ├── NodeListInterface.java
│ │ ├── NodeList.java
│ │ ├── NodeListOptional.java
│ │ ├── NodeOptional.java
│ │ ├── NodeSequence.java
│ │ ├── NodeToken.java
│ │ ├── NoOpStmt.java
│ │ ├── Operator.java
│ │ ├── PrintStmt.java
│ │ ├── Procedure.java
│ │ ├── SimpleExp.java
│ │ ├── StmtExp.java
│ │ ├── Stmt.java
│ │ ├── StmtList.java
│ │ └── Temp.java
│ ├── Token.java
│ ├── TokenMgrError.java
│ └── visitor
│ ├── BuildFlowGraphVisitor.java
│ ├── DepthFirstVisitor.java
│ ├── GJDepthFirst.java
│ ├── GJNoArguDepthFirst.java
│ ├── GJNoArguVisitor.java
│ ├── GJVisitor.java
│ ├── GJVoidDepthFirst.java
│ ├── GJVoidVisitor.java
│ ├── Spiglet2KangaVisitor.java
│ └── Visitor.java
└── readme.txt
41 directories, 483 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论