tweak C++ parse-file
authorD Herring <dherring@at.tentpost.dot.com>
Mon, 2 Apr 2012 04:38:38 +0000 (00:38 -0400)
committerD Herring <dherring@at.tentpost.dot.com>
Mon, 2 Apr 2012 04:38:38 +0000 (00:38 -0400)
examples/c++lex-phases.lisp

index 9a48c0e..f24d10c 100644 (file)
   ;; need to make sure whitespace exists between certain tokens?
   (repeat 0 nil (or (preprocessing-token) (whitespace))))
 
-(c++-lex-phase3 "#define a
-//this is a 123456 test
-/* test */
-void f(int *x);
-")
-
 ;;(defrule c++-lex-phase67
 ;;  ;; combine phases 6 and 7?
 ;;  (
@@ -69,4 +63,8 @@ void f(int *x);
     ;; eventually return the AST, the comment list, and the preproc list
     ;; also return a list of newlines (so line/col can be quickly calculated)
     ;; also return an indication if the parse didn't consume the whole file
-    (c++-lex-phase3 str)))
+    (multiple-value-bind (end val)
+        (c++-lex-phase3 str)
+      (unless (= end (length str))
+        (warn "incomplete parse: ~a of ~a" end (length str)))
+      val)))