Frans Englich wrote:
Sometimes I write grammar constructs like this:

StringLiteral: STRING_LITERAL

and use StringLiteral in subsequent rules, instead of STRING_LITERAL directly. The reason is readability, and to stay consistent with an EBNF specification.

I wonder, does this cause a negative performance impact? When I compile the parser with extra debug output I see that it actually performs a STRING_LITERAL --> StringLiteral reduction.

These rules are called "unit rules" in the literature; much effort was devoted to wiping them out automatically from LR parsers since they account for a non-negligible space and time overhead (an old paper by Joliat mentionned a 47% time improvement when getting rid of them). If you want to learn more about these techniques, the chapter on LR optimization in Sippu and Soisalon-Soininen's _Parsing_Theory_ seems rather exhaustive.

--
  Sylvain


_______________________________________________
[email protected] http://lists.gnu.org/mailman/listinfo/help-bison

Reply via email to