Variable: ebnf-optimize
ebnf-optimize is a customizable variable defined in ebnf2ps.el.gz.
Value
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.
This variable was added, or its default value changed, in Emacs 20.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ebnf2ps.el.gz
(defcustom ebnf-optimize nil
"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'."
:type 'boolean
:version "20"
:group 'ebnf-optimization)