nyacc: fixed bug in pretty-print-c99 wrt i-sel
authorMatt Wette <matt.wette@gmail.com>
Tue, 28 Feb 2017 17:53:41 +0000 (09:53 -0800)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 28 Feb 2017 17:53:41 +0000 (09:53 -0800)
module/nyacc/ChangeLog
module/nyacc/lang/c99/pprint.scm
module/nyacc/lang/c99/util2.scm
module/nyacc/lang/util.scm

index ce9cb65e9360ce03c4aaf1e85b5e61a9a5f7b4f6..e09aaefed82711750275a54168fbf9e5bcad8930 100644 (file)
@@ -1,3 +1,7 @@
+2017-02-28  Matt Wette  <mwette@alumni.caltech.edu>
+
+       * lang/c99/pprint.scm: (binary 'd-del .. => (binary 'd-sel
+
 2017-02-22  Matt Wette  <mwette@alumni.caltech.edu>
 
        * lang/c99/cpp.scm (rtokl->string): added handler for 'string
index 0afd9f9aebf8185e0485ca4daf52c08b1f46623c..e0bab69c080894ffc23be9220087fe8929ae9903 100644 (file)
       ((array-ref ,dim ,expr)
        (ppx expr) (sf "[") (ppx dim) (sf "]"))
 
-      ((d-sel ,id ,ex) (binary 'd-del "." ex id))
-      ((i-sel ,id ,ex) (binary 'i-del "->" ex id))
+      ((d-sel ,id ,ex) (binary 'd-sel "." ex id))
+      ((i-sel ,id ,ex) (binary 'i-sel "->" ex id))
 
       ((pre-inc ,expr) (unary/l 'pre-inc "++" expr))
       ((pre-dec ,expr) (unary/l 'pre-dec "--" expr))
index 94911efd1f52d58a3e335980b1e0c82f6b558084..434f4b0a3de3e9517b469392a5bf5359be31a165 100644 (file)
        ((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
+               (decl (or (assoc-ref udecl-dict name) ; decl for typename
+                         (throw 'c99-error "util2 decl error")))
                (tdef-specl (sx-ref decl 1)) ; decl-spec-list for typename
                (tdef-declr (sx-ref decl 2)) ; init-declr for typename
                ;; splice the typedef specifiers into target:
index 7134e557446649005a3850a16585157a7bbcb328..db0dff1892b975c6ab6868434d0c29ab897ca2e0 100644 (file)
@@ -185,7 +185,7 @@ the file COPYING included with the this distribution.")
 (define (sx-tail sx ix)
   (cond
    ((zero? ix) (error "sx-tail: expecting index greater than 0"))
-   ((and (pair? (cdr sx)) (eqv? '@ (cadr sx))) (list-tail sx (1+ ix)))
+   ((and (pair? (cadr sx)) (eqv? '@ (caadr sx))) (list-tail sx (1+ ix)))
    (else (list-tail sx ix))))
 
 ;; @deffn sx-has-attr? sx
@@ -253,7 +253,7 @@ the file COPYING included with the this distribution.")
 ;; a-list of precedence with keys @code{'left}, @code{'right} and
 ;; @code{nonassoc}.
 ;; @example
-;; (protect-expr? 'lval '+ '(mul ...)) => TBD
+;; (protect-expr? 'left '+ '(mul ...)) => TBD
 ;; @end example
 (define (make-protect-expr op-prec op-assc)
 
@@ -283,8 +283,8 @@ the file COPYING included with the this distribution.")
 
   (lambda (side op expr)
     (let ((assc? (case side
-                  ((lt left) assc-rt?)
-                  ((rt right) assc-lt?)))
+                  ((lt lval left) assc-rt?)
+                  ((rt rval right) assc-lt?)))
          (vtag (car expr)))
       (case (prec op vtag)
        ((>) #t)