数字值转换的无预期行为

问题描述 投票:0回答:1

我在textx中有以下规则:

IsLessThanOrEqualToRule:
'is <= ' reference_value_input = FLOAT | INT
;

该规则允许DSL用户以以下方式指定参考数字值为浮点或整数:IS<= 1000 or is <= 100.025.

无论如何,取决于我指定值类型的顺序浮动和int,输入的数字值正在转换。这是一种意外的行为。 示例:

  1. 如果i将规则指定为
    .....reference_value_input = FLOAT | INT
    ,则整数输入值表示为浮点。因此,1000表示为1000.0.
  2. 如果i将规则指定为
    .....reference_value_input = INT | FLOAT
    ,则浮点输入值表示为整数。因此,1000.112表示为1000.

阅读用户输入时,如何维护数字类型? 感谢您的所有投入。 Anjan

textx
1个回答
0
投票

Textx使用PEG,该PEG尊重定义规则的顺序。因此,如果您订购规则为

FLOAT | INT
,则将首先尝试。这是问题,因为
FLOAT
规则匹配
FLOAT
,因此永远不会尝试以下的
INT
。 tolusition IT使用不匹配的
INT
。有一个更通用的规则称为

STRICTFLOAT

,它可以正是您需要的。所以,只需写

INT
文档中对base textx类型的分类提供了更详细的说明。
    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.