Function: math-read-expr-level
math-read-expr-level is a byte-compiled function defined in
calc-aent.el.gz.
Signature
(math-read-expr-level EXP-PREC &optional EXP-TERM)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-aent.el.gz
(defun math-read-expr-level (exp-prec &optional exp-term)
(let* ((math-expr-opers (math-expr-ops))
(x (math-read-factor))
(first t)
op op2)
(while (and (or (and calc-user-parse-table
(setq op (calc-check-user-syntax x exp-prec))
(setq x op
op '("2x" ident 999999 -1)))
(and (setq op (assoc math-expr-data math-expr-opers))
(/= (nth 2 op) -1)
(or (and (setq op2 (assoc
math-expr-data
(cdr (memq op math-expr-opers))))
(eq (= (nth 3 op) -1)
(/= (nth 3 op2) -1))
(eq (= (nth 3 op2) -1)
(not (math-factor-after)))
(setq op op2))
t))
(and (or (eq (nth 2 op) -1)
(memq math-exp-token '(symbol number dollar hash))
(equal math-expr-data "(")
(and (equal math-expr-data "[")
(not (equal
(get calc-language
'math-function-open) "["))
(not (and math-exp-keep-spaces
(eq (car-safe x) 'vec)))))
(or (not (setq op (assoc math-expr-data math-expr-opers)))
(/= (nth 2 op) -1))
(or (not calc-user-parse-table)
(not (eq math-exp-token 'symbol))
(let ((p calc-user-parse-table))
(while (and p
(or (not (integerp
(car (car (car p)))))
(not (equal
(nth 1 (car (car p)))
math-expr-data))))
(setq p (cdr p)))
(not p)))
(setq op (assoc "2x" math-expr-opers))))
(not (and exp-term (equal math-expr-data exp-term)))
(>= (nth 2 op) exp-prec))
(if (not (equal (car op) "2x"))
(math-read-token))
(and (memq (nth 1 op) '(sdev mod))
(require 'calc-ext))
(setq x (cond ((consp (nth 1 op))
(funcall (car (nth 1 op)) x op))
((eq (nth 3 op) -1)
(if (eq (nth 1 op) 'ident)
x
(if (eq (nth 1 op) 'closing)
(if (eq (nth 2 op) exp-prec)
(progn
(setq exp-prec 1000)
x)
(throw 'syntax "Mismatched delimiters"))
(list (nth 1 op) x))))
((and (not first)
(memq (nth 1 op) math-alg-inequalities)
(memq (car-safe x) math-alg-inequalities))
(require 'calc-ext)
(math-composite-inequalities x op))
(t (list (nth 1 op)
x
(math-read-expr-level (nth 3 op) exp-term))))
first nil))
x))