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

浮点数的Xtext终端规则

吴伟志
2023-03-14

我尝试在Xtext中定义浮点类型,但是我在生成ariti事实时收到错误消息:

    The following token definitions can never be matched because prior tokens match the same input:RULE_FLOAT,RULE_INT

我的浮动终端如下:

    terminal FLOAT returns ecore::EFloat: INT '.' INT;

我的浮点是复制一个能够被Java接受的浮点:1.1、1、0.1

共有1个答案

桑飞语
2023-03-14

终端规则取决于顺序。第一场比赛通常获胜。你的语法似乎包含了另一条已经匹配INT.INT的规则,但从你提供的信息来看,这是不可能的。一般来说,最好使用数据类型规则来描述浮点的语法。

这将是(注意缺少的终端关键字):

Float returns ecore::EFloat: INT '.' INT;
 类似资料:
  • 我不明白关键字的区别("-

  • 我正在努力让交叉引用在我的DSL中工作。下面是语法的精简版本(标准示例DSL的修改版本): 因为我没有使用标准的模式,所以我跟随这篇关于如何创建自己的的博客文章: 从另一个答案来看,我认为我应该实现自己的范围提供程序: 我还在运行时模块中绑定了这些: 运行生成的编辑器时,我创建了一个如下所示的文件: 问题是(1)编辑器不会在扩展子句上自动完成,(2)编辑器显示错误消息的引用。 我错过了什么?

  • 所有数字都更改为浮点,带有一个<代码>。0连接到末尾。 我试过parseInt、toFixed、round、floor和其他所有明显的选择。 一个简单的例子: 日志显示“Number”类型的浮点值,长度值为5.0。 任何添加数字的尝试都会导致相同的结果 日志仍显示浮点值 我希望返回一个整数

  • 小数转 2 进制 方法:乘2取整 对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。如此不断重复,直到小数部分为0或达到精度要求为止。第一次所得到为最高位,最后一次得到为最低位。 如0.25的二进制: 0.25*2 = 0.5 取整是0, 0.5*2 =1.0 取整是1, 即0.25的二进制为 0.01(第一

  • 小数转 2 进制 方法:乘2取整 对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。如此不断重复,直到小数部分为0或达到精度要求为止。第一次所得到为最高位,最后一次得到为最低位。 如0.25的二进制: 0.25*2 = 0.5 取整是0, 0.5*2 =1.0 取整是1, 即0.25的二进制为 0.01(第一

  • 对于精度很重要的用例,推荐使用Python的本机浮点实现还是十进制实现? 我认为这个问题很容易回答:如果累积误差具有重要意义,例如可能在计算轨道轨迹等方面,那么一个精确的表示可能更有意义。 null