2009-11-21 44 views

回答

4

你可以使用XText

为文本域特定语言(DSL)的开发框架。
只需使用Xtext的简单EBNF语法语言描述您自己的DSL,生成器将创建一个解析器,一个AST-meta模型(用EMF实现)以及一个全功能的Eclipse文本编辑器。

alt text

1

替代XTEXT是RascalSpoofax,均高于XTEXT不太受欢迎,但有趣的,因为他们支持更一般的上下文无关文法,等等。很高兴看到。

1

如果您正在寻找更低级别的可编程解决方案,那么Eclipse的IDE元工具平台是一个不错的选择(IMP)。

IMP为您提供了什么API将您的现有解析器连接到Eclipse,而没有太多麻烦。您需要实现一个IParseController接口,以调用您的解析器和ITokenIterator来生成令牌和其他一些接口,以将字体分配给各种令牌。

上述的Rascal和Spoofax都建立在IMP之上。

+0

从IMP页面http://www.eclipse.org/imp/可以看到IMP基于Rascal。它并没有从孵化器中脱颖而出。 – 2013-12-30 14:09:04

+0

IMP不是基于Rascal,而是Rascal基于IMP。事实上,它没有一个大的社区,但至少有两个项目正在密集使用它。 IMP的核心并不是什么大事,这使得在已经拥有开放编译器的设置中使用它很简单,只需要将它挂接到IDE中即可。 – jurgenv 2014-01-02 11:32:22

+0

BTW,IMP现在可以在github上找到:https://github.com/impulse-org/imp.runtime?source = cc – jurgenv 2014-01-02 12:25:40