Skip to content

troytoman/Project-1---Parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README file for CS 5363 Project 2 submission

Troy Toman
troytoman@mac.com

This parser currently recognizes all token types and language constructs as specified in the Project 1 guidelines. It was corrected based on Project1 feedback to handle:
	nested if fails
	else if fails
	var dec + initialization fails
	complex expression evaluation fails
	commenting fails
	keywords cannot be identifiers
I believe these are all working correctly at this time. The program has been updated for project 2 so that it produces a type-checked AST. The tree can be printed to the screen or converted to json format. The resulting json format can be then used to re-create the AST tree. 	


This project was implemented using the Ruby language and leverages a Ruby Parser library called Treetop which is available as open source. 

You can find more information about Treetop at 

http://treetop.rubyforge.org/

INSTALLATION INSTRUCTIONS

- You must install Ruby on the system
   - Information on installing Ruby on Mac, Windows, Linux or Solaris can be found at:
       http://www.ruby-lang.org/en/downloads/
   - This was developed using Ruby 1.9.2 on a Mac
- Once Ruby is installed you must install the Treetop gem
   - gem install treetop

- At this point you can run the program with the following command:

> ruby project1.rb

You will be prompted for an input file. I have provided "testinput.c" which contains the sample input from the project specification. I have also included "badtestinput.c" which has a syntax error and will be rejected by the parser.

In this version of the program, a json version of the tree will be output in addition to printing out the tree on the screen. 

CURRENT STATE OF THE COMPILER

	- The project is complete as specified.
	- Type checking will validate int variables are not assigned a float value. 
	- Type checking does allow float variables to be assigned integer values
	- Type checking also validates that only integers are used as array indices
	- Known bugs: None known. 

PROJECT TESTING

I tested the program manually with the two input files mentioned above.

I also used TDD (test driven development) to build the program using a tool called Rspec. You can run the unit test by installing Rspec:

gem install rspec

To run tests (with little output) use following command (assuming rspec 2.0):
>rspec parser_spec.rb --format d

To run tests (with verbose output) use following command (assuming rspec 2.0):
>rspec parser_spec_w_print.rb --format d

if you are running a prior version of rspec then the command is:

>spec parser_spec.rb --format specdoc

In parser_spec.rb and parser_spec_w_print.rb, you will find the tests used on the project. I have incorporated the additional tests that were provided after the Project 1 feedback.

About

Parser for a subset of the C language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published