Compiler
Role: Software Developer
Developed a full-stack compiler in C for a custom educational language (P/LO), translating it into assembly code and executing it via a custom-built virtual machine.

• Designed and implemented a recursive descent parser to build an Abstract Syntax Tree (AST) from P/LO source code.
• Developed a lexical analyzer (lexer) using finite state machines to tokenize input code and handle lexical errors.
• Implemented semantic analysis, including symbol table management and type checking, to ensure correct variable usage and scoping.
• Translated the AST into intermediate representation (IR) before generating low-level assembly-like instructions.
• Created a stack-based virtual machine (VM) to execute the generated assembly code, supporting function calls, arithmetic, control flow, and memory management.
• Implemented error handling and reporting for syntax, semantic, and runtime errors to assist with debugging and usability.
• Structured the compiler in modular, testable components with a clear separation between front-end (parsing, analysis) and back-end (code generation, VM).
• Verified correctness through unit tests and end-to-end test programs, comparing expected vs. actual VM output.