我完全不熟悉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