MarpaX::Regex <https://github.com/rns/MarpaX-Regex> saw some progress
recently: as an early preview, here is the BNFied version
<https://github.com/rns/MarpaX-Regex/blob/master/t/The_basics.t#L155> of
floating point regexp from perlretut
<http://perldoc.perl.org/perlretut.html#Building-a-regexp> (parses, but ).
Symbols, e.g. <start of line> ::= ^, can be defined for (arguably more)
readability.

Perhaps I'm just "holy overanalyzing, Batman", but I have a question about
empty capturing groups: how to implement them

as is, e.g.

s ::= 'house' ( 'cat' |)
s ::= 'house' ( 'cat' ( 's' |) |)


or allow them only via an empty rule, e.g.

s ::= 'house' ( 'cat' | empty )
s ::= 'house' ( 'cat' ( 's' | empty ) | empty )
empty ::= # empty rule


I'm afraid the right decision is support both, but would appreciate other
opinions. And any early feedback too. :)

As a general (perhaps incomplete) observation, POSIX [1] and Perl6 [2] seem
to forbid empty capturing groups, while PCRE, ECMAscript, Java and .Net
allow them and according to a book [2] such groups can be used
intentionally, even if for the purposes MarpaX::Regex aims to serve.

[1] the empty  group `()' in `a()b' is invalid
https://docs.freebsd.org/info/regex/regex.info.POSIX_Regular_Expression_Compiling.html

[2] http://code.activestate.com/lists/perl6-compiler/9129/

[3] http://goo.gl/Fg2hbF

-- 
You received this message because you are subscribed to the Google Groups 
"marpa parser" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to