在针对特定于域的语言的自定义编辑器中实现类似IntelliSense的行为
时间:2020-03-06 14:28:00 来源:igfitidea点击:
我正在使用类似于模板的编辑器来创建DSL,就像Alice中的规则系统一样。用户将能够从列表中选择关系以及要应用该关系的对象。应当基于可接受的类型对这两个列表进行过滤-例如,如果关系"大于",则可用对象必须为实现"大于"的类型。
同样,如果选择的对象大于,则该关系不应在潜在关系的列表中。我认为这个问题的核心是类型检查器,但是我不确定将这种类型的逻辑合并到我的应用程序中的最佳方法。有人知道DSL的现有类型检查库吗?
我对开放源代码和跨平台技术特别感兴趣。 Java可能是我们最终会使用的语言,但这不是固定的。
解决方案
我们可能会研究Scintilla。它是Notepad ++以及其他工具所使用的编辑组件。尽管我还没有尝试过使用自动补全功能,但它也提供了一些支持,因此我不确定它的效果如何。它是开源的,因此,我认为,如果它不能满足需求,则可以轻松扩展它。
这可能对智能感知方面的CodeTextBox有帮助