사람들이 일부 변수를 선언 할 수있는 텍스트에 dsl을 쓰고 있습니다. 문법은 다음과 같다 :Xtext, 인터프리터에서 ID와 문자열의 차이 만들기
Cosem:
cosem+=ID '=' 'COSEM' '(' class=INT ',' version=INT ',' obis=STRING ')' ;
Attributes :
attribute+=ID '=' 'ATTRIBUTE' '(' object=ID ',' attribute_name=STRING ')' ;
Action:
action+=ID '=' 'ACTION' '(' object=ID ',' action_name=STRING ')';
DSL 프린트 방법 등 몇 가지 방법이 있습니다
Print:
'PRINT' '(' var0=(STRING|ID) (','var1+=(STRING|ID))* ')' |
'PRINT' '(' ')'
단계;
나중에 내 코드에서 사용할 수 있도록지도에 모든 변수를 넣었습니다. 열쇠는 그 (것)들을 확인하는 것은 문자열 인 그들의 ID입니다. 하지만, 내 인터프리터 나는
예를 들어def dispatch void exec(Print p) {
if (LocalMapAttribute.containsKey(p.var0))
{print(LocalMapAttribute.get(p.var0))}
else if (LocalMapAction.containsKey(p.var0)){print(LocalMapAction.get(p.var0))}
else if (LocalMapCosem.containsKey(p.var0)){print(LocalMapCosem.get(p.var0))}
else
{print("erreeeur Print")}
p.var1.forEach[v
| if (LocalMapAttribute.containsKey(v)){print(LocalMapAttribute.get(v))}
else if (LocalMapAction.containsKey(v)){print(LocalMapAction.get(v))}
else if (LocalMapCosem.containsKey(v)){print(LocalMapCosem.get(v))}
else{print("erreur entre print")} ]
}
내가 PRINT ("attribut2",attribut2)
쓰기 결과가
attribut2 "the value of attribut2"
수 갈까요 문자열 및 ID의 차이를 만들 수 있지만
"the value of attribut2" "the value of attribut2"
를 얻을 수
답변 해 주셔서 감사합니다. 어떻게 확인할 수 있습니까? 저의 낮은 평판 때문에 나는 할 수 없습니까? –
을 찾은 것처럼 보입니다. –