How tanggger/buaa_compiler works
This is a compiler for a C-like language that produces MIPS assembly. Its principal workflow is source input through lexing and parsing, semantic analysis and IR construction, optimization, then MIPS generation. The graph also shows symbol management, error reporting, and the IR-to-instruction layer. No README was provided; relationships are limited to source excerpts and SOURCE INDEX references, so some internal calls and output details are omitted.
Main entry points: Compiler.java Compiler driver · OptimizeManager.java Optimization manager · MipsBuilder.java MIPS lowering · IrBuilder.java IR builder
Components 19
Frontend
Analysis and IR
- Semantic analysis
src/midend/SemanticAnalyzer.java - Symbol tables
src/midend/symbol/SymbolTable.java - AST visitors
src/midend/visit - IR builder
src/midend/IrBuilder.java - LLVM-like IR
src/midend/llvm
Optimization
- Optimization manager
src/optimize/OptimizeManager.java - IR optimization passes
src/optimize - Register allocation
src/optimize/AllocateRegister.java
MIPS Backend
- MIPS lowering
src/backend/mips/MipsBuilder.java - MIPS module
src/backend/mips/MipsModule.java - MIPS instructions
src/backend/mips/assembly - Peephole optimization
src/backend/PeepHole.java
Compiler Support
- Compiler driver
src/Compiler.java - Error recording
src/error/ErrorRecorder.java - Output handling
src/util/OutputHandler.java
Other components
- Source code
Connections 18
- Source code → Compiler driver: provides input
- Compiler driver → Lexer: invokes
src/Compiler.java - Compiler driver → Parser: invokes
src/Compiler.java - Parser → AST: parses into
src/frontend/parser/Parser.java - Compiler driver → Semantic analysis: invokes
src/Compiler.java - Compiler driver → IR builder: invokes
src/Compiler.java - AST visitors → IR builder: uses
src/midend/visit/VisitorExp.java - IR builder → LLVM-like IR: builds
src/midend/IrBuilder.java - Compiler driver → Optimization manager: invokes
src/Compiler.java - Optimization manager → IR optimization passes: runs
src/optimize/OptimizeManager.java - Optimization manager → Register allocation: runs
src/optimize/OptimizeManager.java - Compiler driver → MIPS lowering: invokes
src/Compiler.java - MIPS lowering → MIPS module: adds segments
src/backend/mips/MipsBuilder.java - MIPS lowering → MIPS instructions: creates
src/backend/mips/MipsBuilder.java - Compiler driver → Error recording: uses
src/Compiler.java - Compiler driver → Output handling: uses
src/Compiler.java - Compiler driver → Peephole optimization: invokes
src/Compiler.java - Peephole optimization → MIPS module: rewrites
src/backend/PeepHole.java