Scala有一种非常简单的方法来创建解析器。是否有一种相当等同的方式在仅限Java的世界中做同样的事情而不需要一周的学习曲线?
答案 0 :(得分:2)
我不确定学习曲线,但在Java世界中,ANTLR Parser Generator被认为是最好的。
答案 1 :(得分:1)
解析器需要多强大且可配置的程度如何?如果语法相当简单和稳定,您可以使用递归下降解析器,它使用表示每个语法生成规则的方法。我认为输出大致是JavaCC会产生的,因为它们都是自上而下的。
http://en.wikipedia.org/wiki/Recursive_descent_parser
希望这可能会有所帮助。
答案 2 :(得分:0)
Manning出版物有一本书,“DSLs in Action”,一开始就涵盖了Java。
但是,你可能想看看使用Groovy来编写你的DSL,因为动态语言有很多机会,而且学习曲线比Scala更短。
有关简介,您可以从http://docs.codehaus.org/display/GROOVY/Writing+Domain-Specific+Languages开始。
我提到的这本书也涵盖了使用antlr,当它使用时有意义,何时不使用,所以如果你想更好地理解如何编写和维护DSL,那么这本书是一本很好的书。