我想做一个允许声明数组和结构的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"
错误