Am 06.11.15 um 20:52 schrieb ru...@yahoo.com:
I have always thought lexing
and parsing solutions for Python were a weak spot in the Python eco-
system and I was about to write that I would love to see a PEG parser
for python when I saw this:

http://fdik.org/pyPEG/

Unfortunately it suffers from the same problem that Pyparsing, Ply
and the rest suffer from: they use Python syntax to express the
parsing rules rather than using a dedicated problem-specific syntax
such as you used to illustrate peg parsing:

pattern <- phone_number name phone_number
>> phone_number <- '+' [0-9]+ ( '-' [0-9]+ )*
>> name <-  [[:alpha:]]+

That is actually real syntax of a parser generator used by me for another language (Tcl). A calculator example using this package can be found here: http://wiki.tcl.tk/39011
(actually it is a retargetable compiler in a few lines - very impressive)

And exactly as you say, it is working well exactly because it doesn't try to abuse function composition in the frontend to construct the parser.

Looking through the parser generators listed at http://bford.info/packrat/ it seems that waxeye could be interesting http://waxeye.org/manual.html#_using_waxeye - however I'm not sure the Python backend works with Python 3, maybe there will be unicode issues. Another bonus would be a compilable backend, like Cython or similar. The pt package mentioned above allows to generate a C module with an interface for Tcl. Compiled parsers are approximately 100x faster. I would expect a similar speedup for Python parsers.

Some here have complained about excessive brevity of regexs but I
much prefer using problem-specific syntax like "(a*)" to having to
express a pattern using python with something like

star = RegexMatchAny()
a_group = RegexGroup('a' + star)
...

Yeah that is nonsense. Mechanical verbosity never leads to clarity (XML anyone?)

I think in many cases those most hostile to regexes are the also
those who use them (or need to use them) the least. While my use
of regexes are limited to fairly simple ones they are complicated
enough that I'm sure it would take orders of magnitude longer
to get the same effect in python.

That's also my impression. The "two problems quote" was lame already for the first time. If you are satisfied with simple string functions, then either you do not have problems where you need regexps/other formal parsing tools, or you are very masochistic.

        Christian
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to