如何为类似haml的语言编写解析器?

时间:2010-09-27 13:53:53

标签: java parsing haml

我想编写类似haml的语言的解析器和转换器来解析它们,并将它们转换为html内容。

我发现人们通常使用正则表达来执行此操作,但我们必须编写许多困难的正则表达式,这并不容易。有没有工具或库可以做到这一点?我希望它在 java 中易于使用。

并且,有没有关于如何编写这样的解析器的文章?提前谢谢!

3 个答案:

答案 0 :(得分:1)

正则表达式通常是一个穷人解析器。正则表达式不是真正的解析器。

解析器通常由解析器生成器生成。您可以在规范文件中指定语言,解析器生成器会将其转换为解析器的源代码。

答案 1 :(得分:1)

经过一些研究和测试后,我不得不说,parboiled是这项工作的最佳工具。

我在PEG上花了一天时间,并且提供了一些精简的例子,还有一天写了一个简单的sass解析器。这是如此简单和自然。比正则表达更容易和清晰。最好的是我只能用Java编写程序,没有外部DSL需要学习。

我想非常感谢您提出的问题,这是我正在寻找的一个很棒的工具。

答案 2 :(得分:0)

您可以使用JavaCC。它是一个像解析器生成器一样的yacc。输出是解析器的Java源代码。