Hugs with C preprocessor
Wolfgang Jeltsch
wolfgang at jeltsch.net
Wed Jan 7 21:46:05 EST 2004
Am Mittwoch, 7. Januar 2004 20:37 schrieb Alastair Reid:
> > I want to use Haskell files with #ifdef, #else and #endif preprocessor
> > directives. I tried hugs -F "cpp -P" <source_file_name> but cpp
> > complains about unterminated character constants. What is wrong?
>
> ANSI C preprocessors tend to get confused by the quotes in lines like the
> following:
>
> f x = x' where x' = ...
> g x = x'
> where
> x' = ...
>
> You can often avoid this by putting cpp in 'K&R mode'. For example, GNU cpp
> accepts '-traditional'.
I tried hugs -F "cpp -P -traditional" but got the same error message as
without -traditional. This message is, suprisingly,
sh: line 1: /usr/lib/hugs/libraries/Hugs/Prelude.hs: Permission denied
ERROR "/usr/lib/hugs/libraries/Hugs/Prelude.hs" - Module "case"
recursively imports itself
FATAL ERROR: Unable to load Prelude.
I started hugs without the -F option and then tried to set it via :set -F"cpp
-P -traditional". After this I loaded my input file via :load and got these
messages:
cpp0: output pipe has been closed
cpp0: output pipe has been closed
cpp0: output pipe has been closed
cpp0: output pipe has been closed
cpp0: output pipe has been closed
cpp0: output pipe has been closed
cpp0: output pipe has been closed
cpp0: output pipe has been closed
cpp0: output pipe has been closed
ERROR "./RegAlloc/Data/Graphs.hs":42 - Syntax error in input (unexpected
selector "#ifdef")
So cpp gives strange error messages and #ifdefs still don't work.
> I'm attaching a shell script you might use (from end of hugs98/Install in
> the Hugs98 distribution). (Not tested recently but ought to work.)
> [...]
> if $running_under_some_random_shell;
Is this real code?
> [...]
> # Reads CPP output and turns #line things into appropriate Haskell
> # pragmas. This program is derived from the "hscpp" script
> # distributed with the Glasgow Haskell Compiler.
I already looked for hscpp but it doesn't seem to be included in 6.2. Is it
still in use with GHC?
> [...]
Wolfgang
More information about the Haskell
mailing list