Example #1
0
#    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:
Example #2
0
 def __init__(self, symboltab, grammar, accept, debug=False):
     self.init, self.nullable = earley.simulate(grammar, accept, debug)
     self.symboltab = symboltab
     self.debug = debug
Example #3
0
 def __init__(self, symboltab, grammar, accept, debug=False):
     self.init, self.nullable = earley.simulate(grammar, accept, debug)
     self.symboltab = symboltab
     self.debug = debug
Example #4
0
#    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: