language-lua: Lua parser and pretty-printer

[ bsd3, language, library ] [ Propose Tags ]

Lua 5.3 lexer, parser and pretty-printer.

[Skip to Readme]
Versions [faq] 0.1, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.3.0, 0.3.1, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.5.0, 0.6.0, 0.6.2,, 0.6.3,,, 0.7.0, 0.7.1, 0.8.0, 0.8.1, 0.9.0, 0.10.0, 0.11.0 (info)
Change log
Dependencies alex-tools (==0.4.*), array (>=0.4 && <0.6), base (>=4.5 && <4.12), bytestring (==0.10.*), deepseq, text (==1.2.*) [details]
License BSD-3-Clause
Author Ömer Sinan Ağacan, Eric Mertens
Maintainer Eric Mertens <>
Category Language
Home page
Bug tracker
Source repo head: git clone git://
Uploaded by EricMertens at Tue Jun 19 17:04:31 UTC 2018
Distributions NixOS:0.11.0
Downloads 12923 total (540 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]


[Index] [Quick Jump]


Maintainer's Corner

For package maintainers and hackage trustees

Readme for language-lua-0.11.0

[back to package description]

language-lua - Lua 5.3 lexer, parser and pretty-printer

Build Status Hackage

This package is just like any other language x packages. It provides lexer, parser and pretty-printer for Lua programming language.

Haddock documentation


This module provides 3 parsers.

  • chunk: Lua file parser.
  • exp: Lua expression parser.
  • stat: Lua statement parser.

Lexing is needed before running a parser. parseText function runs lexer before parsing. So if you want to parse a Lua expression, you can call parseText exp string, where string is the Lua expression to parse.

parseFile is a helper to parse Lua files. Example: parseFile "/path/to/lua/file". This is same as parseText chunk `fmap` readFile path.

Note that parseText may result with failure, so it's return type is Either ParserError a.


Lexer is not exported by top-level Language.Lua module. You need to import Language.Lua.Lexer. After that, llex string scans the string and returns token list. Tokens are defined in Language.Lua.Token.


Pretty-printer is still under development, and subject to lots of changes. It works, but lots of functionality will be added.

For now, you can use pprint syntax_tree to pretty-print a Lua syntax tree.