{"id":31711061,"url":"https://github.com/kyleect/language-project-template","last_synced_at":"2025-10-09T00:53:32.102Z","repository":{"id":316882633,"uuid":"1065208319","full_name":"kyleect/language-project-template","owner":"kyleect","description":"My starter for language projects","archived":false,"fork":false,"pushed_at":"2025-09-27T09:17:48.000Z","size":29,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-27T11:26:33.085Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/kyleect.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-27T09:08:13.000Z","updated_at":"2025-09-27T09:17:51.000Z","dependencies_parsed_at":"2025-09-27T11:26:45.395Z","dependency_job_id":"c8100097-3167-46ba-b765-a37b202e20eb","html_url":"https://github.com/kyleect/language-project-template","commit_stats":null,"previous_names":["kyleect/language-project-template"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/kyleect/language-project-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleect%2Flanguage-project-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleect%2Flanguage-project-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleect%2Flanguage-project-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleect%2Flanguage-project-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kyleect","download_url":"https://codeload.github.com/kyleect/language-project-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleect%2Flanguage-project-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000641,"owners_count":26082879,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"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":[],"created_at":"2025-10-09T00:53:27.396Z","updated_at":"2025-10-09T00:53:32.095Z","avatar_url":"https://github.com/kyleect.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# language-project-template\n\nMy starter for language projects. Rust, lalrpop, and logos.\n\n## Includes\n\n- Lexing\n- Parsing\n- Capturing spans\n- Error handling \u0026 diagnostics\n- Syntax tests for asserting tokens, AST, errors, diagnostics\n- Dockerized CLI\n\n### Future\n\n- Language server\n- VS Code extension\n\n## Project\n\n- [Getting Started](./GETTING_STARTED.md)\n- [Lexer](./src/lexer.rs)\n- [Parser](./src/parser.rs), [Grammar](./src/grammer.lalrpop), [AST](./src/ast.rs)\n- [Valid](./spec/valid/) \u0026 [Invalid](./spec/invalid) [Syntax Examples](./spec/)\n- [Specification](./tests//spec_tests.rs) \u0026 Integration [Tests](#tests)\n\n## Syntax\n\n| Syntax                                  | Description      |\n| --------------------------------------- | ---------------- |\n| `1`, `100`                              | A number         |\n| `5 + 5`, `25 - 10`, `10 * 10`, `20 / 5` | Infix operations |\n| `(5 + 10) - 2`                          | Grouping         |\n\nSee [/spec](./spec/) for more syntax examples.\n\n## Built With\n\n- [lalrpop](https://github.com/lalrpop/lalrpop)\n- [logos](https://github.com/maciejhirsz/logos)\n\n## Tests\n\n### Specification Tests\n\nThe [specification tests](./tests/spec_tests.rs) read in `*.expr` files in the [`spec/`](./spec) directory and compare the output against their corrosponding expected result files (e.g. `*.expr.tokens`). These [spec]((./spec) files are split between [valid](./spec/valid) and [invalid](./spec/invalid) examples.\n\n### Coverage\n\nRun `just coverage` or [coverage.sh](./coverage.sh) to generate a coverage report.\n\n## CLI\n\nThe [CLI](./examples/language-project-template.rs) can lex or parse files.\n\n```shell\ncargo run --example language-project-template -- --file-path ./spec/valid/add.expr parse\n```\n\n### Docker\n\nThe CLI can also be used with Docker.\n\n#### Build\n\nBuild the docker image first.\n\n```shell\ndocker build -t language-project-template:0.0.0 .\n```\n\n#### Run\n\nThe docker image will run any of the repo's [spec](./spec/) files.\n\n```shell\ndocker run -it --rm --read-only language-project-template:0.0.0 --file-path ./spec/valid/add.expr parse\n```\n\nIf you'd like to run local files, you'll need to mount the directory inside the container directory `/usr/local/src`\n\n```shell\ndocker run -it --rm --read-only -v ./example:/usr/local/src/example language-project-template:0.0.0 --file-path ./example/file.expr parse\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyleect%2Flanguage-project-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkyleect%2Flanguage-project-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyleect%2Flanguage-project-template/lists"}