Today and tomorrow are both $job days, so I didn't get much time to play with Pugs.
Still I managed to transcribe most of PGE::P6Rule to Text.Parser.Rule, so about 80% of rule syntax is now parsed correctly into a Rule tree. Instead of using GADTs, I went for a more conventional cascading data type approach, with five levels of rule nodes:
(Alternation > Conjunction > Concat > Quantified > Term)
Moreover, list-associative infix support landed in OpTable parser, so /(a|b|c)/ is now parsed as alternation of a three-element list, instead of (a|(b|c)) in the current PGE implementation.
Most of those nodes have straightforward mappings to PArrows, so I implemented them trivially. However, capturing groups, subrules and binding will have to wait until tomorrow. After this week's $job is done, I'll get more continuous timeslices to go back to finish container type support in PILN. Stay tuned!
Comments