nyacc: more CPP fixes
[mes.git] / module / nyacc / lang / c99 / body.scm
index 1fd664ccbb5a32716c1b92b96143aa37aeba3f0c..9c4a2c1b1549461c15e1e45316bdd87ec01d38ba 100644 (file)
   (if (not (eq? ch #\#)) #f
       (let iter ((cl '()) (ch (read-char)))
        (cond
+        ((eof-object? ch) (throw 'cpp-error "CPP lines must end in newline"))
         ((eq? ch #\newline) (unread-char ch) (list->string (reverse cl)))
         ((eq? ch #\\)
          (let ((c2 (read-char)))
               (cond
                ((exec-cpp-stmts?)
                 (let ((val (eval-cpp-cond-text (cadr stmt))))
+                  ;;(simple-format #t "if val=~S\n" val)
                   (cond
                    ((not val) (p-err "unresolved: ~S" (cadr stmt)))
                    ((zero? val) (set! ppxs (cons* 'skip1-pop 'skip-look ppxs)))
              (else (cons 'cpp-stmt stmt))))
          
          (define (eval-cpp-line line)
+           ;;(simple-format #t "eval-cpp-line: ~S\n" line)
            (with-throw-handler
             'cpp-error
             (lambda () (eval-cpp-stmt (read-cpp-stmt line)))
                 ((read-comm ch bol) => assc-$)
                 ((read-cpp ch) =>
                  (lambda (res) ;; if '() stmt expanded so re-read
+                   ;;(simple-format #t "res=~S\n" res)
                    (if (pair? res) (assc-$ res) (iter (read-char)))))
                 (else (set! bol #f) (iter ch))))
               ((read-ident ch) =>
                (lambda (name)
+                 ;;(simple-format #t "read-ident=>~S\n" name)
                  (let ((symb (string->symbol name)))
                    (cond
                     ((and (x-def? name mode)