## 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.