The following throws an error
In [27]: f=Function('f')
In [28]: parse_expr('af(t)', local_dict={'f': f },
transformations=(auto_symbol, auto_number, split_symbols,
implicit_multiplication))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
[snip]
TypeError: unbound method as_base_exp() must be called with f instance as
first argument (got nothing instead)
The code it is trying to evaluate is
Symbol ('a' )*(f )*(Symbol ('t' ))
It seems the problem is the parentheses around f that were inserted in line
394:
result.extend([(OP, '('), (NAME, "%s" % char),
(OP, ')'),
(NAME, 'Symbol'), (OP, '(')])
Is there any reason to add those parenthesis? Certainly, if char is a
function, they should not be added. I'm not sure if there are cases where
one does need those parenthesis.
I can fix the problem by changing this line to
result.extend([(NAME, "%s" % char),
(NAME, 'Symbol'), (OP, '(')])
but I'm not sure if I should test if local_dict[char] or global_dict[char]
is callable (similar to _get_token_callable) and only remove the
parenthesis if it is callable.
For this to work, I also have to modify the approach to remove the last 2
tokens (rather than 3) and then skip the following token so that the close
parenthesis from the original Symbol is not included.
Does this fix seem reasonable?
Duane
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/5a8ffc92-3be1-4c60-aa0e-0765b20048f3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.