File: ebnf-otz.el.html

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


This is part of ebnf2ps package.

This package defines an optimizer for ebnf2ps.

See ebnf2ps.el for documentation.

Optimizations
-------------


*To be implemented*:
   left recursion:
   A = B | A C B | A C D. ==> A = B {C (B | D)}*.

   right recursion:
   A = B | C A. ==> A = {C}* B.
   A = B | D | C A | E A. ==> A = { C | E }* ( B | D ).

   optional:
   A = B | C B. ==> A = [C] B.
   A = B | B C. ==> A = B [C].
   A = D | B D | B C D. ==> A = [B [C]] D.


*Already implemented*:
   left recursion:
   A = B | A C. ==> A = B {C}*.
   A = B | A B. ==> A = {B}+.
   A = | A B. ==> A = {B}*.
   A = B | A C B. ==> A = {B || C}+.
   A = B | D | A C | A E. ==> A = ( B | D ) { C | E }*.

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

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

   none:
   A = B | C | . ==> A = B | C | .
   A = B | C A D. ==> A = B | C A D.


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Defined variables (1)

ebnf-empty-rule-listList of empty rule name.

Defined functions (20)

ebnf-add-empty-rule-list(RULE)
ebnf-create-alternative(ALT)
ebnf-eliminate-empty(RULE)
ebnf-eliminate-empty-rules(SYNTAX-LIST)
ebnf-extract-empty(ELIST)
ebnf-map-list-to-optional(NLIST)
ebnf-map-node-to-optional(NODE)
ebnf-node-equal(A B)
ebnf-node-equal-header(NODE HEADER)
ebnf-optimize(SYNTAX-LIST)
ebnf-optimize1(PROD)
ebnf-otz-initialize()
ebnf-prefix-suffix(LIS)
ebnf-split-header-prefix(NODE-LIST HEADER)
ebnf-split-header-prefix1(NODE-LIST HEADER)
ebnf-split-header-suffix(NLIST ZLIST)
ebnf-split-header-suffix1(NE ZE)
ebnf-split-prefix(LIS)
ebnf-split-suffix(LIS)
ebnf-unique-list(NLIST)

Defined faces (0)