0
我有一個XText語法的特定部分,它定義了一個應該打印所有表達式的類的塊。造成這種情況的XTEXT語法部分如下所示:XText - 獲取XExpression的內容(編譯值)
Print:
{Print}
'print' '{'
print += PrintLine*
'}';
PrintLine:
obj += XExpression;
現在我用下面的推斷器代碼來創建一個print()方法:
Print: {
members += feature.toMethod('print', typeRef(void)) [
body = '''
«FOR printline : feature.print»
System.out.println(«printline.obj»);
«ENDFOR»
'''
]
}
好吧,我繼續前進,用下面的測試代碼A類:
print {
"hallo"
4
6 + 7
}
而結果是:
public void print() {
System.out.println([[email protected] (value: hallo)]);
System.out.println([[email protected] (value: 4)]);
System.out.println([<XNumberLiteralImpl> + <XNumberLiteralImpl>]);}
當然,我希望的:
public void print() {
System.out.println("hallo");
System.out.println(4);
System.out.println(6+7);
}
我明白,我有可能以某種方式調用編譯器的推斷器爲«printline.obj»
,但我真的不知道怎麼樣。
嗨基督徒,那只是我需要的東西!感謝這個真棒聖誕禮物:) –
嗨,基督徒,我剛剛遇到了這個解決方案的一個問題。當我使用「<=」比較器時,出現問題。這意味着當我使用例如「print {4 <= 5}」時,我得到一個錯誤,指出「在輸入'<='」時沒有可行的選擇。這很奇怪,因爲所有其他比較器都可以正常工作。 –
您確定xbase lib位於模型項目的類路徑中嗎? –