nyacc: fixed some c99/util2 items
authorMatt Wette <matt.wette@gmail.com>
Sun, 19 Feb 2017 01:06:50 +0000 (17:06 -0800)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 19 Feb 2017 01:06:50 +0000 (17:06 -0800)
module/nyacc/lang/c99/cpp.scm
module/nyacc/lang/c99/util2.scm

index bb04dffcff56e2a7511bf4dc96a1d1302dd77338..4ca575d8d3486e7f67da31df5ab2c7d6c5c94a4c 100644 (file)
 
 ;; @deffn rtokl->string tokl => string
 ;; Convert reverse token-list to string.
-(define (x-rtokl->string tokl)
-  ;;(let iter ((stl '()) (chl '()) (nxt #f) (tkl tokl)) ;; more efficient
-  (let iter ((stl '()) (tkl tokl))
-    (match tkl
-      ('()
-       (apply string-append stl))
-
-      ((('arg . arg) 'dhash (key . val) . rest)
-       (iter stl (acons key (string-append val arg) (list-tail tkl 3))))
-
-      (((key . val) 'dhash ('arg . arg) . rest)
-       (iter stl (acons 'arg (string-append arg val) (list-tail tkl 3))))
-
-      ((('arg . arg) 'hash . rest)
-       (iter (cons (string-append "\"" arg "\"") stl) (list-tail tkl 2)))
-
-      ((('comm . val) . rest)
-       (iter (cons (string-append "/*" val " */") stl) (cdr tkl)))
-
-      ((('ident . rval) ('ident . lval) . rest)
-       (iter (cons* " " rval stl) (cdr tkl)))
-
-      (((key . val) . rest)
-       (iter (cons val stl) (cdr tkl)))
-
-      (('space . rest)
-       (iter (cons " " stl) rest))
-
-      (((? char? ch) . rest)
-       (iter (cons (string ch) stl) rest))
-
-      (otherwise
-       (error "no match" tkl)))))
-
-(define (y-rtokl->string tokl)
+(define (rtokl->string tokl)
 
   ;; Turn reverse chl into a string and insert it into the string list stl.
   (define (add-chl chl stl)
        (otherwise
         (error "no match" tkl)))))))
 
-(define rtokl->string y-rtokl->string)
-  
 ;; @deffn scan-cpp-input argd used dict end-tok => string
 ;; Process replacement text from the input port and generate a (reversed)
 ;; token-list.  If end-tok, stop at, and push back, @code{,} or @code{)}.
index 913c061a20fc352d209c4c598c4d851b7bb82d75..101c6b040c649f0f66dbd6ba5563df6f0f35d18a 100644 (file)
 ;; ("union" ("bar" . decl) ..)
 (define (tree->udict tree)
   (if (pair? tree)
-      ;;(reverse (fold match-decl '() (cdr tree)))
       (fold match-decl '() (cdr tree))
       '()))
 
 ;; @example
 ;; typedef const int  (*foo_t)(int a, double b);
 ;; extern    foo_t    fctns[2];
-;; @noindent
-;; This routine should create an init-declarator associated with
-;; @end example
-;; extern {const int}  (*{fctns[2]})(int a, double b);
+;; =>
+;; extern const int  (*fctns[2])(int a, double b);
 ;; @end example
 ;; @noindent
 ;; Cool. Eh? (but is it done?)
 (define* (expand-decl-typerefs udecl udecl-dict #:key (keep '()))
-  (display "FIXME: some decls have no init-declr-list\n")
+  ;;(display "FIXME: some decls have no init-declr-list\n")
   ;; between adding (init-declr-list) to those or having predicate
   ;; (has-init-declr? decl)
   (let* ((tag (sx-tag udecl))          ; decl or comp-decl
     (case (car tspec)
       ((typename)
        (cond
-       ((member (cadr tspec) keep)
-        udecl)
-       #;((member (cadr tspec) fixed-width-int-names)
-        ;; Convert it to @code{fixed-type}.
-        (let* ((name (cadr tspec))
-               (fixd-tspec `(type-spec (fixed-type ,name)))
-               (fixd-specl (repl-typespec specl fixd-tspec))
-               ;; TODO add attr
-               (fixed-udecl (cons* tag fixd-specl declr tail)))
-          ;;(expand-decl-typerefs fixed-udecl udecl-dict))) ; not needed ?
-          fixed-udecl))
-       (else
-        ;; splice in the typedef
+       ((member (cadr tspec) keep) udecl)
+       (else ;; splice in the typedef
         (let* ((name (sx-ref tspec 1))
                (decl (assoc-ref udecl-dict name)) ; decl for typename
                (tdef-specl (sx-ref decl 1)) ; decl-spec-list for typename
 (define (udecl->mspec decl . rest)
 
   (define (cnvt-array-size size-spec)
-    (simple-format #t "cnvt-array-size\n")
     (with-output-to-string (lambda () (pretty-print-c99 size-spec))))
 
   (define (unwrap-specl specl)