Hi,
I gave PetitParser 2 a try and I am pretty impressed by the results,
please see the updated table below. =) Again, that's pure parsing and
Array-based AST-building. Moving to PP2 was indeed as easy as sending
#asPParser and working around character ranges ($a - $z). Is there a
preferred way to do the latter?
Jan mentioned that there might be an automated tool to port stuff to
VisualWorks. Do you have a name? And again the old question: what is the
preferred workflow to exchange code between the two dialects? Till now I
stick to FileOut30.
input Prism Storm Xtreams.PEG PP PP2
size parse check check parse cache parse parse optim
230kB 0.1s 10s 6s 9s 3s 2s 4s 0.2s
544kB 0.2s 90s 20s 20s 7s 5s 9s 0.5s
1.1MB 0.4s 392s 46s 34s 13s 8s 15s 1.0s
1.4MB 0.8s 1091s 85s 47s 20s 12s 20s 1.3s
2.2MB 63s 30s 16s 27s 1.9s
2.9MB 81s 44s 20s 34s 2.5s
3.8MB 107s 61s 25s 45s 3.1s
4.4MB 123s 76s 30s 56s 3.7s
Best, Steffen
Am .10.2018, 05:22 Uhr, schrieb Tudor Girba <tu...@tudorgirba.com>:
Hi,
Interesting experiment. Thanks for sharing!
I assume that you tried the original PetitParser. PetitParser2 offers
the possibility to optimize the parser (kind of a compilation), and this
provides a significant speedup:
https://github.com/kursjan/petitparser2
Would you be interested in trying this out?
Cheers,
Doru
On Oct 4, 2018, at 10:46 PM, Steffen Märcker <merk...@web.de> wrote:
I gave Xtreams-Parsing and PetitParser a shot and like to share my
findings.[*]
The task was to parse the modelling language of the probabilistic model
checker PRISM. I've written a grammer of about 130 definitions in the
Xtreams DSL, which is close to Bryan Fords syntax. To avoid doing it
all again with PetitParser, I wrote a PetitParserGenerator that takes
the DSL and builds a PetitParser.
The numbers below are just parsing times, no further actions involved.
For reference I show the times from PRISM (which uses JavaCC), too --
although they involve additional verification and normalization steps
on the AST.
input Prism XP PP
230kB 14s 9s 2s
544kB 121s 20s 5s
1.1MB 421s 34s 8s
1.4MB 1091s 47s 12s
2.2MB 63s 16s
2.9MB 81s 20s
3.8MB 107s 25s
4.4MB 123s 30s
Please note that these times are not representative at all. It's just a
single example and I put zero effort in optimization. However, I am
quite satisfied with the results.
[*] I was already familiar with the DSL of Xtreams-Parsing, which I
like very much. I did not consider SmaCC, as I find PEGs easier to use.
Best, Steffen
Am .10.2018, 20:14 Uhr, schrieb Steffen Märcker <merk...@web.de>:
Dear all,
I have two questions regarding parsing frameworks.
1) Do you have any insights on the performance of SmaCC VS Xtreams
Parsing VS PetitParser?
2) Has anybody started to port PetitParser 2 from Pharo to VW? Is it
worth the effort?
Sorry for cross-posting, I thought this might interest both
communities.
Cheers, Steffen
--
www.feenk.com
"No matter how many recipes we know, we still value a chef."