当前位置: 首页 > 知识库问答 >
问题:

XText-如何设置代码区域,排除语法检查

姬向明
2023-03-14

小结:我希望为我自己的语言设置左右边距,即不包括语法检查的代码区域。

背景:使用xtext,我试图创建一个漂亮的Cobol编辑器。到目前为止,我完成了语法,遇到了页边空白和注释的问题。

我可以在语法中包含左页边距:在“\n”之后最多6!”\n'chars。

不过,这并没有解决我的问题。SLComment以'*'放在左边的第7个位置开始。我可以用'\n’ '*' -

我不能就这么把它当成'*'-

我也知道我不会用语法规则解决右页边距问题(例如排除78个位置后的区域)。

我想有一种方法可以干扰xtext正在检查的文本,但还没有找到解决方案或提示如何实现这一点。

还试图找出这是否可以通过某种方式进行预处理,但也没有找到任何提示如何做到这一点。

或者可以同时使用两个语法。额外的一个会得到每一行并隐藏边距吗?

希望我能够描述我面临的问题,以及迄今为止我所做的尝试。

共有1个答案

从焱
2023-03-14

我想你可以使用像LINE_START_COMMENT terminal rule这样的东西,捕捉每行的前6个字符,然后在语法中隐藏它。

terminal LINE_START_COMMENT: 
    // Up to 6 chars that are NOT a new line
    '\n' (!'\n')? (!'\n')? (!'\n')? (!'\n')? (!'\n')? (!'\n')?
;

然后,使用这种方法,我想你也应该修改你的全行注释规则,比如:

terminal FULL_LINE_COMMENT: 
    LINE_START_COMMENT '*' 
    (LINE_START_COMMENT '*' | !(LINE_START_COMMENT) )+
    (LINE_START_COMMENT)?
;

在这里,我定义了完整的注释行,在下面的注释行开始之后结束。要检查多个连续的注释行,您必须接受任何不是注释终止符(在本例中是行\u START\u comment)或后面带有新“*”的行\u START\u comment的内容作为注释。

 类似资料:
  • 内刀片-。 在。 如果我跑: 我得到正确的欢迎刀片页面与正确的翻译。 另一条路线: 如果我运行

  • 你好,我将获得一个子域division.company.com的访问权限,我将不得不在合同中指出它的位置。我不想要求合同更新,因为每次我需要切换服务器时,子域都指向哪里。 我希望有一个顶级的DNS一样的子域控制。 a)我是否使用某种路由/代理服务器? b) 有没有办法进行动态DNS分配(顶级域端的单次最小配置)? c) 我所寻找的DDNS提供商可能是这样的吗https://www.dynu.com

  • 问题内容: 我想设置和朋友使用的JSTL语言环境。我知道可以使用,但我需要动态地进行操作(取决于从数据库中检索到的用户数据),并且更喜欢Java代码- 确切地说是一个过滤器类。 我以为将session属性设置为所需的实例可以解决问题,但是它被忽略了:JSTL标记继续使用浏览器的语言环境。 我确认没有页面上下文或相同名称的请求属性。 那我在做什么错?还是我真的需要通过JSP做到这一点? 阅读JSTL

  • 在源服务(“cluster_a”)和目标服务(“cluster_b”)之间启用区域感知路由需要执行几个步骤。 在源服务上的Envoy配置 本节介绍与源服务并行运行的Envoy配置。这些要求是: Envoy必须使用--service-zone选项启动,该选项定义了当前主机的区域。 源和目标集群的定义都必须具有sds类型。 local_cluster_name必须设置为源群集。 以下配置中仅列出了集群