https://github.com/rachitnigam/interpreter-plai
Interpreter for a language which supports higher order functions and multiple let bindings
https://github.com/rachitnigam/interpreter-plai
Last synced: 4 months ago
JSON representation
Interpreter for a language which supports higher order functions and multiple let bindings
- Host: GitHub
- URL: https://github.com/rachitnigam/interpreter-plai
- Owner: rachitnigam
- Created: 2016-03-03T02:51:45.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-03-03T03:20:56.000Z (over 9 years ago)
- Last Synced: 2025-01-18T16:50:12.983Z (5 months ago)
- Language: Racket
- Size: 3.91 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
##PLAI - Interpreter
Implemetation of an interpreter from [this assignment](https://cs.brown.edu/courses/cs173/2010/Assignments/extended-interpreter.html) from the 2010 offerring of CS1730 in Brown university.
The language implemeted has the following BNF:
```
::=
| {+ }
| {- }
| {* }
| {/ }
|
| {if0 }
| {with {{ } ...} }
| {fun { ...} }
| { ...}
```#####Features:
The implemtation has the uses/supports the following:1. Closures for function definitions
2. First class functions: The implementation allows for functions to passed as paramters and allows returning functions from other functions.
3. Mutli-argument functions: The implementation allows for functions to have multiple arguments
4. Let bindings: Implementation allows for identifiers to be bound to values for functionsNote: A variety of test cases, to test the above mentioned functionality are included in the program. They make use of the (test ... ...) syntax defined in PLAI for racket.
####To do
- Make it more usable by creating an interactive environment*Note - I have stopped working on this project and am instead working on a better Interpreter I wrote in OCaml. Expect very few updates, though I intend to eventually setup an interactive environment for this*