# nom-lua [![travis-badge][]][travis] [![appveyor-badge][]][appveyor] [![coveralls-badge][]][coveralls] [![license-badge][]][license] [![docs-badge][]][docs]
Lua 5.3 parser written with nom
# Syntax
- [ ] chunk (needs tests)
- [x] block
- [ ] stat
- [x] ";"
- [ ] varlist = explist
- [ ] functioncall (deps functioncall)
- [x] label
- [x] "break"
- [x] goto
- [ ] do end
- [ ] while
- [ ] repeat until
- [ ] if
- [ ] for
- [ ] for in
- [ ] function (deps funcname)
- [ ] local function
- [ ] local
- [x] retstat (needs tests)
- [x] label
- [ ] varlist (deps var)
- [x] var
- [x] namelist (needs tests)
- [x] explist (needs tests)
- [x] exp (needs tests)
- [x] Numeral
- [x] Nil
- [x] Bool
- [x] LiteralString
- [x] "..."
- [x] functiondef
- [x] prefixexp
- [x] tableconstructor
- [x] op
- [ ] prefixexp (needs to be finished)
- [ ] functioncall (deps args, prefixexp)
- [ ] args (deps explist, tableconstructor, LiteralString)
- [x] funcname
- [x] functiondef
- [x] funcbody
- [x] parlist
- [x] tableconstructor (needs tests)
- [x] fieldlist (needs tests)
- [x] field
- [x] fieldsep
- [x] Binop (percedence error)
- [x] Unop
- [x] Name
- [x] Numeral
- [X] Digit
- [X] Hex Digit
- [X] Float
- [ ] Hex Float
- [x] LitrealString
- [ ] Short Literal
- [x] linebreaks
- [ ] byte
- [x] unicode
- [x] escape
- [ ] '\z'
- [ ] Literal
# TODO
- [ ] Different integer and floating point values (i32, f32)
- [ ] Better syntax errors
- [x] Fallback to floats on overflow
- [ ] Benchmarks
- [ ] Fuzzing
- [ ] Change tests to fail instead of panicking
- [ ] Enforce ASTNodes correctness on more operations
For example, BinOp could take a BinOp enum instead of ASTNode
- [ ] Build all features on CI
## License
nom-lua is primarily distributed under the terms of both the MIT license
and the Apache License (Version 2.0).
See [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) for details.
[travis-badge]: https://img.shields.io/travis/afonso360/nom-lua/master.svg?style=flat-square
[appveyor-badge]: https://img.shields.io/appveyor/ci/afonso360/nom-lua/master.svg?style=flat-square
[coveralls-badge]: https://img.shields.io/coveralls/afonso360/nom-lua/master.svg?style=flat-square
[license-badge]: https://img.shields.io/badge/license-MIT%20or%20Apache%202.0-blue.svg?style=flat-square
[docs-badge]: https://img.shields.io/badge/docs-0.0.2-blue.svg?style=flat-square
[travis]: https://travis-ci.org/afonso360/nom-lua
[appveyor]: https://ci.appveyor.com/project/afonso360/nom-lua
[coveralls]: https://coveralls.io/github/afonso360/nom-lua
[docs]: https://docs.rs/nom-lua/0.0.2/nom-lua/
[license]: https://github.com/afonso360/nom-lua#license