변수에 대한 제약 조건을 확인하기 위해 약간의 DSL을 설계하려고합니다. 순간 내 문법은 다음과 같습니다Xtext에서 Xbase 표현식을 평가하기위한 클래스를 생성합니까?
내가 입력으로 값을 취 또한 인 (제약 조건에 포함 된 유일한 변수에 매핑 한 방법을 포함하는 클래스의 인스턴스를 생성 할Start:
varDeclarations += XVariableDeclaration*
rules+=Constraint*;
Constraint:
{Constraint}
'FOR' 'PAYLOAD' payload=PAYLOAD 'ELEMENT' element=ID 'CONSTRAINED BY' constraint=XExpression;
PAYLOAD:
"SimulationSessionEvents"
|"stacons"
|"any"
;
변수 만 선언 됨) 제약 조건이 충족되는지 확인합니다.
이러한 인스턴스는 각 인스턴스를 통해 값을 전달하는 다른 클래스에서 사용되며 제약 조건이 충족되는지 확인합니다.
이명시 적으로 제약 클래스에 대한 코드를 생성, 난 그냥 식 평가 코드를 생성 할
XBaseCompiler
을 사용할 수있는 경우 : 제가보기에는나는 두 가지 옵션이 있습니다. 그러나 나는 메모리 객체를 직접 생성하는 방법이 있다면 어떻게 든이 클래스들을로드해야 할 것이다.
ModelInferrer
을 사용하면 다른 클래스로 전달할 수있는 메모리 객체를 직접 생성 할 수 있으므로 클래스 로딩이 필요하지 않습니다. 이 경우에는 xbase 표현식 평가 코드를 생성하는 방법을 모르겠습니다.
모든 xtext 문서/자습서를 읽고, 그리고 예제와 함께 주위를 연주 후, 나는 다음과 같은 질문을 왼쪽 오전 :
scalabilty의 측면에서 '최고'접근 방식이다(나중에 할 수있다 문법 및/또는 그가 생성 한 클래스의 기능을 확장하고 싶습니까?) ModelInferrer 방식을 따르려면 어떻게해야할까요? 다른 방법이 있습니까?
어떤 도움이 많이
괜찮은 것 같지만 생성 된 클래스에 어떻게 액세스합니까? 예를 들어, DSL 모델 파일을 파싱 할 때 생성 된 모든 인스턴스를 벡터에 추가하려면 어떻게해야합니까? 이것은 xtext 자습서에서 찾을 수없는 것입니다. 일단 이러한 유형이 액세스 될 수있는 방법이 만들어지면 명확하지 않기 때문입니다. –
나는 위의 코멘트에 질문을했다. 그래서 나는 그것이 무엇을 의미하는지 명확하게했다. http://stackoverflow.com/questions/11260216/how-to-use-xtext-inferred-jvm-model-outside-of-xtext- 계획 –