mckeeman@wivax.UUCP (05/30/84)
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 ...decvax!wivax!mckeeman Wang Institute of Graduate Studies, Tyngsboro, MA 01879