1 2 3 4 5 6 7 8 9 10 11 12 13 14
import earlpy import sys p = earlpy.Parser("grammars/c") node = p.parse_file(sys.argv[1]) node.print_tree() def visit(n): if isinstance(n, earlpy.Token): return if n.symbol.name == "ERROR": print(n.line_numbers(), n.pprint()) else: for a in n.contents: visit(a) visit(node)