【发布时间】:2016-12-22 09:02:00
【问题描述】:
我有这个具体的语法:
syntax SomeMore = [...] SyncBlock? sync;
syntax SyncBlock = "sync" "{" SyncStatement* stats "}";
syntax SyncStatement = [...];
[SyncBlock]"sync { <syncStrings> }" 似乎可以工作,但是当我尝试将其用作SyncBlock? 并分配它时:
SyncBlock? sync = [SyncBlock?]"sync { <syncStrings> }"
它不起作用:inline parsing not supported on SyncBlock?,建立这个X?-type 的值的最简单方法是什么?
我可以将SyncBlock 转换为SyncBlock? 吗?
这样的事情也行不通:
syncBlock = (SyncBlock?)`sync { <SyncStatement* syncs>}`;
附: SyncBlock? syncBlock = … 导致 Ambiguous code (internal error), SyncBlock? syncBlock = …。可能是由于三元运算符的歧义?
【问题讨论】:
-
X*语法元素似乎也会出现同样的问题。
标签: rascal concrete-syntax-tree