URI Grammar
uri‑reference
→
absolute‑uri
|
relative‑ref
absolute‑uri
→
scheme
colon
hier‑part
(
quest
query
)
?
(
hash
fragment
)
?
scheme
→
scheme‑char
+
scheme‑char
→
alpha
|
digit
|
dash
|
plus
|
dot
hier‑part
→
slash
slash
authority
path‑abempty
|
path‑absolute
|
path‑rootless
|
path‑empty
relative‑ref
→
relative‑part
(
quest
query
)
?
(
hash
fragment
)
?
relative‑part
→
slash
slash
authority
path‑abempty
|
path‑absolute
|
path‑noscheme
|
path‑empty
authority
→
(
user‑info
at
)
?
host
(
colon
port
)
?
user‑info
→
(
unreserved
|
pct‑encoded
|
sub‑delims
|
colon
)
*
host
→
ip‑literal
|
ipv4‑address
|
reg‑name
ip‑literal
→
lbracket
(
ipv6‑address
|
ipv‑future
)
rbracket
ipv4‑address
→
digit
+
dot
digit
+
dot
digit
+
dot
digit
+
ipv6‑address
→
ipv6‑char
+
ipv6‑char
→
digit
|
hx
|
colon
|
dot
|
slash
ipv‑future
→
alpha
(
digit
|
hx
)
+
dot
(
unreserved
|
sub‑delims
|
colon
)
+
port
→
digit
*
reg‑name
→
(
unreserved
|
pct‑encoded
|
sub‑delims
)
*
path‑abempty
→
(
slash
segment
)
*
path‑absolute
→
slash
segment‑nz
(
slash
segment
)
*
path‑noscheme
→
segment‑nz‑nc
(
slash
segment
)
*
path‑rootless
→
segment‑nz
(
slash
segment
)
*
path‑empty
→
<empty>
segment
→
pchar
*
segment‑nz
→
pchar
+
segment‑nz‑nc
→
(
unreserved
|
pct‑encoded
|
sub‑delims
|
at
)
+
query
→
(
pchar
|
slash
|
quest
)
*
fragment
→
(
pchar
|
slash
|
quest
)
*
pchar
→
unreserved
|
pct‑encoded
|
sub‑delims
|
colon
|
at
unreserved
→
alpha
|
hx
|
digit
|
dot
|
dash
|
underscore
|
tilde
reserved
→
gen‑delims
|
sub‑delims
gen‑delims
→
colon
|
slash
|
quest
|
hash
|
lbracket
|
rbracket
|
at
sub‑delims
→
exclamation
|
dollar
|
amp
|
sq
|
lparen
|
rparen
|
asterisk
|
plus
|
comma
|
semicolon
|
eq
pct‑encoded
→
percent
hex
hex
hex
→
digit
|
hx