2

很快,我将被迫在 Haskell 中展示一个项目,该项目旨在突出显示 Java 语法。我做了一些研究,发现 Happy 可能是一个解决方案(因为它是一个类似 yacc 的解析器)。还提到了 Bison 和 Parsec。由于我是 Haskell 的新手,我真的不知道如何开始这个项目。任何提示都会有很大帮助。

谢谢!

4

4 回答 4

2

Haskell 中的高效语法高亮库,使用 alex 生成的词法分析器 - https://github.com/jgm/illuminate

于 2012-05-28T13:32:35.137 回答
2

由于我是 Haskell 的新手,我真的不知道如何开始这个项目

啊,这才是真正的问题。要开始学习 Haskell,我经常推荐Learn You a Haskell,可以免费在线阅读。我推荐的其他好资源包括Real World Haskell(有点过时但仍然不错)和Typeclassopedia

要处理包建议,您首先要安装Haskell 平台,然后您可以使用以下命令安装给定包:

cabal install PACKAGE

但是请注意,Haskell 的发展速度非常快,因此有些软件包彼此不兼容。Cabal 应该防止你做任何太愚蠢的事情,但如果你最终弄乱了包之间的依赖关系,请在 #haskell irc 频道寻求帮助。您可以通过在包概述页面上单击其名称来查看给定模块的文档。如果软件包不在http://hackage.haskell.org上,请联系所有者或在 irc 上寻求帮助,他们会帮助您生成文档并安装它。

我不知道语法高亮算法是如何工作的,所以我将把这部分留给你自己研究。如果允许您重用现有工作,那么您可能会使用language-java包(如 Louis 建议的那样)将原始文本解析为 Java 的抽象语法树,然后由您决定转换该语法树成您需要生成的任何彩色格式。

在您将大量时间投入任何一种方法之前,您应该咨询任何需要您执行此任务的人,以确保它是可以接受的。

于 2012-06-13T22:24:51.017 回答
1

绑定到 libkate怎么样?

于 2012-05-28T13:10:27.163 回答
1

快速搜索 Hackage 返回language-java。您可能可以以某种方式调整其漂亮的打印机。

于 2012-05-28T13:21:09.373 回答