[XML-SIG] Announcing PyXPath 1.0

Martin v. Loewis martin@loewis.home.cs.tu-berlin.de
Tue, 12 Dec 2000 00:24:52 +0100


--Multipart_Tue_Dec_12_00:24:52_2000-1
Content-Type: text/plain; charset=US-ASCII

After recent discussions on removing lex and yacc from 4XPath, I got
interested in writing a 100% pure XPath parser in Python, using
available parser generators.

The first result of this research is attached below. It hasn't been
tested much, but it does recognize the LocationPath expressions that
are given as examples in the XPath spec.

The parser is based on YAPPS. Since YAPPS is LL(1), some rewriting of
the grammar was necessary to make it LL(1).

I found that the generated scanner class of YAPPS is not usable for
XPath: there is a number of context-sensitive aspects in the XPath
lexis that make the straight-forward longest-match approach of YAPPS
unsuitable.

In particular, a regex lexer cannot distinguish between an NCName and
a FunctionName, and may decide to return an OperatorName in places
where it shouldn't. I tried resolving the former problem by only
having NCName as a token, but that caused a conflict in the LL(1)
parsing algorithm, which could not tell whether an expression was
going to be a FunctionCall (that would require to look ahead to the
LPAREN).

I haven't done any performance measurements with this grammar
yet. Also, it returns some ad-hoc data structure as the parse tree. If
there is interest, I will try to have it generate 4XPath data
structures; I'd probably need help from a 4Suite expert here.

I have tested the capability of parsing a Unicode string. The
definition of an NCName needs further work, since it does not yet
reflect the set of characters that count as letters in XML (or what
else is allowed in NCNames).

Regards,
Martin


--Multipart_Tue_Dec_12_00:24:52_2000-1
Content-Type: application/octet-stream; type=tar+gzip
Content-Disposition: attachment; filename="PyXPath.tgz"
Content-Transfer-Encoding: base64

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
9CM5+pUFQ7H4Ft/iW3yL78v6/g9ORwHsAEABAA==

--Multipart_Tue_Dec_12_00:24:52_2000-1
Content-Type: text/plain; charset=US-ASCII






--Multipart_Tue_Dec_12_00:24:52_2000-1--