https://github.com/lukaspietzschmann/pl0-compiler
A small and fun PL0 compiler
https://github.com/lukaspietzschmann/pl0-compiler
compiler cpp pl0 programming-language
Last synced: 7 months ago
JSON representation
A small and fun PL0 compiler
- Host: GitHub
- URL: https://github.com/lukaspietzschmann/pl0-compiler
- Owner: LukasPietzschmann
- License: mit
- Created: 2021-11-08T12:16:45.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-11-02T22:25:15.000Z (over 3 years ago)
- Last Synced: 2025-02-15T13:38:47.538Z (over 1 year ago)
- Topics: compiler, cpp, pl0, programming-language
- Language: C++
- Homepage:
- Size: 114 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PL0-Compiler
A compiler and interpreter for the minimal programming language PL/0 written in C++.
The parser uses the grammar from [Wikipedia](https://en.wikipedia.org/wiki/PL/0#Grammar)
The compiler targets a custom instruction set. Therefore the project also builds an assembler and vm to execute the generated code.
## Compile the project
To compile the code yourself, execute the following steps:
1. Navigate to the projects root
2. Create a new folder (e.g. Debug) with `mkdir Debug && cd Debug`
3. Within this folder, issue the command `cmake .. -DCMAKE_BUILD_TYPE=Release`
4. Now you have to decide which target to build
- `pl0`: this only builds the interpreter
- `pl0c`: this builds the compiler, assembler and vm
- `compile_and_run_example`: this is a handy target, if you want to execute the generated asm code directly. This target assumes you have a file called `example.pl0` in the projects root. To use another file set the cmake variabel `EXAMPLE_FILE` to the filepath you want to use
5. Now you can run all build executables located in the `./bin` folder
6. All executables take a file as their first command line argument. Image you have a `hello.pl0` file, then you would invoke the compiler, interpreter, assembler, or vm with ` hello`