Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/PhotonQuantum/SimPL
SimPL is a simplified dialect of ML, which can be used for both functional and imperative programming.
https://github.com/PhotonQuantum/SimPL
Last synced: 5 days ago
JSON representation
SimPL is a simplified dialect of ML, which can be used for both functional and imperative programming.
- Host: GitHub
- URL: https://github.com/PhotonQuantum/SimPL
- Owner: PhotonQuantum
- License: gpl-3.0
- Created: 2022-05-10T10:53:43.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-09-09T10:00:45.000Z (about 2 years ago)
- Last Synced: 2024-10-28T10:11:02.552Z (15 days ago)
- Language: Java
- Homepage:
- Size: 462 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-cs - @PhotonQuantum, 2022 Spring
README
# SimPL Interpreter
An *interpreter* for the programming language SimPL (pronounced *simple*).
SimPL is a simplified dialect of ML, which can be used for both *functional* and *imperative* programming.
It's a project for the course *Programming Languages* at *Shanghai Jiao Tong University*.
See [the course website](https://www.cs.sjtu.edu.cn/~kzhu/cs383) for more details.## Features
- ML-like syntax.
- Algorithm W type inference.
- Call-by-value and call-by-need evaluation strategies.
- Infinite data structures.
- GC based on copy collection.## Get Started
```bash
# Interpret a SimPL program
$ gradle run --args="doc/examples/gc.spl"
# Run tests
$ gradle test
# Build a standalone jar
$ gradle shadowJar
```The grammar resides in `src/main/cup/simpl/parser/simpl.cup`.
You may find `src/main/java/simpl/interpreter` useful if you'd like to dig into the evaluation process,
and `src/main/java/simpl/typing` if you're interested in type inference.Please refer to [Specification](doc/spec.pdf) for mandatory project requirements,
and [Report](doc/report.pdf) for implementation details.## Examples
See `doc/examples` for some SimPL programs.
## License
This project is licensed under GPLv3.
Please be aware that you are required to include a copy of the full license text
and state all the changes you made to the original source code
if you decide to use whatever part of this code.