{"id":17874273,"url":"https://github.com/jomy10/nootlang","last_synced_at":"2025-06-14T09:38:11.933Z","repository":{"id":57697079,"uuid":"494387080","full_name":"Jomy10/nootlang","owner":"Jomy10","description":"A simple scripting language","archived":false,"fork":false,"pushed_at":"2023-01-01T15:17:25.000Z","size":182,"stargazers_count":4,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-07T17:51:15.066Z","etag":null,"topics":["language","programming-language","scripting-language"],"latest_commit_sha":null,"homepage":"","language":"Go","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/Jomy10.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":"2022-05-20T08:41:40.000Z","updated_at":"2024-11-06T20:26:41.000Z","dependencies_parsed_at":"2023-01-31T23:15:30.348Z","dependency_job_id":null,"html_url":"https://github.com/Jomy10/nootlang","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Jomy10/nootlang","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jomy10%2Fnootlang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jomy10%2Fnootlang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jomy10%2Fnootlang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jomy10%2Fnootlang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jomy10","download_url":"https://codeload.github.com/Jomy10/nootlang/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jomy10%2Fnootlang/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259796304,"owners_count":22912688,"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":["language","programming-language","scripting-language"],"created_at":"2024-10-28T11:08:17.878Z","updated_at":"2025-06-14T09:38:11.902Z","avatar_url":"https://github.com/Jomy10.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Noot lang\n\nA simple scripting language, created specifically for [NootBot](https://github.com/unitoftime/nootbot).\n\n## Hello World\n```noot\n// helloWorld.noot\n\nnoot!(\"Hello World\")\n```\n\n## Description\n\nNootlang is a simple scripting language mainly developed for [NootBot](https://github.com/unitoftime/nootbot).\nThe interpreter and parser are intentionally kept simple and readable as it is also\ndeveloped as a learning project. Anyone interested in making programming languages or\nparsers and interpreters in general should be able to understand the code rather easily.\nThe interpreter is therefore focussed on readability rather than speed.\n\n## Roadmap\n\n- **Types**\n  - [x] integers\n  - [x] **strings**\n  - [x] **floats**\n  - [x] **booleans**\n  - [x] functions\n  - [ ] anonymous functions\n  ```noot\n  def myFunc() {}\n  def myOtherFunc(fn) { fn() }\n  myOtherFunc(myFunc)\n  myOtherFunc(|| {})\n  ```\n  - [ ] structs\n  - [ ] interfaces\n  - [ ] tuples\n  - [ ] type assertion\n- **Functions**\n  - [x] functions\n  - [x] **scopes**\n- [ ] modules\n- **Statements**\n  - [x] **if/elsif/else**\n  - [ ] **match**\n\n## Native Function Interface\n\nNative functions (like the ones in the [standard library](/stdlib)), are of the\nfollowing signature:\n\n```go\nfunc(*runtime.Runtime, args []interface{}) (interface{}, error)\n```\n\n- The first argument passed to any function is always the runtime, this contains\nall the variables and functions available.\n- The second is an array of all the arguments passed to this function\n\n- The function can return a value as its first return type, or nil if it does not\nreturn a value\n- If a runtime error occurs during execution, the function should return a\ndescriptive error as its second argument\n\n## Contributing\n\nContributions are always welcome.\n\n- Additions (e.g. new syntax, etc.) to the language should be discussed first in\nan issue befoe submitting a pull request\n- Speed improvements to the interpreter, parser or tokenizer will be accepted as\nlong as they do not compromise on readability. The focus of this project lies in\nreadability for newcomers.\n- However, if you are passionate about making a fast interpreter for nootlang,\nthis is encouraged. Just make a new folder in this project for the faster interpreter\nso that they are separated. Here, readability can be compromised for speed (JIT\ncompilation, caching, etc.)\n- Documentation is highly needed at the moment\n\n## License\n\nNootlang is licensed under the [MIT license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjomy10%2Fnootlang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjomy10%2Fnootlang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjomy10%2Fnootlang/lists"}