Related articles |
---|
Source for compiler using yacc/lex wanted platon!fauzan@uunet.uu.net (1996-03-05) |
Re: Source for compiler using yacc/lex wanted Steve_Kilbane@cegelecproj.co.uk (1996-03-08) |
Re: Source for compiler using yacc/lex wanted pjj@cs.man.ac.uk (1996-03-08) |
Re: Source for compiler using yacc/lex wanted nandu@longs.att.com214) (1996-03-15) |
Re: Source for compiler using yacc/lex wanted theedge@sun11.rbg.informatik.th-darmstadt.de (1996-03-22) |
From: | Steve_Kilbane@cegelecproj.co.uk |
Newsgroups: | comp.compilers |
Date: | 8 Mar 1996 00:08:29 -0500 |
Organization: | Cegelec Projects Ltd. |
References: | 96-03-042 |
Keywords: | yacc, lex, comment |
> I'm writing a code beautifier program (ie, something similar to
> indent(1)) and thought that the best approach to take would be to
> use yacc and lex.
Ugh, no. The main purpose of a beautifier is to make code easier to
read, by making it follow a common layout. So, what does your lex
scanner do with comments?
C preprocessor statements are a problem too:
#if SOMETHING
if (var1 == var2) {
#else
if (var1 != var2) {
#endif
dosomething();
}
Or even:
#define IF if(
#define THEN ){
#define ENDIF }
IF var1 == var2 THEN
dosomething();
ENDIF
People have written code like this, trust me. :-)
The problem is that your average lex/yacc set up handles a single
grammar, the C one, whereas a pretty printer has to handle that, with
comments and preprocessor grammar munged in.
steve
[Hey, is that last example from the pseudo-algol68 that Steve Bourne used
for the Bourne shell? -John]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.