nyacc: new release 0.75.5
authorMatt Wette <matt.wette@gmail.com>
Fri, 17 Feb 2017 16:30:20 +0000 (08:30 -0800)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 17 Feb 2017 16:30:20 +0000 (08:30 -0800)
module/nyacc/README.nyacc
module/nyacc/lalr.scm
module/nyacc/lang/c99/body.scm
module/nyacc/lang/c99/util1.scm
module/nyacc/lang/c99/util2.scm

index dded99c65d97bb5ede251581daa86d40c22d56e3..314cdb3c6e38c3406f7050b48671a4af62af9a91 100644 (file)
@@ -1,4 +1,4 @@
-This is a version 0.75.4 of NYACC (Not Yet Another Compiler Compiler!).
+This is a version 0.75.5 of NYACC (Not Yet Another Compiler Compiler!).
 
 Copyright (C) 2015-2017 Matthew R. Wette
 
index 244ed998f7e9aaf6388119a66e0f85926134fa57..1ec739943277dd576b76f970287657b96fef33f9 100644 (file)
@@ -50,7 +50,7 @@
   #:use-module (nyacc util)
   )
 
-(define *nyacc-version* "0.75.4")
+(define *nyacc-version* "0.75.5")
 
 
 ;; @deffn proxy-? sym rhs
index 35298d0177ecd9d608dae182478d8088e761454d..ee00d4ca3295a2de6019cfae45645f7475220346 100644 (file)
               (throw 'c99-error "CPP error"))))
 
          ;; Composition of @code{read-cpp-line} and @code{eval-cpp-line}.
-         ;; We should not be doing this!
          (define (read-cpp-stmt ch)
            (and=> (read-cpp-line ch) cpp-line->stmt))
 
          (let iter ((pair (read-token)))
            (case (car ppxs)
              ((keep)
+              ;;(simple-format #t "lx=>~S\n" pair)
               pair)
              ((skip-done skip-look)
               (iter (read-token)))
index 5e5bb5e3dbe4edb7d5e9e635150e5e4c43930670..cc0a2cf68385aea06974be205ea9cb6529c31600 100644 (file)
@@ -28,6 +28,9 @@
   #:use-module (srfi srfi-2) ;; and-let*
   #:use-module (sxml fold)
   #:use-module (sxml match)
+  #:use-module (ice-9 popen)           ; gen-cc-defs
+  #:use-module (ice-9 rdelim)          ; gen-cc-defs
+  #:use-module (ice-9 regex)           ; gen-cc-defs
 )
 
 ;; include-helper for C99 std
index 529b79bc53bd4bde736a4f19a2477e3d810934a4..913c061a20fc352d209c4c598c4d851b7bb82d75 100644 (file)
@@ -1,6 +1,6 @@
 ;;; nyacc/lang/c99/util2.scm - C processing code
 ;;; 
-;;; Copyright (C) 2015,2016 Matthew R. Wette
+;;; Copyright (C) 2015-2017 Matthew R. Wette
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by 
 ;;       (sx1 (merge-inc-trees! sx0))
 ;;       (name-dict (fold match-decl-1 '() (cdr sx1))))
 ;; @end example
+;; TODO: add enums because they are global!!
+;; turn enum { ABC = 123 }; into '(ABC . (enum .. "ABC" "123" .. )
 (define (match-decl decl seed)
   (let* ((tag (sx-ref decl 0)) (attr (sx-attr decl)))
     (case tag
              (tbd (sx-ref decl 2)))    ; (init-declr-list ...) OR ...
         (cond
          ((or (not tbd) (eqv? 'comment (sx-tag tbd)))
-          (display "ISSUE: some decls have no init-declr-list\n")
-          ;; no init-declr-list => struct or union def or param-decl
-          ;;(display "spec:\n") (pretty-print spec)
+          ;; no init-declr-list => struct or union def or param-decl enum
+          ;;(display "spec:\n") (pretty-print decl)
           (sxml-match spec
             ((decl-spec-list
               (type-spec
               (type-spec
                (union-def (ident ,name) . ,rest2) . ,rest1))
              (acons `(union . ,name) decl seed))
+            ((decl-spec-list
+              (type-spec
+               (enum-def
+                (enum-def-list
+                 (enum-defn
+                  (ident "ABC")
+                  (p-expr (fixed "123")))))))
+             ;; TODO
+             seed)
             (,otherwise
-             (display "otherwise:\n") (pretty-print (cdr spec))
+             ;; e.g., enum { VAL = 1 };
+             ;;(simple-format #t "+++ otherwise: ~S\n" tbd) (pretty-print decl)
              seed)))
          (else ;; decl with init-declr-list
           (let* ((id-l tbd) (tail (sx-tail decl 3)))