@@ -130,55 +130,70 @@ Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta <
130
130
Backus–Naur Form Grammar for Valid SemVer Versions
131
131
--------------------------------------------------
132
132
133
- <version > ::= <major> "." <minor> "." <patch >
134
- | <major> "." <minor> "." <patch > "-" <pre-release>
135
- | <major> "." <minor> "." <patch > "+" <build>
136
- | <major> "." <minor> "." <patch > "-" <pre-release> "+" <build>
133
+ <valid semver > ::= <version core >
134
+ | <version core > "-" <pre-release>
135
+ | <version core > "+" <build>
136
+ | <version core > "-" <pre-release> "+" <build>
137
137
138
- <major > ::= <non-negative integer >
138
+ <version core > ::= <major> "." <minor> "." <patch >
139
139
140
- <minor > ::= <non-negative integer >
140
+ <major > ::= <numeric identifier >
141
141
142
- <patch > ::= <non-negative integer >
142
+ <minor > ::= <numeric identifier >
143
143
144
- <pre-release > ::= <dot-separated identifiers >
144
+ <patch > ::= <numeric identifier >
145
145
146
- <build> ::= <dot-separated build identifiers>
146
+ <pre-release> ::= <dot-separated pre-release identifiers>
147
+
148
+ <dot-separated pre-release identifiers> ::= <pre-release identifier>
149
+ | <pre-release identifier> "." <dot-separated pre-release identifiers>
147
150
148
- <dot-separated identifiers> ::= <identifier>
149
- | <identifier> "." <dot-separated identifiers>
151
+ <build> ::= <dot-separated build identifiers>
150
152
151
153
<dot-separated build identifiers> ::= <build identifier>
152
154
| <build identifier> "." <dot-separated build identifiers>
153
155
154
- <identifier> ::= <non-negative integer >
155
- | <non- numeric identifier>
156
+ <pre-release identifier> ::= <alphanumeric identifier >
157
+ | <numeric identifier>
156
158
157
- <build identifier> ::= <identifier character >
158
- | <identifier character> <build identifier >
159
+ <build identifier> ::= <alphanumeric identifier >
160
+ | <digits >
159
161
160
- <non-numeric identifier> ::= <non-digit character>
161
- | <non-digit character> <build identifier>
162
- | <build identifier> <non-digit character>
163
- | <build identifier> <non-digit character> <build identifier>
162
+ <alphanumeric identifier> ::= <letters>
163
+ | <letters> <identifier characters>
164
+ | <digits> <non-digits>
165
+ | <digits> <non-digits> <identifier characters>
166
+ | <digits> <identifier characters> <non-digits>
167
+ | <digits> <identifier characters> <non-digits> <identifier characters>
168
+ | "-" <identifier characters>
164
169
165
- <non-digit character> ::= <letter> | "-"
170
+ <numeric identifier> ::= "0"
171
+ | <positive digit>
172
+ | <positive digit> <digits>
166
173
167
- <identifier character> ::= <non-digit character> | <digit>
174
+ <identifier characters> ::= <identifier character>
175
+ | <identifier character> <identifier characters>
168
176
169
- <non-negative integer> ::= "0"
170
- | <positive integer>
177
+ <identifier character> ::= <digit>
178
+ | <non-digit>
179
+
180
+ <non-digits> ::= <non-digit>
181
+ | <non-digit> <non-digits>
171
182
172
- <positive integer > ::= <positive digit >
173
- | <positive digit> <digits>
183
+ <non-digit > ::= <letter >
184
+ | "-"
174
185
175
186
<digits> ::= <digit>
176
187
| <digit> <digits>
177
188
178
- <digit> ::= "0" | <positive digit>
189
+ <digit> ::= "0"
190
+ | <positive digit>
179
191
180
192
<positive digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
181
193
194
+ <letters> ::= <letter>
195
+ | <letter> <letters>
196
+
182
197
<letter> ::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J"
183
198
| "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T"
184
199
| "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" | "c" | "d"
0 commit comments