Interactive Arithmetic
Expression Compiler
A Course-Based Project
Team: 23071A1201, 23071A1202, 23071A1203, 23071A1204
Compilation: An Interactive Approach
Traditional compilers, while powerful, often obscure their internal workings, making it challenging for students to
grasp the intricate steps of the compilation process. This project addresses the need for a more transparent and
interactive learning experience.
The Challenge: Bridging the Understanding
Gap
1 2 3
Complex Phases Limited Tools No Step-by-Step
Students often struggle to A scarcity of lightweight, Standard compilers lack the
conceptualize the distinct browser-based tools exists for ability to visualize each
phases of compiler operation. interactive compiler compilation step interactively.
demonstrations.
Our Vision: Clearer, Faster, Smarter Learning
Visualize Everything
Provide a complete, step-by-step visualization of the entire compiler pipeline.
Interact & Explore
Enable interactive compilation of arithmetic expressions to explore each stage.
Robust & Reliable
Ensure correctness, security, and extensibility of the tool.
System Overview: A Web-Based Interactive
Compiler
Our solution is a user-friendly web-based application designed to offer a seamless and interactive compiler learning
experience. It leverages modern web technologies for a responsive and engaging interface.
Web-Based Application Flask Backend
Accessible from any browser, no installation required. Robust and scalable server-side logic powered by Python.
Modern Frontend Real-time Flow
Built with HTML, CSS (Tailwind), and JavaScript for a Instant feedback and visualization of the compilation process.
dynamic UI.
Compiler Pipeline: From Input to Output
The interactive compiler guides users through each critical stage of an expression's journey, making abstract concepts
tangible and easy to follow.
Input
Lexer
Syntax Check
Semantic Check
Module 1: Lexical Analysis
The first step in compilation, lexical analysis, breaks down the raw input into a stream of meaningful tokens,
forming the building blocks for further processing.
Regex-Based Tokenization: Utilizes regular expressions to
identify and categorize different parts of the input expression.
Comprehensive Support: Handles numbers, identifiers
(variables), operators (+, -, *, /), and parentheses.
Structured Output: Generates a clear list of (TYPE, VALUE)
pairs, making each element's role explicit.
Module 2: Syntax Analysis
Once tokens are identified, syntax analysis ensures they form a valid structure according to the language's
grammar, just like checking if sentences are grammatically correct.
Expression Reconstruction Python's Compile() Error Detection
Leverages Python's built-in Efficiently identifies invalid
Builds a syntactic structure compile() function for robust grammar, missing operators, or
(parse tree) from the token syntax validation. unmatched parentheses.
stream.
Module 3: Semantic Analysis
Identifier Uniqueness: Verifies that all variables and functions are uniquely named within their scope.
Basic Validation: Performs fundamental semantic checks, such as type compatibility for operations.
Clear Feedback: Provides immediate "OK" or descriptive error messages for semantic issues.
Module 4: Intermediate Code Generation
The final stage before optimization and execution, intermediate code generation translates the validated
expression into a machine-independent form, preparing it for the target architecture.
01 02 03
Infix to Postfix Shunting-Yard Logic 3-Address Code
Converts arithmetic expressions Implements algorithms similar to the Generates a sequence of 3-address
from infix to postfix notation, Shunting-Yard algorithm for code statements (e.g., t1 = a + b),
respecting operator precedence. conversion. simplifying execution.