haskell-src-exts解决方案或解决方法解析CPP失败的模块

时间:2012-02-10 22:26:37

标签: parsing haskell

我正在尝试使用haskell-src-exts对一堆haskell源文件进行一些解析,但在我测试的第一个文件中遇到了麻烦。这是第一点:

{-# LANGUAGE CPP, MultiParamTypeClasses, ScopedTypeVariables #-}
{-# OPTIONS_GHC -Wall -fno-warn-orphans #-}
----------------------------------------------------------------------
-- |
-- Module      :  FRP.Reactive.Fun
-- Copyright   :  (c) Conal Elliott 2007
-- License     :  GNU AGPLv3 (see COPYING)
-- 
-- Maintainer  :  conal@conal.net
-- Stability   :  experimental
-- 
-- Functions, with constant functions optimized, with instances for many
-- standard classes.
----------------------------------------------------------------------

module FRP.Reactive.Fun (Fun, fun, apply, batch) where

import Prelude hiding
  ( zip, zipWith
#if __GLASGOW_HASKELL__ >= 609
                , (.), id
#endif
  )
#if __GLASGOW_HASKELL__ >= 609
import Control.Category
#endif

我用来测试的代码:

*Search> f <- parseFile "/tmp/file.hs"
*Search> f
ParseFailed (SrcLoc {srcFilename = "/tmp/file.hs", srcLine = 19, srcColumn = 1}) "Parse error: ;"

问题似乎是CPP条件部分,但似乎CPP是supported extenstion。我正在使用haskell-src-exts-1.11.1和ghc 7.0.4

我只是想做一些快速而肮脏的分析,所以我不介意在解析之前剥离这些部分,如果必须的话,但是欢迎更好的解决方案。

1 个答案:

答案 0 :(得分:1)

可能首先使用cpphs“评估”预处理器语句吗?

此外,这是从 Cabal 复制(和扩展)的已知扩展名列表; haskell-src-exts doesn't support CPP。