{"id":16534367,"url":"https://github.com/njbrown/loris","last_synced_at":"2025-07-31T06:10:44.147Z","repository":{"id":23196569,"uuid":"26553070","full_name":"njbrown/loris","owner":"njbrown","description":"toy language used for making games, currently in development","archived":false,"fork":false,"pushed_at":"2018-09-25T01:19:15.000Z","size":1252,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-02-26T22:22:34.339Z","etag":null,"topics":["bytecode","c-plus-plus","compiler","interpreter","language","parser","programming-language","scripting-language","virtual-machine"],"latest_commit_sha":null,"homepage":"","language":"C++","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/njbrown.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":"2014-11-12T19:45:13.000Z","updated_at":"2023-01-30T20:31:33.000Z","dependencies_parsed_at":"2022-08-21T21:31:10.166Z","dependency_job_id":null,"html_url":"https://github.com/njbrown/loris","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njbrown%2Floris","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njbrown%2Floris/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njbrown%2Floris/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njbrown%2Floris/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/njbrown","download_url":"https://codeload.github.com/njbrown/loris/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219859606,"owners_count":16556035,"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":["bytecode","c-plus-plus","compiler","interpreter","language","parser","programming-language","scripting-language","virtual-machine"],"created_at":"2024-10-11T18:23:38.830Z","updated_at":"2024-10-11T18:23:39.453Z","avatar_url":"https://github.com/njbrown.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Loris\n[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat-square)](https://github.com/njbrown/loris/issues)\n[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://github.com/njbrown/loris/blob/master/LICENSE)\n[![HitCount](http://hits.dwyl.io/njbrown/loris.svg)](https://hits.dwyl.io/njbrown/loris)\n\nEasy scripting in C++.\n\n## Features\n\n*\tSimple and familiar syntax\n*\tObject Oriented\n*\tAuto-binding of c++ functions to Loris\n*\tMark and Sweep Garbage Collection\n*\tEasy to embed in c++ applications\n*\tEasy to extend\n\n## Future Features\n* \tPre-compilation\n\n## Example Usage\n\n\t#include \"loris/loris.hpp\"\n\n\n\tdouble multiply(double a, double b)\n\t{\n\t\treturn a * b;\n\t}\n\n\tint main()\n\t{\n\t\tloris::Loris loris;\n\t\tloris.AddSource(R\"(\n\t\tdef hello()\n\t\t{\n\t\t\treturn multiply(5, 10);\t\t\t\n\t\t}\n\t\t)\");\n\n\t\tloris.AddFunction(\"multiply\", loris::Def(multiply));\n\t\tloris.Compile();\n\n\t\tdouble result = loris.ExecuteFunction\u003cdouble\u003e(\"hello\");\n\t}\n\n## Example Script\n\n\t//class named Hello\n\tclass Hello\n\t{\n\t\t//constructor\n\t\tHello()\n\t\t{\n\t\t\tprint(\"this is a constructor\");\n\t\t}\n\t\t\n\t\t//member function\n\t\tdef Greet()\n\t\t{\n\t\t\t//call print function\n\t\t\tprint(\"hello world!\");\n\t\t}\n\t}\n\n\tdef main()\n\t{\n\t\tvar hello = new Hello();\n\t\thello.Greet();\n\t}\n\n\n## Syntax\n\nhttps://github.com/njbrown/dragonscript/blob/master/SYNTAX.md\n\n\n## Known Issues\n* `or` and `and` statements are parsed but the bytecode isn't generated and will cause errors if used\n* garbage collection sometimes causes random crashes","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjbrown%2Floris","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnjbrown%2Floris","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjbrown%2Floris/lists"}