Runtime token CFG parsing with ambiguity-preserving packed forests and bounded queries.
moon add LuoYunze-nuist/moonearley@0.1.1import { "LuoYunze-nuist/moonearley" }let grammar = @moonearley.parse_grammar("S -> 'name' '=' 'number';").unwrap()
let report = @moonearley.parse(grammar, [
@moonearley.token("name", "answer", 0, 6),
@moonearley.token("=", "=", 7, 8),
@moonearley.token("number", "42", 9, 11),
]).unwrap()
assert_true(report.accepted())
assert_eq(report.forest().count().unwrap(), @moonearley.Finite(1))@start E;
E -> ['add'] E '+' E | ['number'] 'n' | ['empty'] ;moon run examples/expression --target js --deny-warn
moon run examples/language_service --target js --deny-warn
moon run examples/grammar_qa --target js --deny-warnpython scripts/check_toolchain.py
moon info && moon fmt
moon fmt --check
moon check --target wasm-gc --deny-warn
moon build --target wasm-gc --deny-warn
moon test --target wasm-gc --deny-warn
python scripts/audit_sources.py --require-production 1500
python scripts/audit_history.py --minimum-nonempty 20git clone https://github.com/lark-parser/lark ../lark-reference
git -C ../lark-reference checkout 9a4fb9c7458e8155636773a3cded0016d52516da
python scripts/reference_check.py --lark-source ../lark-reference --target jspub(all) struct GrammarDiagnostic {
kind : GrammarLintKind
rule_index : Int
rule_label : String
related_rules : Array[Int]
nonterminals : Array[String]
message : String
} derive(Eq, Debug)fn GrammarSets::first_sequence(self : GrammarSets, symbols : Array[Symbol]) -> Result[FirstSet, Problem]Install
Download zipRuntime token CFG parsing with ambiguity-preserving packed forests and bounded queries.