{"id":18763561,"url":"https://github.com/lukaspietzschmann/pl0-compiler","last_synced_at":"2025-12-06T03:30:10.714Z","repository":{"id":124211661,"uuid":"425824942","full_name":"LukasPietzschmann/PL0-Compiler","owner":"LukasPietzschmann","description":"A small and fun PL0 compiler","archived":false,"fork":false,"pushed_at":"2022-11-02T22:25:15.000Z","size":117,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T13:38:47.538Z","etag":null,"topics":["compiler","cpp","pl0","programming-language"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LukasPietzschmann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-08T12:16:45.000Z","updated_at":"2025-01-18T17:31:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"1b60a262-bd96-4c63-b623-490dc7720e7e","html_url":"https://github.com/LukasPietzschmann/PL0-Compiler","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LukasPietzschmann%2FPL0-Compiler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LukasPietzschmann%2FPL0-Compiler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LukasPietzschmann%2FPL0-Compiler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LukasPietzschmann%2FPL0-Compiler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LukasPietzschmann","download_url":"https://codeload.github.com/LukasPietzschmann/PL0-Compiler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239661824,"owners_count":19676411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compiler","cpp","pl0","programming-language"],"created_at":"2024-11-07T18:26:37.238Z","updated_at":"2025-12-06T03:30:10.641Z","avatar_url":"https://github.com/LukasPietzschmann.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PL0-Compiler\nA compiler and interpreter for the minimal programming language PL/0 written in C++.\n\nThe parser uses the grammar from [Wikipedia](https://en.wikipedia.org/wiki/PL/0#Grammar)\n\nThe compiler targets a custom instruction set. Therefore the project also builds an assembler and vm to execute the generated code.\n\n## Compile the project\nTo compile the code yourself, execute the following steps:\n\n1. Navigate to the projects root\n2. Create a new folder (e.g. Debug) with `mkdir Debug \u0026\u0026 cd Debug`\n3. Within this folder, issue the command `cmake .. -DCMAKE_BUILD_TYPE=Release`\n4. Now you have to decide which target to build\n   - `pl0`: this only builds the interpreter\n   - `pl0c`: this builds the compiler, assembler and vm\n   - `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\n5. Now you can run all build executables located in the `./bin` folder\n6. 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 `\u003cexecutable\u003e hello`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukaspietzschmann%2Fpl0-compiler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukaspietzschmann%2Fpl0-compiler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukaspietzschmann%2Fpl0-compiler/lists"}