我有一种特定于领域的语言,可以转换为SQL。 我必须编写自己的词法分析器、解析器和代码生成器,还是有工具可以帮助我?
我有一种特定于领域的语言,可以转换为SQL。 我必须编写自己的词法分析器、解析器和代码生成器,还是有工具可以帮助我?
我有一个类似于你的项目。我认为你应该看看Xtext和Xtend,因为它们可以直接在Eclipse中使用,你可以轻松地获得智能感知、语法和词法分析器。我尝试生成SQL代码,到目前为止这是一个成功的项目。
这取决于您将使用的语言,但Groovy、Ruby、Scala、F#和Haskell是用于此目的的好语言。
您使用的语言将影响您应该使用哪些工具。
例如,您可以在C中完成此操作,但这需要更多的工作,并且可能不够美观。
有些语言需要使用工具来帮助解析器,而其他语言则不需要。
您可能想阅读这本书,以了解有关DSL的更多信息,《DSLs in Action》。
听起来你正在寻找类似Eli的东西,它旨在接受规范并从中生成翻译器:
http://eli-project.sourceforge.net/
另一方面,使用像ANTLR这样的良好生成工具编写解析器并自己编码AST和代码生成器,您可能会感到非常高兴。