Skip to content

hardshah/arithmetic_expression_compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 

Repository files navigation

A basic arithmetic expression compiler to LLVM intermediate representation

Building a compiler frontend and backend for simple arithmetic expressions using LLVM to generate intermediate representation. For more information check out the examples of usage for this simple language frontend.

Includes a lexer, parser, semantic analysis and type checking, and an IR generator

examples of usage:

Variable declaration:

To initialize and declare a variable you must use the let keyword

'let x = 5;' or 'let x = 5 * 2/(2+3);' are both valid statements to declare a variable x with a value

Assignment

In order to assign a variable's value, it must be declared before the assignment

let x = 5; x = 4;

or

let x = 9; let y = 3; x = x/y;

are both valid re-assignments of the variable x's value

Addition and Substraction

'let x = 2 + 3;' or 'let x = 3-2;' are both valid ways to declare a variable x with a value via addition or substraction

Multiplication and Division

'let x = 2 * 3;' or 'let x = 4/2;' are both valid ways to declare a variable x with a value via multiplication or division

Expressions with complex order of operations

The interpreter can correctly interpret the order of operations in an arithmetic expression.

'let x = (3-2) * (((4/2)+1))/3) / (2+1-2)'

is correctly interpreted in the order of operations following basic BEDMAS rules by the parser.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages