Related articles |
---|
no reserved words hugo@morantek.demon.co.uk (1998-03-08) |
Re: no reserved words cfc@world.std.com (Chris F Clark) (1998-03-12) |
Re: no reserved words leichter@smarts.com (Jerry Leichter) (1998-03-13) |
Re: no reserved words will@ccs.neu.edu (William D Clinger) (1998-03-15) |
Re: no reserved words stephen@acm.org (Stephen P Spackman) (1998-03-18) |
Re: no reserved words sandeep.dutta@usa.net (Sandeep Dutta) (1998-03-18) |
From: | William D Clinger <will@ccs.neu.edu> |
Newsgroups: | comp.compilers |
Date: | 15 Mar 1998 00:19:53 -0500 |
Organization: | Northeastern University |
References: | 98-03-091 |
Keywords: | yacc, parse, comment |
When parsing a language with no reserved words, the following trick
might allow you to use Lex and Yacc or similar tools.
Use Lex to define a token (e.g. IF, THEN, CALL) for each syntactic
keyword of the language. Also define a token NONKEYWORD for
identifiers that are not also reserved words.
Use yacc to define a nonterminal identifier as follows:
identifier : NONKEYWORD
| IF
| THEN
| CALL
| ...
Then use the nonterminal identifier wherever you want to allow any
identifier, and use the specific tokens IF, THEN, et cetera wherever a
specific syntactic keyword must go.
You might have to resolve a lot of shift-reduce and reduce-reduce
conflicts, but those conflicts are sort of intrinsic to the grammar of
your language; you'll have to resolve them somehow no matter what
tools you use.
Will
[See subsequent message about ambiguity problems. -John]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.