X-Git-Url: http://git.hcoop.net/clinton/parenscript.git/blobdiff_plain/578e856583a471b35bb4e2404a6618f04c380022..a14fb2cb9bce1d6956cc9be3a7e7b67451b7032f:/src/printer.lisp diff --git a/src/printer.lisp b/src/printer.lisp index f5cd41a..edaa39d 100644 --- a/src/printer.lisp +++ b/src/printer.lisp @@ -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)