分析包含#(c预处理器)的haskell源文件时出错

分析包含#(c预处理器)的haskell源文件时出错,haskell,preprocessor,Haskell,Preprocessor,解析包含#define和#if的haskell源文件时,parseFileContentsWithMode会混淆并抛出有关哈希的错误。我试图在扩展列表中包括MagicHash和CPP(extns,见下文),但没有成功。我无法真正更改源文件,因为它们太多了 getModule extns filePath program = fromParseResult $ parseFileContentsWithMode mode program where

解析包含
#define
#if
的haskell源文件时,
parseFileContentsWithMode
会混淆并抛出有关哈希的错误。我试图在扩展列表中包括
MagicHash
CPP
extns
,见下文),但没有成功。我无法真正更改源文件,因为它们太多了

getModule extns filePath program = fromParseResult $ parseFileContentsWithMode mode program
                         where
                                  bangPatternsExt = map parseExtension extns
                                  mode = ParseMode filePath Haskell2010 bangPatternsExt False False 
分析器在以下位置失败:

#if __GLASGOW_HASKELL__ >= 612

instance Lift ModName where
  lift = lift . modString

Haskell src exts不支持CPP本机(GitHub问题跟踪程序中没有这方面的问题,但trac at上有一个旧的问题)

您可以查看解决方法(使用CPPH)


还有一个名为hse cpp()的包,看起来它可以为您运行cpphs,但我没有使用它,而且它似乎没有得到太多更新。

Haskell src exts本机不支持cpp(GitHub问题跟踪程序中没有这方面的问题,但trac at上有一个旧的问题)

您可以查看解决方法(使用CPPH)


还有一个名为hse cpp()的软件包,看起来它可以为您运行CPPH,但我没有使用它,而且它似乎没有得到很多更新。

如果它是
#define
和类似的软件,会给您带来问题,您不需要
MagicHash
,您需要
cpp
。我也尝试过添加它,如果是
#define
和类似的东西给你带来了问题,你就不需要
MagicHash
,你需要
CPP
。我只是试着添加了它,没有用