MAZE - Columbia University

MAZE

Alexander Brown (aab2212) | Alexander Freemantle (asf2161) Michelle Navarro (mn2614) | Lindsay Schiminske (ls3245)

CONTENTS

1. Introduction Related Work

2. Language Tutorial Environment Setup The basics Control Flow Methods

3. Language Reference Manual Lexical Conventions Data Types Expressions and Operators Statements Methods Classes

4. Project Plan Planning Process Specification Process Development Process Testing Process Team Roles Project Log

5. Language Evolution Original Idea Actual Implementation

6. Architecture The Compiler The Scanner The Parser The Analyzer The Code Generator

7. Test Plan Testing Phases Unit Testing Integration Testing Automation

Test Suites 8. Conclusions

Lessons Learned 9. Code Listings

scanner.mll ast.ml parser.mly analyzer.ml maze.ml testall.sh Test Suite Code

1. Introduction _______________________________________

MAZE is an imperative language with Java-like syntax. It compiles down to LLVM IR.

Related Work

For reference, we spent a great deal of time with the MicroC example explained to us in class as well as Dice, a project completed last year that was similar to the idea we had in mind for our language.

2. Language Tutorial _______________________________________

Setup

The language was developed in OCaml which needs to be installed in order to use the compiler. The best way to install it is by using OPAM, the OCaml Package Manager.

Once inside the maze directory, type "make" to compile the different components of the compiler. From there running "./t estall.sh" will build the corresponding .ll files from the .maze files. You can run an individual test within the "tests" directory using lli on the .ll file of the test you are running.

ex. lli test-binop.ll

You can also compile individual files by passing the maze executable the -c flag and the name of the file to be compiled.

ex. ./maze -c program.maze

The Basics

All variables and methods must be contained in classes.

Types All types are declared with their type followed by an

identification. All variables of all types must be declared before they are initialized. The following types are supported:

integers (int) floating point (float) booleans (bool) characters (char) strings (string)

class example { void main(){ int a; a = 3; float b; b = 4.2; bool c; c = true; char d; d = `d'; string e; e = "eeee"; }

}

Operators Maze supports the following binary operators: Arithmetic (+, -, *, /) Relational (==, !=, >, >=, ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download