Function: calc-match-user-syntax
calc-match-user-syntax is an autoloaded and byte-compiled function
defined in calc-aent.el.gz.
Signature
(calc-match-user-syntax P &optional TERM)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-aent.el.gz
;;;###autoload
(defun calc-match-user-syntax (p &optional term)
(let ((matches nil)
(save-exp-pos math-exp-pos)
(save-exp-old-pos math-exp-old-pos)
(save-exp-token math-exp-token)
(save-exp-data math-expr-data)
m)
(while (and p
(cond ((stringp (car p))
(and (equal math-expr-data (car p))
(progn
(math-read-token)
t)))
((integerp (car p))
(and (setq m (catch 'syntax
(math-read-expr-level
(car p)
(if (cdr p)
(if (consp (nth 1 p))
(car (nth 1 (nth 1 p)))
(nth 1 p))
term))))
(not (stringp m))
(setq matches (nconc matches (list m)))))
((eq (car (car p)) '\?)
(setq m (calc-match-user-syntax (nth 1 (car p))))
(or (nth 2 (car p))
(setq matches
(nconc matches
(list
(cons 'vec (and (listp m) m))))))
(or (listp m) (not (nth 2 (car p)))
(not (eq (aref (car (nth 2 (car p))) 0) ?\$))
(eq math-exp-token 'end)))
(t
(setq m (calc-match-user-syntax (nth 1 (car p))
(car (nth 2 (car p)))))
(if (listp m)
(let ((vec (cons 'vec m))
opos mm)
(while (and (listp
(setq opos math-exp-pos
mm (calc-match-user-syntax
(or (nth 2 (car p))
(nth 1 (car p)))
(car (nth 2 (car p))))))
(> math-exp-pos opos))
(setq vec (nconc vec mm)))
(setq matches (nconc matches (list vec))))
(and (eq (car (car p)) '*)
(setq matches (nconc matches (list '(vec)))))))))
(setq p (cdr p)))
(if p
(setq math-exp-pos save-exp-pos
math-exp-old-pos save-exp-old-pos
math-exp-token save-exp-token
math-expr-data save-exp-data
matches "Failed"))
matches))