在haskell中解析java类文件

时间:2013-04-03 15:11:20

标签: haskell jvm

我刚刚在今年早些时候开始学习Haskell语言,并且正在开发一个输入java类文件(即FileName1.class)的项目,并解析该文件以打印出以下内容:

  • 班级文件所定义的班级名称
  • 班级的方法数量,名称和类型

我做了一些研究,发现通过使用JVM可以实现这一点,但在此过程中有点遗失,任何人都有任何关于如何解决这个问题的建议吗?

2 个答案:

答案 0 :(得分:5)

您需要为Java类格式编写解析器。

幸运的是已经有libraries to do that.

解析文件,输入生成的AST,打印所需信息。

答案 1 :(得分:1)

尝试parsec

http://www.haskell.org/haskellwiki/Parsec

这是一个关于如何入门的非常好的教程:http://www.haskell.org/haskellwiki/Parsing_expressions_and_statements

还来自Real World Haskell:http://book.realworldhaskell.org/read/using-parsec.html

Parsec甚至包含一个默认的Java语言定义。 http://hackage.haskell.org/packages/archive/parsec/3.0.0/doc/html/src/Text-Parsec-Language.html#javaStyle

此外,在检查AST时,您可能希望使用Reader monad来防止类型签名过于污染。