| Karim BELABAS on Sat, 14 Dec 2002 21:15:47 +0100 (MET) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: gp: eval(Str("A"(-1)"B")) |
On Sat, 14 Dec 2002, Michael Somos wrote:
> For my own information I would like to know why the difference:
>
> ? eval(Str("A"(1)"B"))
> %1 = A1B
> ? eval(Str("A"(-1)"B"))
> %2 = A - 1
I see no problem with eval("A1B") --> A1B
eval("A-1B") should trigger a syntax error, namely
*** unused characters: A-1B
^-
Unfortunately, 'eval' simply calls 'flisseq', which reads as many characters
as will constitute a valid 'seq' and returns the result. This is needed for
things like
for (i=1,n,blah); \\ lisseq is called with argument "blah);"
In order to trigger the expected error with the current parser, I would have
to move eval() to anal.c and have it include a copy of lisseq0. Don't really
want to do it. Other solution: parse eval's argument before calling the
interpreter (which will reparse it) --> slowdown; not good.
A decent solution is to switch to GP2C's parser. Later...
Cheers,
Karim.
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dép. de Mathématiques, Bât. 425 Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud Email: Karim.Belabas@math.u-psud.fr
F-91405 Orsay (France) http://www.math.u-psud.fr/~belabas/
--
PARI/GP Home Page: http://www.parigp-home.de/