나는 statemachines를 설명하는 Xtext 문법을 가지고, 나는 이전에 선언 된 이벤트에 대한 참조를 사용하여 상태 전환을 설명하기 위해 한 : 나는 편집기를 생성하는 MWE를 사용하는 경우Xtext/Xpand에서 동일한 요소 이름을 통해 참조 또는 터미널에 액세스 할 수있게 만드시겠습니까?
Event:
'event' name=ID
;
State:
'state' name=ID
;
Transition:
event=[Event] '=>' state=[State]
;
, 그것은 참조의 존재를 확인한다 항목. 예를 들어, 필요
init => idle
를 작성하는이 :
event init
state idle
하는 BTW 내가 각 상태 기위한 하나 개의 파일을 사용하고있는 코드 (의 다른 곳에 존재, 그래서 동일한 파일에 있어야하는 방법). 이건 정말 잘 작동
«FOREACH statemachine.transitions.event AS event-» // you get the idea
, 나는 꽤 오랫동안 그것을 사용하고있다 : 내 된 Xpand 코드 템플릿, 나는 변화의 요소로 이벤트 및 상태에 액세스 할 수 있습니다.
그러나
이벤트의 수를 내 statemachines 모두에 공통적 인 (init
,
show
,
hide
,
finish
등을 몇), 내가 이벤트를 내가 사용하는 방법을 참조 할 중 하나를 할 수 있도록하려면 이후에,
또는 모든 파일에서 이벤트를 선언 할 필요없이 위의 이벤트 이름 중 하나를 입력하십시오.
Transition:
event=([Event] | ('init'|'show'|'hide'|'finish')) '=>' state=[State]
;
그래서 내가 말한 키워드 중 하나입니다 터미널
EventID
정의하기로 결정 :
그러나 나는이 작업을 수행 할 수 없습니다
terminal EventID:
'init'|'show'|'hide'|'finish'
;
을 그러나 나는 또한이 작업을 수행 할 수 없습니다 :
Transition:
event=([Event] | EventID) '=>' state=[State]
;
그럼 결합 된 규칙을 만들려고했는데 :
CustomEvent:
'event' name=ID
;
BaseEvent:
name=EventID
;
Event:
CustomEvent | BaseEvent
;
Transition:
event=[Event] '=>' state=[State]
;
역시 작동하지 않았습니다.
Transition:
(event=[Event] | baseevent=EventID) '=>' state=[State]
;
이 작동하지만, 나는 이벤트와 baseevents 모두 찾기 위해 내 모든 템플릿을 변경해야합니다 :
는 지금 내가 해결 정착하기로 결정했습니다.
전혀 내가 중 하나 참조 또는 동일한 요소 이름을 사용할 수있는 방법이 있나요 : 나는 실현
, 이것은 텍스트의 꽤 많은입니다 ... 그래서 마지막으로, 여기 내 질문 와 EventID?
문제는 표준 이벤트보다는이다 주 (거의 표준이 아니다), 그러나 나는 당신이 의미하는 것을 본다. 한편, 모든 이벤트 목록에 명시 적 및 암시 적 이벤트 이름을 모두 포함하는 내 Xpand 템플릿의 확장을 만들었습니다. 이벤트 /베이스 이벤트 쌍으로 페어링하는 것처럼 보입니다. 그러나 귀하의 제안을 살펴보고 현재 솔루션을 정리하는 데 도움이되는지 확인하겠습니다. 너에게 다시 돌아갈 게! – weltraumpirat
좋아요, 내가 링크 된 문서의 부분을 살펴 보았습니다. 그러나 이것이 내 문제를 어떻게 해결할 수 있는지 보지 못했습니다 :'events + = [Event]'를 사용하면, 나는 이벤트 참조를 암시합니다 이미 존재하는 이벤트. 즉, 생성 된 편집기 (더 이상 Xtext!)에서 먼저 이벤트를 지정해야합니다.이 이벤트는 나중에 이름으로 참조 할 수 있습니다. 편집기 (및 MWEReader)는 이벤트가 발견되지 않으면 오류가 있는지 여부를 확인합니다. 이제이 기능을 사용할 수 있기를 원하거나 몇 가지 공통 ID 중 하나를 입력해야합니다.이 ID도 확인해야합니다. – weltraumpirat
간단히 말해서 : 내가 올바르게 이해한다면, 당신이 제안한 해결책은 원래의 Xtext 문법에서는 작동하지만 생성 된 언어와 편집기에서는 작동하지 않는다. – weltraumpirat