我想做一個允許聲明數組和結構的Dsl。我可以用這個語法來做:Xtext,聲明數組和結構類型
Set:
'SET' '(' attribute=ID ',' value=AttributeValue ')';
SimpleValue:
INT | STRING;
Structure:
'{' ID ':' AttributeValue (',' ID ':' AttributeValue)* '}';
Array:
'[' AttributeValue (',' AttributeValue)* ']' ;
AttributeValue:
SimpleValue |
Structure |
Array
;
但是,在我的解釋器中,我無法確定我的變量的類型。不能這樣做:
if(s.value instanceof Array) {val Array array = s.value}
我這個語法嘗試:
SimpleValue:
{SimpleValue}
INT | STRING
;
Structure:
'{' ID ':' var0=SimpleValue (',' ID ':' var1=SimpleValue)* '}'
;
Array:
'[' var0=SimpleValue(',' var1=SimpleValue)* ']'
;
AttributeValue :
SimpleValue |
Structure |
Array
;
,但它不工作。在線路
if(s.value instanceof Array) {val Array array = s.value}
s.value
是紅色「Type mismatch: cannot convert from AttributeValue to Array"
錯誤