Fixed nary comparison operators (ex: (< 1 2 3) should translate to (1
[clinton/parenscript.git] / src / printer.lisp
index f5cd41a..edaa39d 100644 (file)
@@ -88,35 +88,8 @@ arguments, defines a printer for that form using the given body."
         (js:? (op-precedence 'js:?))
         (js:unary-operator (op-precedence (second expr)))
         (operator (op-precedence (second expr)))
-        (otherwise 0))
-      0))
-
-(eval-when (:compile-toplevel :load-toplevel :execute)
-  (defparameter *op-precedence-hash* (make-hash-table :test 'eq))
-
-  (let ((precedence 1))
-    (dolist (ops '((js:new js:slot-value js:aref)
-                   (postfix++ postfix--)
-                   (delete void typeof ++ -- unary+ unary- ~ !)
-                   (* / %)
-                   (+ -)
-                   (<< >> >>>)
-                   (< > <= >= js:instanceof js:in)
-                   (== != === !== eql)
-                   (&)
-                   (^)
-                   (\|)
-                   (\&\& and)
-                   (\|\| or)
-                   (js:?)
-                   (= *= /= %= += -= <<= >>= >>>= \&\= ^= \|=)
-                   (comma)))
-      (dolist (op ops)
-        (setf (gethash op *op-precedence-hash*) precedence))
-      (incf precedence)))
-
-  (defun op-precedence (op)
-    (gethash op *op-precedence-hash*)))
+        (otherwise -1))
+      -1))
 
 (defprinter js:literal (str)
   (psw str))
@@ -129,7 +102,7 @@ arguments, defines a printer for that form using the given body."
   (psw #\[) (print-comma-delimited-list initial-contents) (psw #\]))
 
 (defprinter js:aref (array indices)
-  (if (>= (expression-precedence array) #.(op-precedence 'js:aref))
+  (if (>= (expression-precedence array) (op-precedence 'js:aref))
       (parenthesize-print array)
       (ps-print array))
   (loop for idx in indices do
@@ -208,7 +181,7 @@ arguments, defines a printer for that form using the given body."
   (psw " }"))
 
 (defprinter js:slot-value (obj slot)
-  (if (or (> (expression-precedence obj) #.(op-precedence 'js:slot-value))
+  (if (or (> (expression-precedence obj) (op-precedence 'js:slot-value))
           (numberp obj)
           (and (listp obj) (member (car obj) '(js:lambda js:object))))
       (parenthesize-print obj)