Thank you for reporting this bug. It would appear to have been
there for sometime, with people not using more than 2 character prefix
(c1) prefix("curl");
(d1) "CURL"
(c2) closefile("buddy.out");
(d2) CURL osefile(buddy.out)
or infix operators. It can be repaired by fixing
the code of read-command-token-aux in nparse.lisp as follows:
[alternately you can just load in the following file..]
(in-package "MAXIMA")
(defun read-command-token-aux (obj)
(let* (result
(ch (parse-tyipeek))
(lis (if (eql ch -1) nil (parser-assoc (char-upcase ch) obj))))
(cond ((null lis)
nil)
(t
(parse-tyi)
(cond ((atom (cadr lis))
;; INFIX("ABC"); puts into macsyma-operators
;;something like: (#\A #\B #\C (ANS |$ABC|))
;; ordinary things are like:
;; (#\< (ANS $<) (#\= (ANS $<=)))
;; where if you fail at the #\< #\X
;; stage, then the previous step was permitted.
(setq result (read-command-token-aux (list (cdr lis) ))))
((null (cddr lis))
;; lis something like (#\= (ANS $<=))
;; and this says there are no longer operators
;; starting with this.
(setq result
(and (eql (car (cadr lis)) 'ans)
(cadr (cadr lis)))))
(t
(let ((res (and (eql (car (cadr lis)) 'ans)
(cadr (cadr lis))))
(com-token (read-command-token-aux (cddr lis) )))
(setq result (or com-token res
(read-command-token-aux
(list (cadr lis))))))
))
(or result (unparse-tyi ch))
result))))