hashem@mars.jpl.nasa.gov (Basil Hashem) (04/12/90)
I'm using the cpp program (the SunOS C pre-processor) for filtering some files which are not C programs. I have been successful in doing #include's, #ifdef's, and #defines's. What I need to do is pass a file such as the following through cpp. (Don't worry about the extra lines and comment lines that cpp generates.) ---- #define LANGUAGE English #if (LANGUAGE == French) #define GREETING Bonjour #define FAREWELL Salut #define GENTLEMEN Monsieurs #else #define GREETING Good Morning #define FAREWELL Bye #define GENTLEMEN Sirs #endif Dear GENTELMEN, GREETING blah blah FAREWELL ---- The results are not what is expected since cpp doesn't do the compare properly. What I really need is a strcmp(LANGUAGE, "French") but I can't really do that considering this is not C. Anyone have suggestions? "WOOOSH! If they only knew what I was up to." Basil Hashem hashem@mars.jpl.nasa.gov Jet Propulsion Laboratory La Canada Flintridge, CA
lwall@jpl-devvax.JPL.NASA.GOV (Larry Wall) (04/12/90)
In article <3359@jato.Jpl.Nasa.Gov> hashem@mars.jpl.nasa.gov (Basil Hashem) writes:
: I'm using the cpp program (the SunOS C pre-processor) for filtering some
: files which are not C programs.
:
: I have been successful in doing #include's, #ifdef's, and #defines's. What I
: need to do is pass a file such as the following through cpp. (Don't worry
: about the extra lines and comment lines that cpp generates.)
:
: ----
: #define LANGUAGE English
:
: #if (LANGUAGE == French)
: #define GREETING Bonjour
: #define FAREWELL Salut
: #define GENTLEMEN Monsieurs
: #else
: #define GREETING Good Morning
: #define FAREWELL Bye
: #define GENTLEMEN Sirs
: #endif
:
: Dear GENTELMEN,
:
: GREETING
:
: blah blah
:
: FAREWELL
: ----
:
: The results are not what is expected since cpp doesn't do the compare properly.
: What I really need is a strcmp(LANGUAGE, "French") but I can't really do
: that considering this is not C.
#define English 1
#define French 2
#define Spanish 3
#define Basque 4
#define LANGUAGE Basque
#if LANGUAGE == Basque
#define GREETING Agur!
#endif
Larry Wall
lwall@jpl-devvax.jpl.nasa.gov
martin@mwtech.UUCP (Martin Weitzel) (04/12/90)
In article <3359@jato.Jpl.Nasa.Gov> hashem@mars.jpl.nasa.gov (Basil Hashem) writes: >I'm using the cpp program (the SunOS C pre-processor) for filtering some >files which are not C programs. Just one small hint in case you want to expand your technique or make it portable across different flavours of Unix: Have a look to your manual and try to locate `m4'. (I don't know how the SunOS manuals are structured, normally it belongs to the program development tools.) `m4' is an independant macro processor which has all the features of `cpp' (of course, the notation differs!) and *much* more, including reliable semantics in case of nested macro calls, quotation (sometimes you may want to use a word litterally that is defined as macro), ... -- Martin Weitzel, email: martin@mwtech.UUCP, voice: 49-(0)6151-6 56 83