Author: Maciej Fijalkowski <fij...@gmail.com> Branch: Changeset: r54422:563a7d2fac42 Date: 2012-04-16 12:30 +0200 http://bitbucket.org/pypy/pypy/changeset/563a7d2fac42/
Log: a simple recursive finder of source positions diff --git a/pypy/rlib/parsing/test/test_ebnfparse.py b/pypy/rlib/parsing/test/test_ebnfparse.py --- a/pypy/rlib/parsing/test/test_ebnfparse.py +++ b/pypy/rlib/parsing/test/test_ebnfparse.py @@ -103,6 +103,7 @@ """) parse = make_parse_function(regexs, rules) tree = parse("prefix(\n\tlonger(and_nested(term(X))), Xya, _, X0, _).") + assert tree.children[0].children[0].children[2].children[0].getsourcepos().lineno == 1 assert tree is not None tree = parse(""" foo(X, Y) :- bar(Y, X), bar(Y, X) ; foobar(X, Y, 1234, atom).""") diff --git a/pypy/rlib/parsing/tree.py b/pypy/rlib/parsing/tree.py --- a/pypy/rlib/parsing/tree.py +++ b/pypy/rlib/parsing/tree.py @@ -23,6 +23,9 @@ self.symbol = symbol self.additional_info = additional_info self.token = token + + def getsourcepos(self): + return self.token.source_pos def __repr__(self): return "Symbol(%r, %r)" % (self.symbol, self.additional_info) @@ -49,6 +52,9 @@ self.children = children self.symbol = symbol + def getsourcepos(self): + return self.children[0].getsourcepos() + def __str__(self): return "%s(%s)" % (self.symbol, ", ".join([str(c) for c in self.children])) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit