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

在xtext中用int和string编写规则的正确方法是什么?

宗涵蓄
2023-03-14

我定义了一个Xtext语法规则来解析一个简单的时间戳,比如YYYY-MM-DDTHH-MM-SS,但是,当我发送类似于2019-01-01T08:12:14的内容时,解析器不会解析,但当我发送2019-01-01 t 08:12:14时,它会解析。

我已经尝试去除规则定义标记之间的所有空白,但这没有帮助(而且可能不应该有帮助)

规则是:

Timestamp
    :
        year=INT '-' month=INT '-' day=INT 'T' hour=INT ':' minute=INT (':' second=INT)?
    ;

共有1个答案

常英纵
2023-03-14

在您的情况下,使用hidden()子句应该可以解决这个问题

Timestamp hidden()
    :
        year=INT '-' month=INT '-' day=INT 'T' hour=INT ':' minute=INT (':' second=INT)?
    ;

但是还有另一个问题:

'T'h=INT,它需要T周围的空格,否则将解析ID

Timestamp
    :
        Date 'T' Time
    ;

fragment Date hidden():
    year=INT '-' month=INT '-' day=INT
;

fragment Time hidden():
    hour=INT ':' minute=INT (':' second=INT)?
;

但这仍然有一个问题,那就是它需要空间

=

Timestamp
    :
       ts=TS
    ;
terminal TS: INT'-'INT'-'INT'T'INT':'INT(':'INT)?;
 类似资料:
  • 问题内容: 我在一些帖子中看到人们在编写动态HTML时不喜欢在javascript中使用。 为什么是这样?什么是 正确的 方法是什么? 问题答案: 仅在最初解析页面和创建DOM时才起作用。浏览器到达结束标记并且DOM准备就绪后,就不能再使用了。 我不会说使用是正确的还是不正确的,这仅取决于您的情况。在某些情况下,您只需要完成任务即可。查看如何将Google Analytics(分析)注入大多数网站

  • 我想使用OpenCV对现有HDR图像执行算术运算,然后在中写入HDR文件。hdr格式。算术运算对这个问题并不重要,所以让我们假设我想读一个。hdr文件,然后将其写入相同的格式。 我尝试用通常的方法,首先读取hdr文件 然后写为 我使用Mac的Finder和OpenHDRViewer来查看HDR图像。当我运行上述代码时,Mac finder能够正确地显示文件。但是当我尝试使用OpenHDRViewe

  • 问题内容: 这个问题应该比关于更多。 我有一个子类(在python 2.7中,numpy 1.6.2),并且我发现在对象时未列出的字段名称(因此,ipython的自动完成功能无效)。 为了修复它,我尝试在子类中重写,如下所示: 结果是:。(我发现这里实际上应该在python 3.3中工作…) 作为一种解决方法,我尝试了: 据我所知,这是可行的,但当然并不优雅。 问题: 后一种解决方案对我而言是否正

  • 问题内容: 假设我要编写以下HQL查询: 将其编写为参数化查询的正确方法是什么,例如 问题答案: 我不确定如何使用位置参数来执行此操作,但是如果可以使用命名参数而不是位置参数,则可以将命名参数放在方括号内,并且可以使用Query接口中的setParameterList方法将值列表绑定到此参数。

  • 问题内容: 我正在与我的CompSci教授交谈,他建议将所有String 方法编写为: 而不是: 这两行都可以编译,但是我想知道第一种方法的好处是什么?我一直都是后一种方式。错了吗 什么是普通/常规? 问题答案: 第一种方法确保执行比较时不会收到 NullPointerException 。当您尝试在不存在的对象上调用方法时,抛出(发生)此异常。 以下是一些相关的切线:仔细阅读风险自负 不过要注意

  • 我在类组件中编写了一个返回一些JSX的函数,如下所示: 在我的类组件的main render方法中,我“调用”了这个函数,就好像我在写JSX一样: 虽然这在本地没有问题,但是在将一个构建部署到一个临时环境时,我得到了以下错误:https://reactjs.org/docs/error-decoder.html/?args[]=未定义 当我更改时