很快,我将被迫在 Haskell 中展示一个项目,该项目旨在突出显示 Java 语法。我做了一些研究,发现 Happy 可能是一个解决方案(因为它是一个类似 yacc 的解析器)。还提到了 Bison 和 Parsec。由于我是 Haskell 的新手,我真的不知道如何开始这个项目。任何提示都会有很大帮助。
谢谢!
很快,我将被迫在 Haskell 中展示一个项目,该项目旨在突出显示 Java 语法。我做了一些研究,发现 Happy 可能是一个解决方案(因为它是一个类似 yacc 的解析器)。还提到了 Bison 和 Parsec。由于我是 Haskell 的新手,我真的不知道如何开始这个项目。任何提示都会有很大帮助。
谢谢!
Haskell 中的高效语法高亮库,使用 alex 生成的词法分析器 - https://github.com/jgm/illuminate
由于我是 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 的抽象语法树,然后由您决定转换该语法树成您需要生成的任何彩色格式。
在您将大量时间投入任何一种方法之前,您应该咨询任何需要您执行此任务的人,以确保它是可以接受的。
绑定到 libkate怎么样?
快速搜索 Hackage 返回language-java
。您可能可以以某种方式调整其漂亮的打印机。