我想编写类似haml的语言的解析器和转换器来解析它们,并将它们转换为html内容。
我发现人们通常使用正则表达来执行此操作,但我们必须编写许多困难的正则表达式,这并不容易。有没有工具或库可以做到这一点?我希望它在 java 中易于使用。
并且,有没有关于如何编写这样的解析器的文章?提前谢谢!
答案 0 :(得分:1)
正则表达式通常是一个穷人解析器。正则表达式不是真正的解析器。
解析器通常由解析器生成器生成。您可以在规范文件中指定语言,解析器生成器会将其转换为解析器的源代码。
答案 1 :(得分:1)
经过一些研究和测试后,我不得不说,parboiled是这项工作的最佳工具。
我在PEG上花了一天时间,并且提供了一些精简的例子,还有一天写了一个简单的sass解析器。这是如此简单和自然。比正则表达更容易和清晰。最好的是我只能用Java编写程序,没有外部DSL需要学习。
我想非常感谢您提出的问题,这是我正在寻找的一个很棒的工具。
答案 2 :(得分:0)
您可以使用JavaCC。它是一个像解析器生成器一样的yacc。输出是解析器的Java源代码。