【发布时间】:2013-11-29 15:19:13
【问题描述】:
我要为我的 dsl 编写一个推断器,但我有一些仅靠文档帮助无法解决的问题。
第一个: 我需要从一个特性创建 static void main():如何添加 static 与 .toMethod()?
第二个: 假设我的 dsl 中有这样的规则:
Sequence:
'SEQ' name=ID '{'
statements+=Statement*
'}'
;
Where 语句:
Statement:
Sequence | others...
;
Sequence 必须映射到 void 方法,并且该方法的主体由 语句 的翻译组成。 但问题是这样的:当在一个序列中我会找到另一个序列时,我必须为新序列创建一个方法并在超级序列中添加一个调用。
例如:
SEQ first {
instructions...
SEQ second {
other instructions....
}
instructions...
}
必须生成:
void first(){
instructions(translated)...
second();
instructions(translated)...
}
void second(){
other instructions(translated)...
}
有可能实现吗?
【问题讨论】:
-
我不确定这两个问题是否相关。如果不是,你最好分开提问
标签: code-generation xtext xbase