1

EMCA262 バージョン 5.1では、16 進整数リテラルの定義は次のとおりです: (ドキュメント ページ 20、PDF ページ 32)

HexIntegerLiteral ::
    0xHexDigit
    0XHexDigit
    HexIntegerLiteral 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 (HIL (HIL (HIL (HIL (HIL HD))))))

0x0HIL は(つまり0x、16 進数) のように見える場合があり、HD は の場合が0あるため、HIL は0x00x00x00x00x00

明らかに、このように機能する実装はないため、明らかに何かを誤解しています。この再帰的な定義を (私の頭の中で) どのように解釈すればよいでしょうか?

4

2 に答える 2

1

HexIntegerLiteral は次のように定義される0Xか、または次のいずれか0Xが続き0-Fます...

//  vv----`0x`
    0x5
//    ^---Hex Digit

...または、次HexIntegerLiteralのいずれかが続く場合、次の0-Fように...

//  vvv----HexIntegerLiteral
    0x54
//     ^---Hex Digit

...また...

//  vvvv----HexIntegerLiteral
    0x546
//      ^---Hex Digit

逆に作業すると、より明確に見えるかもしれません。

于 2013-04-28T16:13:16.613 に答える