Je souhaite créer un Dsl permettant de déclarer des tableaux et des structures. Je peux le faire avec cette grammaire:Xtext, Déclaration des types de tableau et de structure
Set:
'SET' '(' attribute=ID ',' value=AttributeValue ')';
SimpleValue:
INT | STRING;
Structure:
'{' ID ':' AttributeValue (',' ID ':' AttributeValue)* '}';
Array:
'[' AttributeValue (',' AttributeValue)* ']' ;
AttributeValue:
SimpleValue |
Structure |
Array
;
Cependant, dans mon interprète, je ne peux pas comprendre le type de mes variables. ne peut pas faire quelque chose comme:
if(s.value instanceof Array) {val Array array = s.value}
J'ai essayé avec cette grammaire:
SimpleValue:
{SimpleValue}
INT | STRING
;
Structure:
'{' ID ':' var0=SimpleValue (',' ID ':' var1=SimpleValue)* '}'
;
Array:
'[' var0=SimpleValue(',' var1=SimpleValue)* ']'
;
AttributeValue :
SimpleValue |
Structure |
Array
;
mais il ne fonctionne pas. Dans la ligne
if(s.value instanceof Array) {val Array array = s.value}
s.value
est rouge "Type mismatch: cannot convert from AttributeValue to Array"
erreur