問題:我想在我的語法中有一個執行塊,它允許任何有效的java行(或者只是任何行,這也可以)在其範圍內:如何在Xtext語法中允許一行Java代碼
Execution:
{Execution} 'execute {'
(lines+=(JavaLine | Referral))*
'}'
;
Referral:
inReferal | outReferal
;
inReferal:
name=ID '<=' port=ID
;
outReferal:
name=ID '=>' port=ID
;
JavaLine:
{JavaLine}(words+=ID)* ';' // this doesn't fit quite its needs, no . - { etc allowed
;
這是語法的相關部分,我將如何創建JavaLine以獲得任何行?
紅利問題:我有其他規則,如OutPort或Parameter,我怎麼能阻止它們在我的執行塊中使用? (我得到的語法高亮了我的Java行中的關鍵字)
Model:
stages+=Stage*;
Stage:
'stage' name=ID (('implements' interfaces=List)? & ('extends' extension=ID)?) '{'
lines+=StageItems*
'}';
List: items+=ID (',' items+=ID)*;
StageItems:
InPort | OutPort | Parameter | Execution
;
Parameter:
'param' type=ID name=ID
;
InPort:
'in' type=ID name=ID
;
OutPort:
'out' type=ID name=ID
;
感謝您的回答。我可以以某種方式導入現有的Java語法嗎?我唯一想做的就是完全複製執行塊中的內容。 –