没有前导零的 AQL 数字文字解析错误
AQL numeric literal parse error without leading zero
我在 AQL 查询中遇到解析错误,该查询包含一个 数值文字 ,其值为 'x',其中
-1 < x < 1 和 x != 0,其中 前导零被省略 ,例如 x < .5
或 x > -.2
.
我认为这可能是一个错误,但文档没有明确说明是否需要前导零(似乎很奇怪需要它)。
我只是 运行 版本 3.4 rc4,所以我无法验证此行为是否存在于任何正式发布的版本中。有人可以确认吗?或者这里有任何 ArangoDB 开发人员愿意发表评论吗?
谢谢!
运行 这在 3.3.19 中运行良好:
let tmp = [0.2,3,4,0.5]
for t in tmp
filter t > 0.5
return t
这会引发解析错误
let tmp = [0.2,3,4,0.5]
for t in tmp
filter t > .5
return t
所以,我认为可以肯定地说 0 是强制性的
AQL 不支持没有前导数字的浮点数文字。
documentation 显示了支持的符号示例,.5
不在其中。
如果您想将其作为功能提出,create an issue on GitHub。
您可以在此处找到定义数字语言标记的代码:
https://github.com/arangodb/arangodb/blob/devel/arangod/Aql/tokens.ll#L447
(0|[1-9][0-9]*) {
/* a numeric integer value */
...
(0|[1-9][0-9]*)((\.[0-9]+)?([eE][\-\+]?[0-9]+)?) {
/* a numeric double value */
从这些正则表达式中可以看出,00
和 00.123
等字面量也不被支持 - 整数部分的前导 0
不能超过一个。
更新
我们最近将 a pull request 合并到 ArangoDB 的开发分支中,该分支增加了对小数的支持,而 AQL 中没有前导零。从下一个版本开始,这在 ArangoDB 开发版本中可用,但在任何版本中都不可用。到目前为止,目标版本为 3.5。
如果对该功能有普遍需求,将拉取请求反向移植到 ArangoDB 3.4 也应该很容易。
我在 AQL 查询中遇到解析错误,该查询包含一个 数值文字 ,其值为 'x',其中
-1 < x < 1 和 x != 0,其中 前导零被省略 ,例如 x < .5
或 x > -.2
.
我认为这可能是一个错误,但文档没有明确说明是否需要前导零(似乎很奇怪需要它)。
我只是 运行 版本 3.4 rc4,所以我无法验证此行为是否存在于任何正式发布的版本中。有人可以确认吗?或者这里有任何 ArangoDB 开发人员愿意发表评论吗?
谢谢!
运行 这在 3.3.19 中运行良好:
let tmp = [0.2,3,4,0.5]
for t in tmp
filter t > 0.5
return t
这会引发解析错误
let tmp = [0.2,3,4,0.5]
for t in tmp
filter t > .5
return t
所以,我认为可以肯定地说 0 是强制性的
AQL 不支持没有前导数字的浮点数文字。
documentation 显示了支持的符号示例,.5
不在其中。
如果您想将其作为功能提出,create an issue on GitHub。
您可以在此处找到定义数字语言标记的代码: https://github.com/arangodb/arangodb/blob/devel/arangod/Aql/tokens.ll#L447
(0|[1-9][0-9]*) {
/* a numeric integer value */
...
(0|[1-9][0-9]*)((\.[0-9]+)?([eE][\-\+]?[0-9]+)?) {
/* a numeric double value */
从这些正则表达式中可以看出,00
和 00.123
等字面量也不被支持 - 整数部分的前导 0
不能超过一个。
更新
我们最近将 a pull request 合并到 ArangoDB 的开发分支中,该分支增加了对小数的支持,而 AQL 中没有前导零。从下一个版本开始,这在 ArangoDB 开发版本中可用,但在任何版本中都不可用。到目前为止,目标版本为 3.5。
如果对该功能有普遍需求,将拉取请求反向移植到 ArangoDB 3.4 也应该很容易。