Implement PREDICATED-PARSER.
authorChris Hanson <org/chris-hanson/cph>
Sun, 23 Apr 2000 00:40:34 +0000 (00:40 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sun, 23 Apr 2000 00:40:34 +0000 (00:40 +0000)
v7/src/imail/imail.pkg
v7/src/imail/imap-syntax.scm

index 574174b0f52d02d1c8a78b68160009e863b297b4..2e43c4c7e902d7448d733a954b7c1d089bb36be3 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: imail.pkg,v 1.17 2000/04/22 05:07:23 cph Exp $
+;;; $Id: imail.pkg,v 1.18 2000/04/23 00:40:29 cph Exp $
 ;;;
 ;;; Copyright (c) 2000 Massachusetts Institute of Technology
 ;;;
@@ -74,6 +74,7 @@
          parse-string
          parse-substring
          parser-token
+         predicated-parser
          rexp-matcher
          sequence-matcher
          sequence-parser
index 11765dd4acd86d682b3c0149a2f26976f6e7dac2..6b172ddda9a27bd95995dd1787281f04646e37a1 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: imap-syntax.scm,v 1.3 2000/04/22 05:06:24 cph Exp $
+;;; $Id: imap-syntax.scm,v 1.4 2000/04/23 00:40:34 cph Exp $
 ;;;
 ;;; Copyright (c) 2000 Massachusetts Institute of Technology
 ;;;
                     (ci-string-matcher ".not")))
                   'KEYWORD)
     (noise-parser (string-matcher " ("))
-    (list-parser imap:match:astring (string-matcher " ") 'HEADERS)
+    (predicated-parser (list-parser imap:match:astring
+                                   (string-matcher " ")
+                                   'HEADERS)
+                      (lambda (pv) (pair? (parser-token pv 'HEADERS))))
     (noise-parser (string-matcher ")")))))
 
 (define imap:parse:section
        imap:parse:section-text
        (simple-parser (ci-string-matcher "mime") 'KEYWORD)))))
    (lambda (pv)
-     (map* (cons (let ((keyword (parser-token pv 'KEYWORD)))
-                  (and keyword
-                       (intern keyword)))
-                (or (parser-token pv 'HEADERS) '()))
+     (map* (let ((keyword (parser-token pv 'KEYWORD)))
+            (if keyword
+                (cons (intern keyword)
+                      (or (parser-token pv 'HEADERS) '()))
+                '()))
           string->number
           (or (parser-token pv 'NUMBER) '())))
    'SECTION))