在我的语法中,我希望每行最多一个命令(我不希望&#39 ;;'或':'终止我的命令)。 但是当我使用(' \ r'?' \ n')确保每行一个命令时,它会产生额外的线条。例如它产生:
read Ram 03DF
write Ram 05FF
JMP Add 056A
CHK Reg 08AA
这不是必需的。预计应该没有额外的换行。例如:
read Ram 03DF
write Ram 05FF
JMP Add 056A
CHK Reg 08AA
我正在做的概述
Model:
(content += Elements ('\r'?'\n') )+
;
Elements:
Data | Path | Ram | Address
;
.
.
.
我不确定如何实现这一目标:请帮忙。谢谢
答案 0 :(得分:1)
我认为你不应该在语法中对新行进行建模,因为它对语义没有影响!但是在漂亮打印的情况下,换行符在每个元素之后都有意义。您的语法片段应如下所示:
Model:
content+=Element+;
Element:
Data | Path | Ram | Address;
...
您正在寻找的是org.your.dsl.formatting.YourDslFormatter
课程。它提供了一个方法存根来实现漂亮打印的格式化模式。在那里,您定义了在每个Element
之后插入换行符。尝试从s.th开始。像这样:
class YourDslFormatter {
@Inject YourDslGrammarAccess g
override protected void configureFormatting(FormattingConfig c) {
c.setLinewrap(1).after(g.elementRule)
}
}
每次触发Eclipse的autoformat(ctrl + shift + F)时,您的代码都会在编辑器中打印出来。