{"id":19026562,"url":"https://github.com/sbdchd/luis","last_synced_at":"2025-04-23T12:50:49.480Z","repository":{"id":57635389,"uuid":"149940810","full_name":"sbdchd/luis","owner":"sbdchd","description":"A Lua parser in Rust","archived":false,"fork":false,"pushed_at":"2019-03-11T02:08:05.000Z","size":63,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-18T00:11:12.522Z","etag":null,"topics":["lua","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sbdchd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-23T02:16:07.000Z","updated_at":"2025-01-04T10:42:17.000Z","dependencies_parsed_at":"2022-09-26T20:21:54.444Z","dependency_job_id":null,"html_url":"https://github.com/sbdchd/luis","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbdchd%2Fluis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbdchd%2Fluis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbdchd%2Fluis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbdchd%2Fluis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sbdchd","download_url":"https://codeload.github.com/sbdchd/luis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250438078,"owners_count":21430809,"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":["lua","rust"],"created_at":"2024-11-08T20:49:40.906Z","updated_at":"2025-04-23T12:50:49.457Z","avatar_url":"https://github.com/sbdchd.png","language":"Rust","readme":"# luis [![CircleCI](https://circleci.com/gh/sbdchd/luis.svg?style=svg)](https://circleci.com/gh/sbdchd/luis) [![cargo-badge](https://img.shields.io/crates/v/luis.svg)](https://crates.io/crates/luis)\n\n\u003e A Rust based Lua parser\n\n## Why?\n\nlearning experience\n\n## Prior art\n\n- \u003chttps://github.com/rozbb/nom-lua53\u003e\n- \u003chttps://github.com/LPGhatguy/mab\u003e\n\nfrom \u003chttps://www.lua.org/manual/5.3/manual.html\u003e\n\n```\nchunk ::= block\n\nblock ::= {stat} [retstat]\n\nstat ::=  ‘;’ |\n        varlist ‘=’ explist |\n        functioncall |\n        label |\n        break |\n        goto Name |\n        do block end |\n        while exp do block end |\n        repeat block until exp |\n        if exp then block {elseif exp then block} [else block] end |\n        for Name ‘=’ exp ‘,’ exp [‘,’ exp] do block end |\n        for namelist in explist do block end |\n        function funcname funcbody |\n        local function Name funcbody |\n        local namelist [‘=’ explist]\n\nretstat ::= return [explist] [‘;’]\n\nlabel ::= ‘::’ Name ‘::’\n\nfuncname ::= Name {‘.’ Name} [‘:’ Name]\n\nvarlist ::= var {‘,’ var}\n\nvar ::=  Name | prefixexp ‘[’ exp ‘]’ | prefixexp ‘.’ Name\n\nnamelist ::= Name {‘,’ Name}\n\nexplist ::= exp {‘,’ exp}\n\nexp ::=  nil | false | true | Numeral | LiteralString | ‘...’ | functiondef |\n        prefixexp | tableconstructor | exp binop exp | unop exp\n\nprefixexp ::= var | functioncall | ‘(’ exp ‘)’\n\nfunctioncall ::=  prefixexp args | prefixexp ‘:’ Name args\n\nargs ::=  ‘(’ [explist] ‘)’ | tableconstructor | LiteralString\n\nfunctiondef ::= function funcbody\n\nfuncbody ::= ‘(’ [parlist] ‘)’ block end\n\nparlist ::= namelist [‘,’ ‘...’] | ‘...’\n\ntableconstructor ::= ‘{’ [fieldlist] ‘}’\n\nfieldlist ::= field {fieldsep field} [fieldsep]\n\nfield ::= ‘[’ exp ‘]’ ‘=’ exp | Name ‘=’ exp | exp\n\nfieldsep ::= ‘,’ | ‘;’\n\nbinop ::=  ‘+’ | ‘-’ | ‘*’ | ‘/’ | ‘//’ | ‘^’ | ‘%’ |\n        ‘\u0026’ | ‘~’ | ‘|’ | ‘\u003e\u003e’ | ‘\u003c\u003c’ | ‘..’ |\n        ‘\u003c’ | ‘\u003c=’ | ‘\u003e’ | ‘\u003e=’ | ‘==’ | ‘~=’ |\n        and | or\n\nunop ::= ‘-’ | not | ‘#’ | ‘~’\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbdchd%2Fluis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsbdchd%2Fluis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbdchd%2Fluis/lists"}