摘要:我希望为我自己的语言设置左右边距 - 排除语法检查的代码区域。
背景:使用 xtext,我正在尝试创建漂亮的 Cobol 编辑器。到目前为止,我完成了语法并遇到了边距和注释问题。
我可以在语法中包含左边距:在 '\n' 后最多 6 个 !'\n' 字符。
但这并不能解决我的问题。SLComment 以 '*' 开头,位于左起第 7 个位置。一旦我以某种方式排除每行中的前 6 个字符,我就可以使用 '\n' '*' -> '\n' 规则来捕捉它。
我不能只将其保留为 '*' -> '\n' 并将位置检查委托给 validate ,因为它弄乱了乘法规则,它当然使用了 '*'。在语法边距规则之后放置注释规则也不是一个解决方案,因为那样我无法在代码的第一行中捕获边距。
我也知道我不会使用语法规则来解决右边距问题(例如排除 78 位之后的区域)。
我想有一种方法可以干扰 xtext 正在检查的文本,但还没有找到解决方案或提示如何完成此操作。
还试图找出是否可以通过某种方式进行预处理,但也找不到任何提示。
或者也许可以同时使用两种语法。额外的一个会得到每一行并隐藏边距?
希望我能够描述我面临的问题以及到目前为止我尝试了什么。