stelar

Crates.iostelar
lib.rsstelar
version0.1.3
sourcesrc
created_at2019-08-06 10:24:30.764439
updated_at2019-08-09 09:51:35.68264
descriptionA SLR table generator, and LR parser
homepage
repositoryhttps://github.com/traxys/stelar
max_upload_size
id154507
size43,129
(traxys)

documentation

README

stelar

stelar is an SLR parser

Why stelar ? Because SteLaR.

The generation of the SLR parse table is absolutely not optimized, as such you should generate it once, save it somewhere by serializing it with serde and get it back that way

Usage

You will need to define two types, T and NT, both need to be Hash + Clone + PartialEq + Eq.

Morever if you want more meaningfull errors you should have Debug.

T is the token, or terminal type, representing the input values. NT are the grammar construct.

You then have to define rules of the form (NT, Vec<Symbol<T, NT>>) and call create_rules.

To make the rule definition easier there is a macro rule_rhs![], it works by creating a Vec of symbols such that [..., Foo, ...] is mapped to Symbol::Terminal(Foo) and [...., (Bar), ....] is mapped to Symbol::NonTerminal(Bar).

And a grammar g is a Vec of such rules, such that g[i].index == i.

With this grammar you can generate a ParseTable<T, NT>.

You will then need an iterator of ValuedToken<T, V>, being a token T maybe associated with a Value V (Option<V>).

With this you can create and parse data.

Example

An example of how evrything is done is provided in calc_grammar

Commit count: 36

cargo fmt