Giter Club home page Giter Club logo

c_compiler's Introduction

CS 660

PA 5, 6, 7, 8, 9, 10: Symbol Table, Lexical Analyzer, Parser, Abstarct Syntax Tree, 3AC, Assembly Generation

Connor Scully-Allison and Kurt Andersen

October 19, 2018

Table of Contents

Links to other README's
Language Features of the Compiler
Implementation
Assumptions Made
Dependencies
Restrictions
Misc Notes

Project Wiki
Symbol Table README
Lexical Analyzer README
Parser README / Abstract Syntax Tree / 3AC / Assembly Generation

Python 3.6 is used for our compiler

The symbol table uses a red-black tree to keep the tree balanced. (Grad student requirement)

The lexical analyzer and parser use the PLY library. It is similar to the yacc/bison library, but is a derivation for python.

NOTE: No external token file is used or reuired by PLY. Instead tokens are defined as a tuple of strings which can be found in LexicalAnalizer.py

We are under the assumption that a single line of code stays within the 4095 character length.

We check for max length of an identifier for being less than 31 characters.

Python version 3.6 is used. All other dependencies that are used are listed in requirements.txt

bintrees - gives access to red black trees for the symbol table

pytest - gives access to automated testing

ply - gives access to a lexical analyzer and parser similar to yacc/bison

graphviz

anytree

If python is not installed run the following in the command line in a Linux environment:

sudo apt-get install python3.6

Once python is installed(it includes pip), to ensure all other dependencies are installed run the following:

pip install -r requirements.txt

Syntax errors will stop the compiler when it occurs. The error location is described to the user.

Warnings will display the location of the warning and detailed information about the warning.

c_compiler's People

Contributors

cscully-allison avatar kandersen753 avatar

Stargazers

 avatar  avatar

Watchers

Fred Harris avatar  avatar  avatar

Forkers

kandersen753

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.