Front-End
Lexical Analyzer (Flex)
• Tokens, line/col
• Categories printed
Parser (Bison)
• Grammar, AST nodes
Middle-End
Semantic Analysis
• Hash-based Symbol Table
• Offsets: -8,-16,... (RBP)
IR: Three-Address Code (TAC)
• Temps t0..tn, Labels L0..
• condition lowering (IF/GOTO)
Code Generation
Simple ASM (teaching)
x86-64 AT&T printer
• Prologue/Epilogue
• cmpq, j*, printf
Shared Structures
• Symbol Table: chaining, {name, offset, value}
• AST Nodes: {left,right,token,num}
• Buffers: TAC[], labels, temporaries
Input/Output
Source: input.min
Outputs:
• Tokens, AST
• TAC, Simple ASM, x86 ASM
• Program Output
Interpreter
(exec AST → Program Output)
by fahmy