From 9e0c19d5c20d2f5e2323e1b9f0fadd3276df4daf Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Fri, 10 Jun 2022 11:16:48 -0700 Subject: [PATCH] Clarify grammar for decimal-number cannot have leading zeroes. --- src/doc/rustc/src/symbol-mangling/v0.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/doc/rustc/src/symbol-mangling/v0.md b/src/doc/rustc/src/symbol-mangling/v0.md index dfd53434251c..fbb813a339a8 100644 --- a/src/doc/rustc/src/symbol-mangling/v0.md +++ b/src/doc/rustc/src/symbol-mangling/v0.md @@ -983,12 +983,16 @@ the suffixed name has the same semantics as the original. ## Common rules [decimal-number]: #common-rules [digit]: #common-rules +[non-zero-digit]: #common-rules [lower]: #common-rules [upper]: #common-rules -> [decimal-number] → *[digit]* {*[digit]*} +> [decimal-number] → \ +>       `0` \ +>    | *[non-zero-digit]* {*[digit]*} > -> [digit] → `0` | `1` | `2` | `3` | `4` | `5` | `6` | `7` | `8` | `9` +> [non-zero-digit] → `1` | `2` | `3` | `4` | `5` | `6` | `7` | `8` | `9` \ +> [digit] → `0` | *[non-zero-digit]* > > [lower] → `a` |`b` |`c` |`d` |`e` |`f` |`g` |`h` |`i` |`j` |`k` |`l` |`m` |`n` |`o` |`p` |`q` |`r` |`s` |`t` |`u` |`v` |`w` |`x` |`y` |`z` > @@ -1131,11 +1135,14 @@ The following is a summary of all of the productions of the symbol grammar. > [vendor-specific-suffix] → (`.` | `$`) *[suffix]* \ > [suffix] → {*byte*} > -> [decimal-number] → *[digit]* {*[digit]*} +> [decimal-number] → \ +>       `0` \ +>    | *[non-zero-digit]* {*[digit]*} > > [base-62-number] → { *[digit]* | *[lower]* | *[upper]* } `_` > -> [digit] → `0` | `1` | `2` | `3` | `4` | `5` | `6` | `7` | `8` | `9` \ +> [non-zero-digit] → `1` | `2` | `3` | `4` | `5` | `6` | `7` | `8` | `9` \ +> [digit] → `0` | *[non-zero-digit]* \ > [lower] → `a` |`b` |`c` |`d` |`e` |`f` |`g` |`h` |`i` |`j` |`k` |`l` |`m` |`n` |`o` |`p` |`q` |`r` |`s` |`t` |`u` |`v` |`w` |`x` |`y` |`z` \ > [upper] → `A` | `B` | `C` | `D` | `E` | `F` | `G` | `H` | `I` | `J` | `K` | `L` | `M` | `N` | `O` | `P` | `Q` | `R` | `S` | `T` | `U` | `V` | `W` | `X` | `Y` | `Z`