# [Maxima] tokenizer / parser declarations (?)

Barton Willis willisb at unk.edu
Tue Sep 18 21:29:58 CDT 2007

```Here is a toy function that illustrates a problem I have
(with floor, ceiling, max, min, round, truncate, ...)

(defprop %blip simp-blip operators)

(defun simp-blip (e yy z)
(declare (ignore yy))
(oneargcheck e)
(setq e (simplifya (specrepcheck (second e)) z))
(if (zerop1 e) 1 `((%blip simp) ,e)))

(%i2) blip(0);
(%o2) blip(0)

OK:

(%i3) 'blip(0);
(%o3) 1

What's the story?  The function mread does blip(x) --> ((\$blip) \$x).
This is unlike other functions, say sin(x) ---> ((%sin) \$x).
If I'm more or less correct about all this, how do I get Maxima
to read blip(x) as ((%blip) \$x) instead of ((\$blip \$x) ? Currently
with the function ceiling (and related) I do:

(defprop \$ceiling simp-ceiling operators)

I think this isn't correct because:

(%i1) tellsimp(ceiling(x),137);
(%o1) [ceilingrule1,simp-ceiling]

OK:

(%i2) ceiling(x);
(%o2) 137

(%i3) 'ceiling(x);
(%o3) ceiling(x)

Compare with

(%i4) tellsimp(sin(x),137);
(%o4) [sinrule1,simp-%sin]

(%i5) 'sin(x);
(%o5) 137

(%i6) sin(x);
(%o6) 137

Notice:

(%i4) blip(x);