{"id":33931699,"url":"https://github.com/mztikk/poetic","last_synced_at":"2026-04-06T07:01:48.721Z","repository":{"id":41868716,"uuid":"439095908","full_name":"mztikk/poetic","owner":"mztikk","description":"Rust library to parse and interpret poetic source code","archived":false,"fork":false,"pushed_at":"2024-11-05T22:25:10.000Z","size":151,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-05T22:34:59.970Z","etag":null,"topics":["interpreter","parser","poetic","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"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/mztikk.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-12-16T18:53:06.000Z","updated_at":"2024-11-05T22:25:13.000Z","dependencies_parsed_at":"2024-11-05T22:26:49.145Z","dependency_job_id":"f45ad707-8645-4d16-9cfd-a3bb59203e22","html_url":"https://github.com/mztikk/poetic","commit_stats":{"total_commits":60,"total_committers":1,"mean_commits":60.0,"dds":0.0,"last_synced_commit":"8b19d1c92e73c592e78144bad081eef30186d817"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mztikk/poetic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mztikk%2Fpoetic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mztikk%2Fpoetic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mztikk%2Fpoetic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mztikk%2Fpoetic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mztikk","download_url":"https://codeload.github.com/mztikk/poetic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mztikk%2Fpoetic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31463015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["interpreter","parser","poetic","rust"],"created_at":"2025-12-12T12:56:53.274Z","updated_at":"2026-04-06T07:01:48.716Z","avatar_url":"https://github.com/mztikk.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# POETIC\n\nRust library to parse and interpret [poetic](https://mcaweb.matc.edu/winslojr/vicom128/final/index.html) source code\n\nIt supports all of the instructions and handles digit conversion accordingly, with the only difference being that it dynamically allocates more memory if needed instead of 30.000 bytes. This means memory pointer wrapping at the \"end\" is not possible. Maybe in the future through a option.\nhttps://mcaweb.matc.edu/winslojr/vicom128/final/tutorial/index.html\n\n## Tests\n\nThere are tests for the parser and interpreter which you can run with:\n\n```Rust\ncargo test\n```\n\n## Usage\n\nIt will first parse the string source input and parse it to intermediate opcode number representation.\n\n```Rust\n    let mut buf = fs::read_to_string(\"input.ptc\").unwrap();\n\n    let intermediate = Parser::parse_intermediate(\u0026buf);\n```\n\nThen it will convert the intermediate representation to the instructions.\n\n```Rust\n    let instructions = Parser::parse_instructions(\u0026intermediate);\n```\n\nThese instructions can then be executed with the interpreter\n\n```Rust\n    let mut interpreter = Interpreter::new(code);\n    interpreter.run();\n```\n\nYou can let the interpreter just fully execute it with the `run` method or step through every instruction with the `step` method.\n\n## Example\n\nAn example usage can be found at https://github.com/mztikk/poetic_interpreter which is a cli application that will take a poetic source file and execute it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmztikk%2Fpoetic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmztikk%2Fpoetic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmztikk%2Fpoetic/lists"}