Const conflict. Was: Re: New Alpha_(re)
Thu, 24 Apr 1997 15:49:12 +0300 (EET DST)
On Wed, 23 Apr 1997, Jakob Heinemann wrote:
> Peter Gerwinski wrote:
> >
> > According to Frank Heckenbach:
> > > [...]
> > > However, the following still doesn't work (if it's already/still on the bug
> > > list, please ignore):
> > >
> > > PROGRAM x;
> > > CONST n:1..16=6; {"subrange bounds are not of the same type"}
> > > BEGIN
> > > END.
> >
> > Is this really a bug??? Extended Pascal allows expressions as the upper
> > bound of a subrange. In this case, the expresson "16 = 6" (with the
> > Boolean value "false") is the upper bound - which is indeed not of the
> > same type as the lower bound "1".
Hi folks...
I think the way to solve this is to implement some context
sensitivity to the parser, but even that does not solve
all problems, if not introduce new ones :-)
This is kind of hard to do in the LALR(1) parsers
like yacc and bison, and did not figure out any easy
way to do it so I decided to do it "later".
Anyway, it is not possible to automatically decide that
constructs like the following are invalid, like can
be seen from the pascal boolean subrange variable declaration:
foo : false .. 16=16;
If the decicion of the parse tree is based on the fact that the
resulting program would otherwise be syntactically incorrect, the
parsing could be done more cleverly, which is required in the
following:
foo_error : 1 .. 16 = 15;
Then it remains the problem how to interpret the following:
foo_problem : false .. true = false;
Because that can be interpreted either as an initialized
or uninitialized subrange.
Extended pascal does require that both bounds of
a subrange can be arbitrary expressions. In GPC (as far
as I recall) only the lower bound can be an expression,
the upper bound needs to be constant, because I could not find any
easy way to prevent the massive amounts of conflicts,
no matter how I tried.
Anyone who really knows how to hack parsers interested
in this one?
Juki
jtv@hut.fi
Jukka Virtanen (jtv@cc.hut.fi)
HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada -
Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es