Bill Allombert on Wed, 3 Jul 2002 23:17:53 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Bug in parsing of local()


On Mon, Jul 01, 2002 at 08:50:12PM +0200, Karim BELABAS wrote:
> On Mon, 1 Jul 2002, Ilya Zakharevich wrote:
> > ? f(x=11,y=x)=local(t=ff(),u=t);1
> >   ***   unknown function or error in formal parameters: f(x=11,y=x)=local(t=
> >   ***   ff(),u=t);1
> >         ^-----------
> 
> I had swapped two groups of statements: the ones parsing 'local' were not
> in "parsing function definition" context  [ hence were sensitive to
> "undefined function" syndrom ]
> 
> It's corrected.


With type I get:
? f(x)=local:int(k);x
? f(2)
  ***   expected character: '=' instead of: local:int(k);x

It is a bit streched, but I was  looking to a shortcut to
local(x:int,y:int,z:int). I hesitate between

local:int(x,y,z)
and 
local(x,y,z):int;

What do you prefer ? Better idea ?

Also
? z=[2,4];forstep(x=1,7,z:vec,x)
  ***   expected character: ',' instead of: z=[2,4];forstep(x=1,7,z:vec,x)
                                                                   ^-------
... which is currently neccessary for GP2C to know that this a wheel and not a step.

> P.S: When we'll be sure GP2C emulates completely the current GP behaviour, it
> will be a relief to dump that parser...

I believe the syntactic parser of the newparser branch does this. 
The lexical parser is not 100% compatible, but it should not be an issue
since its only role for GP is to recognize constants (integer,real,strings).
However there is a major issue if I allow automatic concatenation : I am no
more able to catch syntax errors correctly... By patching the generated C
parser, I am able to correctly report if there is at least one error but not
the correct error line.  


What should I do with % history reference in GP2C ? 

Cheers,

Bill.