yacc.py 文件源码

python
阅读 31 收藏 0 点赞 0 评论 0

项目:sly 作者: dabeaz 项目源码 文件源码
def _collect_grammar_rules(func):
    grammar = []
    while func:
        prodname = func.__name__
        unwrapped = inspect.unwrap(func)
        filename = unwrapped.__code__.co_filename
        lineno = unwrapped.__code__.co_firstlineno
        for rule, lineno in zip(func.rules, range(lineno+len(func.rules)-1, 0, -1)):
            syms = rule.split()
            if syms[1:2] == [':'] or syms[1:2] == ['::=']:
                grammar.append((func, filename, lineno, syms[0], syms[2:]))
            else:
                grammar.append((func, filename, lineno, prodname, syms))
        func = getattr(func, 'next_func', None)

    return grammar
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号