ebnf-optimize

ebnf-optimize is a variable defined in `ebnf2ps.el'.
Its value is
nil


Documentation:
Non-nil means optimize syntactic chart of rules.

The following optimizations are done:

left recursion:
1. A = B | A C. ==> A = B {C}*.
2. A = B | A B. ==> A = {B}+.
3. A = | A B. ==> A = {B}*.
4. A = B | A C B. ==> A = {B || C}+.
5. A = B | D | A C | A E. ==> A = ( B | D ) { C | E }*.

optional:
6. A = B | . ==> A = [B].
7. A = | B . ==> A = [B].

factorization:
8. A = B C | B D. ==> A = B (C | D).
9. A = C B | D B. ==> A = (C | D) B.
10. A = B C E | B D E. ==> A = B (C | D) E.

The above optimizations are specially useful when `ebnf-syntax' is `yacc'.

You can customize this variable.

This variable was introduced, or its default value was changed, in version 20 of Emacs.