2013-03-30 73 views
2

我想用haskell-src-exts来解析haskell源模块。但它需要确定所有运营商的固定性。所以我需要列出所有导入的模块,以便为范围内的所有运算符提取固定性。从haskell模块提取导入模块列表

所以,我需要解析模块来获取导入模块列表;我需要进口模块列表解析模块:(

问题:???如何解析Haskell的源模块,而不分析它是否有任何其他的解析器,我可以使用怎样hlint解决问题

haskell-src-exts提供function提取顶级编译指示。我需要类似的东西,但对于导入模块。

+2

'haskell-src-exts'解析器返回一个'Module',其单个构造函数似乎将一个'[ImportDecl]'作为其参数之一;这不正是你想要的吗? –

+0

@DanielWagner对不起,我不清楚。我想避免解析它两次。没有固定的'模块'将包含模块主体的错误的AST。 – Yuras

+0

我不认为hlint解决了操作员的固定问题,它只是查看一个文件。另请参阅http://community.haskell.org/~ndm/darcs/hlint/hlint.htm(“为什么HLint不知道我的定制的固定性@ @ $ $操作符?”) –

回答

2

另一种方法是不固定性parseFileWithMode defaultParseMode{ fixities =Nothing }解析,然后,一旦你已经看过了进口使用Language.Haskell.Exts.Fixity.applyFixities使AST后续正确的固定方式,谁知道这种固定效果会不会让你失望可以放入