I was reading the slides from PM's YAPC::NA, and a thought drifted into
my mind (more of a gentle alarm, actually). One of the examples struck me:
rule parameter_list { <parameter> [ , <parameter>]* }
Its seems common in the higher layers of a grammar that there are more
non-terminal than terminals in each rule, so maybe the current "rule"
isn't properly huffmanized (also, the comma seemed some-how out of place
-- most symbols will need to be quoted if used in similar context). A
more traditional YACC/YAPP coding of the
rule would be:
rule parameter_list { parameter [ "," parameter ]* }
Is there a strong reason (ambiguity) why every nonterminal needs to be
quoted (or could we at least have a form ( C< rule:y {...} > ) where
they are not)? I see this as increasingly important when rules are used
to process non-textual streams. In these cases every token will need to
be quoted using angle brackets, which at that point might become little
more than line noise.
Dave.