nyacc: fixed more CPP issues
authorMatt Wette <matt.wette@gmail.com>
Thu, 23 Feb 2017 01:12:32 +0000 (17:12 -0800)
committerJan Nieuwenhuizen <janneke@gnu.org>
Thu, 23 Feb 2017 01:12:32 +0000 (17:12 -0800)
module/nyacc/ChangeLog
module/nyacc/README.nyacc
module/nyacc/lalr.scm
module/nyacc/lang/c99/body.scm
module/nyacc/lang/c99/cpp.scm
module/nyacc/lang/c99/mach.scm
module/nyacc/lang/c99/parser.scm
module/nyacc/lang/c99/pprint.scm

index cc21b7656a535d6cd018f4c954c53a4451691207..ce9cb65e9360ce03c4aaf1e85b5e61a9a5f7b4f6 100644 (file)
@@ -1,5 +1,7 @@
 2017-02-22  Matt Wette  <mwette@alumni.caltech.edu>
 
+       * lang/c99/cpp.scm (rtokl->string): added handler for 'string
+
        * lang/c99/body.scm: added 'skip state so that if skipping #if
        then no CPP if or elif arguments are evaluated
 
index cfd97e05c9aa077a96f1550e1118c5b531e6c43c..19d6ebc7f92def0653aa1a6ddb49d113a520b4d5 100644 (file)
@@ -1,4 +1,4 @@
-This is a version 0.76.1 of NYACC (Not Yet Another Compiler Compiler!).
+This is a version 0.76.1+c99dev of NYACC (Not Yet Another Compiler Compiler!).
 
 Copyright (C) 2015-2017 Matthew R. Wette
 
index f8909a4831f904c77e5e3f4a5308fd81964d78d7..34dcfe6db0dec500789cc2bcd8bd2a71a2e58a50 100644 (file)
@@ -50,7 +50,7 @@
   #:use-module (nyacc util)
   )
 
-(define *nyacc-version* "0.76.1")
+(define *nyacc-version* "0.76.1+c99dev")
 
 
 ;; @deffn proxy-? sym rhs
index 160e3150ad666108a282fd65051f2ab7d7919b10..c0f210df07049b16a3e21b70fb6be1827f10a0a9 100644 (file)
          ;; Loop between reading tokens and skipping tokens via CPP logic.
          (let iter ((pair (read-token)))
            (case (car ppxs)
-             ((keep) pair)
+             ((keep) ;;(simple-format #t "lx=>~S\n" pair)
+              pair)
              ((skip-done skip-look skip)
               (iter (read-token)))
              (else (error "coding error"))))
index bb38fb88510b4ada2e2eab0601d4c3e36b794fef..18c289200a7f1bdf82e9448d2495596a1dc4b4e1 100644 (file)
        ((('ident . rval) ('ident . lval) . rest)
         (iter stl chl (string-append " " rval) (cdr tkl)))
 
-       (((key . val) . rest)
-        (iter stl chl val rest))
-
        (('space . rest)
         (iter stl (cons #\space chl) nxt rest))
 
+       ((('string . val) . rest)
+        (iter stl (cons #\" chl) val (cons #\" rest)))
+
+       (((key . val) . rest)
+        (iter stl chl val rest))
+
        (otherwise
         (error "no match" tkl)))))))
 
index a58e1c762b7baf09c0f70502f390bda271dca7e5..7da130376fe85e06d8bfa58faf44ba8fb30d8975 100644 (file)
 (define* (dev-parse-c99 #:key
                        (cpp-defs '())  ; CPP defines
                        (inc-dirs '())  ; include directories
-                       (td-dict '())   ; typedef dictionary
+                       (inc-help '())  ; typedef dictionary
                        (mode 'file)    ; mode: 'file or 'code
                        (xdef? #f)      ; expand def function: proc name mode
                        (debug #f))     ; debug
   (catch
    #t ;; 'c99-error 'cpp-error 'nyacc-error
    (lambda ()
-     (let ((info (make-cpi debug cpp-defs (cons "." inc-dirs) td-dict)))
+     (let ((info (make-cpi debug cpp-defs (cons "." inc-dirs) inc-help)))
        (with-fluid*
           *info* info
           (lambda ()
index 1994466dc77e8c775be35231d15b1620776372ea..b3441ba7be480c09a19c1ac60af6755cd45bddef 100644 (file)
@@ -66,8 +66,8 @@
 ;; @example
 ;; (with-input-from-file "abc.c"
 ;;   (parse-c #:cpp-defs '("ABC=123"))
-;;            #:inc-dirs (append '("." "./incs" "/usr/include") c99-std-dict)
-;;            #:inc-help '(("myinc.h" "foo_t" "bar_t"))
+;;            #:inc-dirs '(("." "./incs" "/usr/include"))
+;;            #:inc-help (append '("myinc.h" "foo_t" "bar_t") c99-std-help)
 ;;            #:mode 'file))
 ;; @end example
 (define* (parse-c99 #:key
index 7edf464f323924518369ae384e55f6b6daaeebbc..0afd9f9aebf8185e0485ca4daf52c08b1f46623c 100644 (file)
       ;; |#
       
       ;; expression-statement
+      ((expr-stmt) (sf ";\n"))
       ((expr-stmt ,expr) (ppx expr) (sf ";\n"))
       ((expr-stmt ,expr ,comm) (ppx expr) (sf "; ") (ppx comm))