Added an example
authorD Herring <dherring@at.tentpost.dot.com>
Thu, 8 Mar 2007 04:41:07 +0000 (23:41 -0500)
committerD Herring <dherring@at.tentpost.dot.com>
Thu, 8 Mar 2007 04:41:07 +0000 (23:41 -0500)
parser.lisp

index 116933d..a05501a 100644 (file)
    (grammar-* parse-token)
    (grammar-string ")")))
 
+;; Example from ISO EBNF spec, section 5.8
+(defun letter (string &key (start 0))
+  (grammar-or
+   (grammar-string "A")
+   (grammar-string "B")
+   (grammar-string "C")
+   (grammar-string "D")
+   (grammar-string "E")
+   (grammar-string "F")
+   (grammar-string "G")
+   (grammar-string "H")
+   (grammar-string "I")
+   (grammar-string "J")
+   (grammar-string "K")
+   (grammar-string "L")
+   (grammar-string "M")
+   (grammar-string "N")
+   (grammar-string "O")
+   (grammar-string "P")
+   (grammar-string "Q")
+   (grammar-string "R")
+   (grammar-string "S")
+   (grammar-string "T")
+   (grammar-string "U")
+   (grammar-string "V")
+   (grammar-string "W")
+   (grammar-string "X")
+   (grammar-string "Y")
+   (grammar-string "Z")))
+
+(defun vowel (string &key (start 0))
+  (grammar-or
+   (grammar-string "A")
+   (grammar-string "E")
+   (grammar-string "I")
+   (grammar-string "O")
+   (grammar-string "U")))
+
+(defun consonant (string &key (start 0))
+  (grammar-exception
+   (letter string :start start)
+   (vowel string :start start)))
+
+(defun ee (string &key (start 0))
+  (grammar-and
+   (grammar-exception (grammar-* (grammar-string "A"))
+                      nil)
+   (grammar-string "E")))
+
 
 ;;;; Special conditions