Add utility procedures for matching and parsing.
authorChris Hanson <org/chris-hanson/cph>
Wed, 17 Jan 2007 03:39:42 +0000 (03:39 +0000)
committerChris Hanson <org/chris-hanson/cph>
Wed, 17 Jan 2007 03:39:42 +0000 (03:39 +0000)
v7/src/runtime/parser-buffer.scm
v7/src/runtime/runtime.pkg

index 4842c24b83e1b31c48caa1868bdca15e5b95f90e..0d9a6b4fe60941b2b94d639b1ae6c7791a4d21c7 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: parser-buffer.scm,v 1.19 2007/01/17 02:48:51 cph Exp $
+$Id: parser-buffer.scm,v 1.20 2007/01/17 03:39:35 cph Exp $
 
 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
@@ -29,8 +29,6 @@ USA.
 
 (declare (usual-integrations))
 \f
-;;;; Parser buffer abstraction
-
 (define-structure parser-buffer
   ;; The string buffer, as a substring:
   string
@@ -82,6 +80,34 @@ USA.
   (make-parser-buffer (make-wide-string min-length) 0 0 0 0 port #f 0))
 
 (define-integrable min-length 256)
+
+(define (complete-*match matcher buffer)
+  (and (matcher buffer)
+       (not (peek-parser-buffer-char buffer))))
+
+(define (*match-string matcher string #!optional start end)
+  (complete-*match matcher (string->parser-buffer string start end)))
+
+(define (*match-utf8-string matcher string #!optional start end)
+  (complete-*match matcher (utf8-string->parser-buffer string start end)))
+
+(define (*match-symbol matcher symbol)
+  (*match-utf8-string matcher (symbol-name symbol)))
+
+(define (complete-*parse parser buffer)
+  (let ((v (parser buffer)))
+    (and v
+        (not (peek-parser-buffer-char buffer))
+        v)))
+
+(define (*parse-string parser string #!optional start end)
+  (complete-*parse parser (string->parser-buffer string start end)))
+
+(define (*parse-utf8-string parser string #!optional start end)
+  (complete-*parse parser (utf8-string->parser-buffer string start end)))
+
+(define (*parse-symbol parser symbol)
+  (*parse-utf8-string parser (symbol-name symbol)))
 \f
 (define-structure parser-buffer-pointer
   (index #f read-only #t)
index 253334daa197a7e2fca7ff52865bee73eea40515..2aace2f527ee86cf93cb65ced55dd5d4b7667442 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: runtime.pkg,v 14.611 2007/01/17 02:48:57 cph Exp $
+$Id: runtime.pkg,v 14.612 2007/01/17 03:39:42 cph Exp $
 
 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
@@ -4765,7 +4765,15 @@ USA.
   (parent (runtime))
   (export ()
          (match-utf8-char-in-alphabet match-parser-buffer-char-in-alphabet)
+         *match-string
+         *match-symbol
+         *match-utf8-string
+         *parse-string
+         *parse-symbol
+         *parse-utf8-string
          call-with-parser-buffer-tail
+         complete-*match
+         complete-*parse
          discard-parser-buffer-head!
          get-parser-buffer-pointer
          get-parser-buffer-tail