# u'.': u'dot'} def early(token): return token.value == 'earley' and token.lsp == token.rsp == False grammar = [ #Rule('file', []), # XXX: fix a bug, if you use empty rule instead, it won't parse # XXX: verify that the bug fix works. Rule('file', ['term']), Rule('file', ['term', 'file']), Rule('term', ['symbol']), #Rule('term', ['leftparen', early, 'rightparen']), ] init, nullable = earley.simulate(grammar, 'file', True) source = open(sys.argv[1]).read() stream = L2(CStream(source), table) parser = earley.Parser(init, nullable) while stream.filled: token = stream.advance() parser.step(token) earley.print_result(parser) def traverse(parser, rule, start, stop): midresults = list(parser.chains(rule.rhs, start, stop)) for midresult in midresults:
def __init__(self, symboltab, grammar, accept, debug=False): self.init, self.nullable = earley.simulate(grammar, accept, debug) self.symboltab = symboltab self.debug = debug
# u'.': u'dot'} def early(token): return token.value == "earley" and token.lsp == token.rsp == False grammar = [ # Rule('file', []), # XXX: fix a bug, if you use empty rule instead, it won't parse # XXX: verify that the bug fix works. Rule("file", ["term"]), Rule("file", ["term", "file"]), Rule("term", ["symbol"]), # Rule('term', ['leftparen', early, 'rightparen']), ] init, nullable = earley.simulate(grammar, "file", True) source = open(sys.argv[1]).read() stream = L2(CStream(source), table) parser = earley.Parser(init, nullable) while stream.filled: token = stream.advance() parser.step(token) earley.print_result(parser) def traverse(parser, rule, start, stop): midresults = list(parser.chains(rule.rhs, start, stop)) for midresult in midresults: