# The GMM Compiler

##### build

  download the tar.gz file gmm.tar.gz
  tar -xf gmm.tar.gz
  `cd gmm/`

```
docker run --rm -it -v `pwd`:/home/gmm -w=/home/gmm columbiasedwards/plt  
```

  Inside docker, compile GMM and run the regression tests:
`# make`

  ...
  test-add1...OK
  test-arith1...OK
  test-arith2...OK
  test-arith3...OK
  ... etc.

`# make clean`



`# make all` to compile the compiler

`# bash run.sh tests/name_of_test` run a single test case

`# ./testall.sh` run all tests

`# make clean`

# New Features

  ## function/gofunction keyword
   We changed all the syntax to conform with our Go-- LRM such that 
   each function is preceded by a specifier on whether it can be 
   called and executed concurrently with the main thread.

   Note that the functionality (concurrent execution) is not yet implemented.

   New test case added: test-gofunction.gmm

  ## ++/--
   We also experimented with adding a pair of operators into the compiler.
   Expressions like a++ is legal and is equivalent to a = a + 1.



## go keyword and go call
 Go keyword, the concurrency feature we would like to implement is currently
 working with 2 inputs, future to-dos include making the function pointer casting
 automatic, and making go call accept variable number of inputs.



## channel


## string


## array


