- From: Steven Pemberton <steven.pemberton@cwi.nl>
- Date: Tue, 13 Jun 2023 13:13:22 +0000
- To: ixml <public-ixml@w3.org>
- Message-Id: <1686660159685.963852938.4045150884@cwi.nl>
> ACTION 2023-05-09-c: Steven to produce new sample grammars for issue
> #139 for discussion in June.
Late I know, but here is a proposal.
IRIs: absoluteIRI**nl, nl?.
-nl: cr?, lf.
-cr: -#d.
-lf: -#a.
absoluteIRI: scheme, -"://", user?, host?, port?, path?, query?, fragment?.
scheme: letter, letgit*.
-letter: ["a"-"z"; "A"-"Z"].
-letgit: ["a"-"z"; "A"-"Z"; "0"-"9"; "+.-"].
{Example: http}
user: uch*, -"@".
-uch: enc ; iletter ; punct.
{Example: user05:pw12345@}
host: domain++-"." ;
-"[", ipv6, -"]".
domain: (iletter+)++"-". {A domain may contain hyphens,
but not start or end with one.}
{Example: www.w3.org}
{Note that like the published iri grammar,
this also accepts 192.168.0.0 etc}
ipv6: h4++-":", (-":", ipv4)?;
head, zeros, tail.
{Example: 2001:db8:1::8a2e:370:7334}
ipv4: d3, -".", d3, -".", d3, -".", d3.
{Example: 192.168.0.1}
-head: h4**-":".
-tail: ipv4;
h4++-":", (-":", ipv4)?;
.
zeros: -"::".
h4: h, (h, (h, h?)?)?.
-h: ["0"-"9"; "a"-"f"; "A"-"F"].
d3: d;
d, d;
["01"], d, d;
"2", ["01234"], d;
"25", ["012345"].
-d: ["0"-"9"].
port: -":", d*.
{Example: :80}
path: segment+.
segment: -"/", pch*.
-pch: enc ; iletter ; punct ; "@".
{Example: /2002/xforms/index.xhtml}
query: -"?", qfch*.
-qfch: enc ; iletter ; punct ; ["/?@"].
{Example: ?q=test}
fragment: -"#", qfch*.
{Example: #toc}
-iletter: ["a"-"z"; "A"-"Z"; "0"-"9"; #A0-#EFFFD].
-enc: "%", ["0"-"9"; "A"-"F"], ["0"-"9"; "A"-"F"].
-punct: [".!$&'()*+,;=:_~-"].
Input examples
http://www.W3.org/
http://www.w3.org
http://www.w3.org/2002/xforms
irc://irc.w3.org:6665/#forms
http://search.example.org?q=a
ssh://user@host.example.com:2222
ftp://anonymous@example.net:4916/;type=d
file:///test.txt
http://example/my%20file
http://example-com.abc-def.com/
http://user05:pw12345@[2001:db8:1::8a2e:370:7334]:80/2002/xforms/index.xhtml?q=test#toc
http://[::]/
http://[::1]/
http://[1::]/
https://[::FFFF:192.168.0.128]:8080/
http://[2001::7334]/
http://192.168.0.1/
http://192.168.0.1:/
https://école.fr.example.org/élève.xhtml
https://zh.wikipedia.org/wiki/Wikipedia:关于中文维基百科/en
https://www.石川.日本/雅康#mimasa
http://search.example.org?q=☺
http://http://http://@http://http://?http://#http://
http://
Comments:
Like the original, in a non ipv6 domain, it doesn't treat ipv4 specially: 192.168.0.1 is treated just as 192.168.0.com would be (which is a valid domain address)
<host>
<domain>192</domain>
<domain>168</domain>
<domain>0</domain>
<domain>1</domain>
</host>
Doesn't separate the user and password.
Doesn't accept file:/test.txt, but does accept file:///text.txt
In an ipv6 address with an ipv4 ending, like [::FFFF:192.168.0.128] it does this:
<host>
<ipv6>
<zeros/>
<h4>FFFF</h4>
<ipv4>
<d3>192</d3>
<d3>168</d3>
<d3>0</d3>
<d3>128</d3>
</ipv4>
</ipv6>
</host>
Steven
Attachments
Received on Tuesday, 13 June 2023 13:13:30 UTC