Code Generator
⚠️ Work in Progress: This section is under development.
This chapter covers the internals of Ursus code generation.
Topics to be Covered
Generator Architecture
- AST representation
- Transformation pipeline
- Code emission
- Optimization passes
Generation Phases
- Parsing - Coq AST to Ursus AST
- Analysis - Type checking, dependency analysis
- Transformation - Optimization, normalization
- Emission - Target code generation
Target Languages
- Solidity - Ethereum/TON Solidity
- C++ - TON C++ contracts
- Rust - Future support
AST Transformations
- Desugaring
- Inlining
- Dead code elimination
- Constant folding
Code Emission
- Pretty printing
- Name mangling
- Comment generation
- Metadata
Generator Classes
ExecGenerator
- Execution code generation
- State management
- Function calls
LocalClassGenerator
- Local state generation
- Variable declarations
- Scope management
Extending the Generator
Adding New Constructs
- Define AST node
- Add transformation rules
- Implement emission
- Add tests
Custom Optimizations
- Pattern matching
- Rewrite rules
- Cost models
Coming Soon
This section will include:
- Generator source code walkthrough
- Extension examples
- Optimization techniques
- Debugging generator
See Also
- Advanced Topics - Overview
- Translation - Translation overview
- Ursus → Solidity - Solidity generation