nyacc: worked c99/util2.scm udecl->mspec
authorMatt Wette <matt.wette@gmail.com>
Sun, 19 Feb 2017 16:26:30 +0000 (08:26 -0800)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 19 Feb 2017 16:26:30 +0000 (08:26 -0800)
module/nyacc/README.nyacc
module/nyacc/lalr.scm
module/nyacc/lang/c99/util2.scm

index 775df8e5971c4b53d20208c3e72f62ffb4e224bf..0de47f5acf189b1abaf21c80fcdcbb9d6f3781b6 100644 (file)
@@ -1,4 +1,4 @@
-This is a version 0.75.6 of NYACC (Not Yet Another Compiler Compiler!).
+This is a version 0.75.6+c99dev of NYACC (Not Yet Another Compiler Compiler!).
 
 Copyright (C) 2015-2017 Matthew R. Wette
 
index 0d58896ae274fa4b98619e0d65e1d171c3fccc26..054d85592432e4a1f62d835b76808cb2006dfa4c 100644 (file)
@@ -50,7 +50,7 @@
   #:use-module (nyacc util)
   )
 
-(define *nyacc-version* "0.75.6")
+(define *nyacc-version* "0.75.6+c99dev")
 
 
 ;; @deffn proxy-? sym rhs
index 101c6b040c649f0f66dbd6ba5563df6f0f35d18a..94911efd1f52d58a3e335980b1e0c82f6b558084 100644 (file)
         (m-decl (reverse (cons m-specl m-declr))))
     m-decl))
 
+;; @deffn udecl->mspec/comm decl [dict] [#:def-comm ""]
+;; Convert declaration tree to an mspec
+;; @example
+;; (decl ... (comment "state vector")
+;; =>
+;; ("x" "state vector" (array-of 10) (float "double")
+;; @end example
 (define* (udecl->mspec/comm decl #:optional (dict '()) #:key (def-comm ""))
-  (let* ((comm (sx-ref decl 3))
+  (let* ((comm (or (and=> (sx-ref decl 3) cadr) def-comm))
         (spec (udecl->mspec decl dict)))
-    (cons* (car spec) (or comm `(comment ,def-comm)) (cdr spec))))
+    (cons* (car spec) comm (cdr spec))))
 
 ;; @deffn fix-fields flds => flds
 ;; This will take a list of fields from a struct and remove lone comments.