{"id":17685621,"url":"https://github.com/ghaiklor/iterum","last_synced_at":"2025-04-28T15:55:34.372Z","repository":{"id":34881770,"uuid":"171526057","full_name":"ghaiklor/iterum","owner":"ghaiklor","description":"Interpreter for a subset of ECMA specification implemented on top of recursive descent parser","archived":false,"fork":false,"pushed_at":"2024-07-05T08:40:08.000Z","size":1254,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-28T15:55:27.327Z","etag":null,"topics":["ast","ecma-specification","interpreter","iterum","parser","runtime","typescript"],"latest_commit_sha":null,"homepage":"https://www.ecma-international.org/ecma-262/9.0/index.html#sec-grammar-summary","language":"TypeScript","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/ghaiklor.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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":"2019-02-19T18:21:24.000Z","updated_at":"2025-04-09T10:13:54.000Z","dependencies_parsed_at":"2023-01-15T09:53:23.114Z","dependency_job_id":"0e9ff16f-77b9-4097-91fc-3b63d1642437","html_url":"https://github.com/ghaiklor/iterum","commit_stats":{"total_commits":244,"total_committers":3,"mean_commits":81.33333333333333,"dds":"0.11065573770491799","last_synced_commit":"2b48cbea98bf3b7c38c3a922924640340e8b84ad"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghaiklor%2Fiterum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghaiklor%2Fiterum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghaiklor%2Fiterum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghaiklor%2Fiterum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ghaiklor","download_url":"https://codeload.github.com/ghaiklor/iterum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251342720,"owners_count":21574244,"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":["ast","ecma-specification","interpreter","iterum","parser","runtime","typescript"],"created_at":"2024-10-24T10:28:27.566Z","updated_at":"2025-04-28T15:55:34.355Z","avatar_url":"https://github.com/ghaiklor.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# iterum\n\n![Travis (.com) branch](https://img.shields.io/travis/com/ghaiklor/iterum/master.svg)\n![Codecov branch](https://img.shields.io/codecov/c/github/ghaiklor/iterum/master.svg)\n![Codacy branch grade](https://img.shields.io/codacy/grade/315a0c481bd74165bc0c64597d893f32/master.svg)\n![GitHub last commit](https://img.shields.io/github/last-commit/ghaiklor/iterum.svg)\n![Maintenance](https://img.shields.io/maintenance/yes/2019.svg)\n![ECMA-262 Coverage](https://img.shields.io/static/v1.svg?label=ECMA-262%20Coverage\u0026message=51.50%\u0026color=informational)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/ghaiklor/iterum.svg)\n\n[![GitHub followers](https://img.shields.io/github/followers/ghaiklor.svg?label=Follow\u0026style=social)](https://github.com/ghaiklor)\n[![Twitter Follow](https://img.shields.io/twitter/follow/ghaiklor.svg?label=Follow\u0026style=social)](https://twitter.com/ghaiklor)\n\n_Iterum (latin) means “again, a second time, repeatedly, once more, for the second time, anew,”._\n_This is my another attempt to create a simple, but fully implemented interpreter for a subset of ECMA specification._\n\n__NOTE: This is an educational project, and it is not designed for use in production.__\n\n## Why\n\nFor a last few years I was passionate about compilers, languages and similar stuff.\nAnd I am still passionate about it.\n\nHowever, all my knowledge was based on theoretical knowledge and not on a practical one.\nSo, I’ve written an interpreter to fasten it.\n\n## Key Concepts\n\niterum itself is implemented on top of these key concepts:\n\n- Recursive descent parser with a look-ahead by one character;\n- Parser for an ECMA subset emits ESTree;\n- Interpreter is implemented on top of traverser for different AST nodes;\n\n## Getting Started\n\niterum is packed as an npm package, so you can easily run it with `npx`:\n\n```bash\nnpx @ghaiklor/iterum --help\n```\n\nCreate a file somewhere on your machine with an iterum code:\n\n```javascript\n// hello-world.js\nfunction helloWorld() {\n    print \"Hello, World\";\n}\n\nhelloWorld();\n```\n\nIf you want to take a look into AST generated from the file above:\n\n```bash\nnpx @ghaiklor/iterum --print-ast hello-world.js\n```\n\nOtherwise, you can interpret it:\n\n```bash\nnpx @ghaiklor/iterum --interpret hello-world.js\n```\n\n## Contributing\n\nPull requests are welcome.\nFor major changes, please open an issue first to discuss what you would like to change.\n\nPlease make sure to update tests as appropriate.\n\n## How It Works\n\nYou can find rough explanation [here](./docs/index.md).\n\n## License\n\n[MIT License](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghaiklor%2Fiterum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fghaiklor%2Fiterum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghaiklor%2Fiterum/lists"}