Haskell-src-exts 包的示例
Examples with Haskell-src-exts package
我正在使用 Haskell,我想为这种语言构建一个类型检查器。为此,我需要一种解析它的方法,而且我知道 Haskell-src-exts 非常适合这项工作。但是我对这个包是如何工作的一无所知;我试图在互联网上找到一些示例/教程,但没有任何结果。谁能帮我?有谁知道一些教程,或者可以给我参考一本包含关于这个包的例子的书?我也愿意尝试另一个包,如果它描述得很好并且带有大量示例。
一个方便的入口点是 parseFile
。如果使用下面的程序来解析自己:
module HelloParser where
import Language.Haskell.Exts
main = print =<< parseFile "HelloParser.hs"
然后它生成解析输出(剥离 SrcSpanInfo
值并重新格式化):
ParseOk
(Module (Just (ModuleHead (ModuleName "HelloParser") Nothing Nothing)) []
[ ImportDecl { importModule = ModuleName "Language.Haskell.Exts"
, importQualified = False
, importSrc = False
, importSafe = False
, importPkg = Nothing
, importAs = Nothing
, importSpecs = Nothing} ]
[ PatBind
(PVar (Ident "main"))
(UnGuardedRhs (InfixApp
(Var (UnQual (Ident "print")))
(QVarOp (UnQual (Symbol "=<<")))
(App
(Var (UnQual (Ident "parseFile")))
(Lit (String "HelloParser.hs" "HelloParser.hs")))))
Nothing ])
看起来比较可读。
要完成类型检查任务Haskell,我认为没有任何办法可以避免对Language.Haskell.Exts.Syntax
和其他包中数百种解析树数据类型和构造函数的单独考虑模块,所以我不确定更多的 in-depth 教程能给你带来多少。
我正在使用 Haskell,我想为这种语言构建一个类型检查器。为此,我需要一种解析它的方法,而且我知道 Haskell-src-exts 非常适合这项工作。但是我对这个包是如何工作的一无所知;我试图在互联网上找到一些示例/教程,但没有任何结果。谁能帮我?有谁知道一些教程,或者可以给我参考一本包含关于这个包的例子的书?我也愿意尝试另一个包,如果它描述得很好并且带有大量示例。
一个方便的入口点是 parseFile
。如果使用下面的程序来解析自己:
module HelloParser where
import Language.Haskell.Exts
main = print =<< parseFile "HelloParser.hs"
然后它生成解析输出(剥离 SrcSpanInfo
值并重新格式化):
ParseOk
(Module (Just (ModuleHead (ModuleName "HelloParser") Nothing Nothing)) []
[ ImportDecl { importModule = ModuleName "Language.Haskell.Exts"
, importQualified = False
, importSrc = False
, importSafe = False
, importPkg = Nothing
, importAs = Nothing
, importSpecs = Nothing} ]
[ PatBind
(PVar (Ident "main"))
(UnGuardedRhs (InfixApp
(Var (UnQual (Ident "print")))
(QVarOp (UnQual (Symbol "=<<")))
(App
(Var (UnQual (Ident "parseFile")))
(Lit (String "HelloParser.hs" "HelloParser.hs")))))
Nothing ])
看起来比较可读。
要完成类型检查任务Haskell,我认为没有任何办法可以避免对Language.Haskell.Exts.Syntax
和其他包中数百种解析树数据类型和构造函数的单独考虑模块,所以我不确定更多的 in-depth 教程能给你带来多少。