mixfix v0.0.2
mixfix
mixfix expression parser
Based on: Parsing Mixfix Operators
parser
Parser a = List token → Error ∨ NonEmptyList (a × List token)
Parsers are functions taking list of tokens and returning either error or possible parse results.
In actual implementation List token is represented by an array of tokens and an index into it.
parser.parse(@: Parser a, tokens: List token): aParse
tokens. Returns first parse result.parser.map(@: Parser a, f: a -> b): Parser bparser.uniq(@: Parser a): Parser aparser.satisfy(@: Parser a, predicate: a -> Boolean): Parser aparser.end(@: Parser a): Parser aparser.many(@: Parser a): Parser (Array a)parser.some(@: Parser a): Parser (Array a)parser.left(@: Parser a, other: Parser b): Parser aparser.right(@: Parser a, other: Parser b): Parser bpure(x: a): Parser afail(error: Err): Parser aany: Parser acombine(p: Parser a..., f: a... -> b): Parser bchoice(p: Parser a | List (Parser a)...): Parser alazy(f: => Parser a): Parser a
lexer
A very simple lexer.
lexer.create(specification: List (String | RegExp)): String -> List StringCreates a tokenizer function.
Release History
- 0.0.2 — 2015-01-07 — Simple lexer
- 0.0.1 — 2014-11-23 — Parser combinators
Contributing
README.mdis generated from the source with ljs- Before creating a pull request run
make test, yet travis will do it for you.