首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ECMA脚本5规范如何允许对大于0xFF的十六进制ints进行成功的解析?

ECMA脚本5规范如何允许对大于0xFF的十六进制ints进行成功的解析?
EN

Stack Overflow用户
提问于 2013-04-28 15:58:22
回答 2查看 72关注 0票数 1

EMCA262 5.1版中,十六进制整数文字的定义是:(文档页20,PDF页面32)

HexIntegerLiteral :: 0xHexDigit 0XHexDigit 准自动化六元识字HexDigit HexDigit ::的一个成员 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F

据我所知,半个半个月的样子是这样的:

(HIL (HIL HD)

HIL可以看起来像0x0 (即0x和十六进制数字),HD可以是0,所以HIL可以是0x00x00x00x00x00

显然,没有任何实现是这样工作的,所以我显然误解了一些东西。我应该如何解释这个递归定义(在我的脑海中)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-28 16:07:41

定义可能是递归的,但它不是那样工作的。基本上,它说HexIntegerLiteral是以下几种之一:

  • 不区分大小写的前缀0x,后面跟着一个十六进制数字,或者
  • 一个HexIntegerLiteral,后面跟着一个十六进制数字

0x00x00不遵循这个定义。原因如下:

0x0

这显然是第一部制作的半实物。

0x00

这也是第二部作品中的HIL : HIL 0x0 (上面建立的)后面是十六进制数字0

0x00x

这不是HIL,因为:

  1. 这显然不是第一次生产的结果。
  2. 这也不是第二次生产的结果:从上面建立的HIL 0x00后面跟着的不是十六进制数字。

换句话说,上面的语法不允许这样做:

代码语言:javascript
复制
(HIL (HIL (HIL (HIL (HIL (HIL HD))))))

它所允许的是:

代码语言:javascript
复制
(HIL (HD (HD (HD (HD (HD))))))
票数 2
EN

Stack Overflow用户

发布于 2013-04-28 16:13:16

HexIntegerLiteral被定义为0X0X,后面跟着0-F之一,比如.

代码语言:javascript
复制
//  vv----`0x`
    0x5
//    ^---Hex Digit

...OR是HexIntegerLiteral,然后是0-F,就像.

代码语言:javascript
复制
//  vvv----HexIntegerLiteral
    0x54
//     ^---Hex Digit

...or...

代码语言:javascript
复制
//  vvvv----HexIntegerLiteral
    0x546
//      ^---Hex Digit

如果你倒车的话,这可能会更清楚。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16264719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档