{"id":17685688,"url":"https://github.com/rami3l/dolores","last_synced_at":"2025-10-16T10:29:30.709Z","repository":{"id":40265817,"uuid":"433204313","full_name":"rami3l/dolores","owner":"rami3l","description":"A tree-walking interpreter for the Lox Programming Language.","archived":false,"fork":false,"pushed_at":"2023-10-19T00:22:39.000Z","size":272,"stargazers_count":8,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-13T00:05:11.014Z","etag":null,"topics":["crafting-interpreters","interpreter","lox","lox-language","programming-language","rust","rust-lang"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rami3l.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-11-29T21:36:33.000Z","updated_at":"2025-04-20T07:58:24.000Z","dependencies_parsed_at":"2022-06-27T11:20:36.530Z","dependency_job_id":"846c7dd3-a359-42c7-b822-7def9513b4f7","html_url":"https://github.com/rami3l/dolores","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/rami3l%2Fdolores","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rami3l%2Fdolores/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rami3l%2Fdolores/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rami3l%2Fdolores/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rami3l","download_url":"https://codeload.github.com/rami3l/dolores/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253843213,"owners_count":21972873,"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":["crafting-interpreters","interpreter","lox","lox-language","programming-language","rust","rust-lang"],"created_at":"2024-10-24T10:28:43.375Z","updated_at":"2025-10-16T10:29:25.667Z","avatar_url":"https://github.com/rami3l.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dolores\n\n\u003e \"... light of my life.\"\n\n[The Lox Programming Language](https://www.craftinginterpreters.com/the-lox-language.html) implemented in Rust.\n\nPorted from the original Java-based `jlox` tree-walking interpreter\\*, but with no visitor patterns, no `null` values, no subclasses and implicit conversions, just pure `enum`s.\n\n~~`Gc\u003cT\u003e` is a necessary evil...~~\n\n\\* : For the bytecode VM interpreter, see [`rami3l/golox`](https://github.com/rami3l/golox).\n\n---\n\n## Contents\n\n- [dolores](#dolores)\n  - [Contents](#contents)\n  - [Features](#features)\n  - [Try it out!](#try-it-out)\n\n---\n\n## Features\n\n- [x] Lexer\n- [x] Parser\n- [x] Basic types\n- [x] Floating point arithmetic\n- [x] Logic expressions\n- [x] Control flow\n  - [x] Jumps: `break`/`continue`\\*\\*\n    - [x] Semantic analysis: jumping out of loops\n- [x] Functions\n  - [x] Lambdas\\*\\*\n  - [x] Semantic analysis: returning out of functions\n  - [x] Semantic analysis: static closure captures\n- [x] Classes\n  - [x] Instances\n  - [x] Instance methods\n    - [x] `this`\n      - [x] Semantic analysis: `this` out of classes\n    - [x] Initializers\n      - [x] Semantic analysis: `return`ing values in initializers\n  - [x] Inheritance\n    - [x] `super`\n      - [x] Semantic analysis: `super` out of subclasses\n\n\\*\\* : Extension\n\n## Try it out!\n\nWith the latest [Rust toolchain](https://www.rust-lang.org/tools/install) installed, just execute:\n\n```bash\ncargo run\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frami3l%2Fdolores","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frami3l%2Fdolores","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frami3l%2Fdolores/lists"}