Maxima release



>>>>> "dan" == dan stanger <dan.stanger@ieee.org> writes:

    dan> My understanding of the case sensitivity bug is that keywords
    dan> such as for, do, etc. need to be uppercased.  There is quite
    dan> a bit of maxima code that is in lower case, and changing it
    dan> is a huge pain.  Furthermore the commercial macsyma is not case
    dan> sensitive, so if we want those users to contribute code, we will
    dan> have a conversion effort there too.

I personally think maxima should not have been changed to be
case-sensitive....

Anyway, I took a look into this issue.  When the parser reads in
tokens it eventually calls scan-macsyma-token which calls
bothcase-impode because $bothcase is T.  Bothcase-implode (in
commac.lisp) looks at the 'upcase property of the token.  If set, it
returns the value of the upcase property.  For most of the offending
tokens, there is no upcase property, but |$for| has an upcase property
of |$FOR|, so when the parser reads for, it actually sees FOR.

Unfortunately, I have no idea where |$for| gets it's property set.

However, adding the following bit of code to nparse.lisp to set the
upcase property of some symbols seems to fix the problem:

(eval-when (compile eval)
(defmacro set-upcase-property (&rest syms)
  (let ((result (mapcar #'(lambda (s)
			    `(setf (get ',(intern (string-downcase s)) 'upcase)
			      ',s))
			syms)))
    `(progn ,@result)))
)

(set-upcase-property $for $from $step $next $thru $unless $while $do
		     $in $then $else $elseif)


I do not know if this is the right solution or if it causes other
problems, but it does take care of the immediate problem.

Ray

P.S.  What is the right mailing address?  I see people using
maxima@www.math.utexas.edu and maxima@www.ma.utexas.edu.  I get
bounced mail messages all the time now.