def _metagrammar(): gstring = util.builtin_grammar("meta.bkgrammar") # Use the bootstrap parser to parse the meta grammar mg = p.BootGrammar().parse(gstring) assert isinstance(mg, p.Grammar) # Use the meta-grammar to parse itself mg2 = mg.parse(gstring) return mg2
def test_parse_meta(): gstring = util.builtin_grammar("meta.bkgrammar") # Use the bootstrap parser to parse the meta grammar mg = p.BootGrammar().parse(gstring) assert isinstance(mg, p.Grammar) # Use the meta-grammar to parse itself mg2 = mg.parse(gstring) rd1 = mg.ruledict rd2 = mg2.ruledict # Check that the results are the same assert rd1.keys() == rd2.keys() pairs = [(rd1[k], rd2[k]) for k in sorted(rd1.keys())] for r1, r2 in pairs: if r1 != r2: r1.dump() r2.dump() assert r1 == r2
def setup_module(): global wg gstring = util.builtin_grammar("wiki.bkgrammar") wg = _parse_wiki_grammar(gstring)
def test_parse_meta_string(): gstring = util.builtin_grammar("meta.bkgrammar") bg = p.BootGrammar() #bg.context.tracing = True out, i = bg.context["rule"].accept(gstring, 0, bg.context) assert out is not p.Miss