如何在Haskell中为Java创建语法突出显示?

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

谢谢!

由于我是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的抽象语法树,然后由您来转换该语法树需要生成任何颜色的格式。

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

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

绑定到libkate怎么样 ?

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