2 b larl(a)

mckeeman at wivax.UUCP mckeeman at wivax.UUCP
Thu May 31 01:42:05 AEST 1984

Following my ``<ident> ::= IF'' suggestion, Brian Thomson writes

>>>Actually, I believe this would fail in most cases, at least for
>>>the IF keyword.  If your grammar contains
>>>   <statement> ::= IF <expression> THEN ....
>>>   <ident>     ::= IF
>>>and an <expression> may begin with a left parenthesis
>>>it will fail to be LALR(1) because of the resulting shift-reduce conflict.
>>>'IF (' is a prefix of a valid procedure call.
>>>I don't know of any way to resolve the conflict, do you?

Ooops.  You are right.  My constructor (flesh & blood)
fails to handle IF followed by '('.  All readers should
delete my claim until and if I can restate it accurately.
The actual history of my hasty statement is a PL/I subset
where we used this trick to conform to the 'no reserved
word' definition of that language.  It failed only on NOT
as I remember, but now I am unwilling to trust foggy
memories and unable to run a system dead these many years.

/s/ Bill   McKeeman.Wang-Inst at CSNet-Relay
           Wang Institute of Graduate Studies, Tyngsboro, MA 01879

More information about the Comp.lang.c mailing list