在EMCA262 5.1版中,十六进制整数文字的定义是:(文档页20,PDF页面32)
HexIntegerLiteral ::
0xHexDigit0XHexDigit 准自动化六元识字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。
显然,没有任何实现是这样工作的,所以我显然误解了一些东西。我应该如何解释这个递归定义(在我的脑海中)?
发布于 2013-04-28 16:07:41
定义可能是递归的,但它不是那样工作的。基本上,它说HexIntegerLiteral是以下几种之一:
0x,后面跟着一个十六进制数字,或者0x00x00不遵循这个定义。原因如下:
0x0
这显然是第一部制作的半实物。
0x00
这也是第二部作品中的HIL : HIL 0x0 (上面建立的)后面是十六进制数字0。
0x00x
这不是HIL,因为:
0x00后面跟着的不是十六进制数字。换句话说,上面的语法不允许这样做:
(HIL (HIL (HIL (HIL (HIL (HIL HD))))))它所允许的是:
(HIL (HD (HD (HD (HD (HD))))))发布于 2013-04-28 16:13:16
HexIntegerLiteral被定义为0X或0X,后面跟着0-F之一,比如.
// vv----`0x`
0x5
// ^---Hex Digit...OR是HexIntegerLiteral,然后是0-F,就像.
// vvv----HexIntegerLiteral
0x54
// ^---Hex Digit...or...
// vvvv----HexIntegerLiteral
0x546
// ^---Hex Digit如果你倒车的话,这可能会更清楚。
https://stackoverflow.com/questions/16264719
复制相似问题