{"id":15069100,"url":"https://github.com/danilhendrasr/yali4j","last_synced_at":"2026-03-05T02:32:15.548Z","repository":{"id":47585038,"uuid":"378302195","full_name":"danilhendrasr/yali4j","owner":"danilhendrasr","description":"A language interpreter I created without having any idea what I'm doing","archived":false,"fork":false,"pushed_at":"2022-07-25T00:52:36.000Z","size":133,"stargazers_count":6,"open_issues_count":8,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-21T03:42:09.718Z","etag":null,"topics":["interpreter","java","java-11","lox-language","programming-language"],"latest_commit_sha":null,"homepage":"","language":"Java","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/danilhendrasr.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}},"created_at":"2021-06-19T01:56:07.000Z","updated_at":"2023-07-09T05:50:58.000Z","dependencies_parsed_at":"2022-08-26T19:53:07.595Z","dependency_job_id":null,"html_url":"https://github.com/danilhendrasr/yali4j","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/danilhendrasr/yali4j","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danilhendrasr%2Fyali4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danilhendrasr%2Fyali4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danilhendrasr%2Fyali4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danilhendrasr%2Fyali4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danilhendrasr","download_url":"https://codeload.github.com/danilhendrasr/yali4j/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danilhendrasr%2Fyali4j/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30107211,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T01:39:18.192Z","status":"online","status_checked_at":"2026-03-05T02:00:06.710Z","response_time":93,"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","java","java-11","lox-language","programming-language"],"created_at":"2024-09-25T01:40:28.783Z","updated_at":"2026-03-05T02:32:15.518Z","avatar_url":"https://github.com/danilhendrasr.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eyali4j\u003c/h1\u003e\n\n  \u003cp align=\"center\"\u003e\n    Yet Another Lox Interpreter, written in Java.\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n  \n\u003c/div\u003e\n\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\nyali4j is just another Lox interpreter written in Java. Initially I wanted to claim that it's \"a new programming language written in Java\" because it sounds cooler :p, but it's not.\n\nLox is a programming language defined in Bob Nystrom's book, [Crafting Interpreters](http://craftinginterpreters.com/). It's a language created for learning purpose , and not used in real industry-standard environment like Java, Python, or any other major programming language does.\n\nAs for this interpreter, it's a tree-walking interpreter, which kicks up the core interpreter right after parsing is done, it walks through the AST while evaluating each node as it goes through. There's no compilation step, no bytecode generation, let alone machine code generation or any similar fancy stuff.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n\n### Prerequisites\n- JDK 11 or above;\n- Gradle.\n\n### Build from source\n1. Clone the repo and `cd` into the directory;\n2. Run `gradle build`;\n3. The resulting jar file is located in the `build/libs/yali4j-0.1.0.jar`;\n4. Run the jar file by using:\n   ```bash\n   java -jar yali4j-0.1.0.jar\n   ```\n5. Test out the language by typing the following:\n   ```bash\n   print \"Hello world!\";\n   ```\n\n### Using Pre-built Binaries\n1. Go to the [releases page](https://github.com/danilhendrasr/yali4j/releases);\n2. Download any version you want to test out;\n3. After download is finished, run the following command:\n   ```bash\n   java -jar yali4j-x.x.x-release-name.jar\n   ```\n\n   The above command will run yali4j in REPL mode. If you wanted to run a file, run the following command,\n   ```\n   java -jar yali4j-x.x.x-release-name.jar hello_world.lox\n   ```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n## License\n\nDistributed under the MIT License. See [LICENSE][license-url] for more information.\n\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\n[![Twitter][twitter-shield]][twitter-url] \n[![LinkedIn][linkedin-shield]][linkedin-url] \n[![Email][gmail-shield]][mail-url]\n\n\n\u003c!-- ACKNOWLEDGEMENTS --\u003e\n## Acknowledgements\n* [craftinginterpreters.com](https://www.craftinginterpreters.com)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[repo-url]: (https://github.com/danilhendrasr/yali4j)\n[stars-shield]: https://img.shields.io/github/stars/danilhendrasr/yali4j.svg?style=for-the-badge\n[stars-url]: https://github.com/danilhendrasr/yali4j/stargazers\n[issues-shield]: https://img.shields.io/github/issues/danilhendrasr/yali4j.svg?style=for-the-badge\n[issues-url]: https://github.com/danilhendrasr/yali4j/issues\n[license-shield]: https://img.shields.io/github/license/danilhendrasr/yali4j.svg?style=for-the-badge\n[license-url]: https://github.com/danilhendrasr/yali4j/blob/main/LICENSE\n\n[twitter-shield]: https://img.shields.io/badge/Twitter-1DA1F2.svg?style=for-the-badge\u0026logo=twitter\u0026logoColor=white\n[twitter-url]: https://twitter.com/danilhendrasr\n[linkedin-shield]: https://img.shields.io/badge/LinkedIn-0A66C2.svg?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\n[linkedin-url]: https://linkedin.com/in/danilhendrasr\n[gmail-shield]: https://img.shields.io/badge/Email-EA4335.svg?style=for-the-badge\u0026logo=gmail\u0026logoColor=white\n[mail-url]: mailto:danilhendrasr@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanilhendrasr%2Fyali4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanilhendrasr%2Fyali4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanilhendrasr%2Fyali4j/lists"}