X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/ac4780a12cd50a1e185a88a19236c705554d463b..a58c94a2271c0ce77f72eca6561902afa10597cf:/lisp/progmodes/ebnf-otz.el diff --git a/lisp/progmodes/ebnf-otz.el b/lisp/progmodes/ebnf-otz.el index aae8906c38..5c98677c33 100644 --- a/lisp/progmodes/ebnf-otz.el +++ b/lisp/progmodes/ebnf-otz.el @@ -5,7 +5,7 @@ ;; Author: Vinicius Jose Latorre ;; Maintainer: Vinicius Jose Latorre -;; Time-stamp: <2004/02/22 14:24:37 vinicius> +;; Time-stamp: <2004/02/29 18:40:14 vinicius> ;; Keywords: wp, ebnf, PostScript ;; Version: 1.0 @@ -38,6 +38,46 @@ ;; 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]. +;; +;; factoration: +;; 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. +;; +;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Code: