我完全不熟悉XText。XText:使用自定义终端定义
当你使用XTEXT你可以指定一个第二语法和使用,因为它是说,它声明的定义定义语法here:
grammar org.eclipse.xtext.example.Domainmodel with org.eclipse.xtext.common.Terminals
在的Xtext每个语法都有一个唯一的 的名称,像公共Java类 需要在Java类路径中反映 文件的位置。在我们的 的情况下,语法文件位于 /org/eclipse/xtext/example/Domainmodel.xtext 因此,该语法的名称是 org.eclipse.xtext.example.Domainmodel。 该声明( 与 org.eclipse.xtext.common.Terminals) 状态的第二部分,该语法所重用,并从指定 语法 覆盖规则。该 org.eclipse.xtext.common.Terminals是 库语法附带的Xtext 和预定义了最常见的 终端规则
我开发一个插件XTEXT,我想定义自己的终端分离的文件中的符号。可能吗?我怎样才能做到这一点?
我试着创建一个新的Xtext文件,并在org.eclipse.xtext.common.Terminals之后附加它,并添加只是我的,但两个解决方案都不编译。
谢谢。
编辑
如果我使用在同一项目中的两个XTEXT文件,一个语法和一个用于文法的终端,我得到下面的异常启动mwe2文件:
的Java。 lang.IllegalStateException: 问题解析 '类路径:/org/xvr/language/sh/ShaderDsl.xtext':[XtextLinkingDiagnostic: 空:1无法解析参照 语法 “org.xvr.language.sh。 ShTerm inal', XtextLinkingDiagnostic:null:9 无法解析对参考文献 AbstractRule'ID'。, TransformationDiagnostic:空:14 无法创建数据类型不变 (错误码:NoSuchTypeAvailable), TransformationDiagnostic:空:17 无法创建数据类型精密 (错误码:NoSuchTypeAvailable), TransformationDiagnostic:空:19 无法创建数据类型HIGH_PRECISION (错误代码:NoSuchTypeAvailable), TransformationDiagnostic:空:20 无法创建数据类型 MEDIUM_PRECISION(错误码: NoSuchTypeAvailable), TransformationDiagnostic:空:21 无法创建数据类型LOW_PRECISION (错误码:NoSuchTypeAvailable)
两个XTEXT文件是:
语法
grammar org.xvr.language.sh.ShaderDsl with org.xvr.language.sh.ShTerminal //org.eclipse.xtext.common.Terminals
generate shaderDsl "http://www.xvr.org/language/sh/ShaderDsl"
....
和语法的终端
grammar org.xvr.language.sh.ShTerminals with org.eclipse.xtext.common.Terminals
generate shTerminals "http://www.xvr.org/language/sh/ShTerminals"
terminal Test : 'test';
我试过了,我得到错误“生成的包myTerminals”可能不是空的“在生成线。你是怎么避免的? – mvmn 2017-01-12 13:15:13