分析包含#(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
。我只是试着添加了它,没有用