Skip to content

AnshulRanjan2004/Golang-Mini-Compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Golang-mini-compiler

A compiler front-end for Golang implemented using Python Lex and YACC (PLY) that handles the switch, expression , variables ,for loop and if-else constructs of Golang

Optimizations implemented:

  • Constant folding and constant propagation
  • Packing temporaries (removing all unnecesary temp variables from TAC)

Code Structure

  • src/lexer.py - Generates Lex tokens from the input source file
  • src/parser.py - Takes a stream of tokens as input from lexer.py and runs the LALR parser logic (rules and actions) on the tokens (outputs the three address code)
  • src/optimize_tac.py - Runs the above mentioned optimizations on the generated Three Address Code from the parser
  • src/code.py - Contains class definitions for Three Address Code and AST nodes
  • src/symboltable.py - Contains class definition for SymbolTable

Command to run till IC Optimization Step:

export PATH=$PATH:/your-path-here/Golang-Mini-Compiler
go-compile <path-to-filename.go>

About

A compiler front-end for Golang implemented using Python Lex and YACC that handles the switch , if else and loop constructs

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages