Grammar! Grammar! Grammar! Grammar!
Mushroom! Mushroom!
(Use ←/→ arrow keys to navigate)
See also https://github.com/nineml/abnf2ixml/
Internet Engineering Task Force
The IETF defines web standards
Some of those standards contain grammars
Grammar!
For example, Uniform Resource Identifiers (URIs) are defined by RFC 3986
RFC 3986 contains a grammar for parsing URIs
Unfortunately,
uri.abnf
is not an iXML grammar;; Transcribed from RFC 3986 by ndw URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty URI-reference = URI / relative-ref absolute-URI = scheme ":" hier-part [ "?" query ] relative-ref = relative-part [ "?" query ] [ "#" fragment ] relative-part = "//" authority path-abempty / path-absolute / path-noscheme / path-empty scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) authority = [ userinfo "@" ] host [ ":" port ] userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT IP-literal = "[" ( IPv6address / IPvFuture ) "]" IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" h16 = 1*4HEXDIG ls32 = ( h16 ":" h16 ) / IPv4address IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 reg-name = *( unreserved / pct-encoded / sub-delims ) path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0<pchar> segment = *pchar segment-nz = 1*pchar segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" ) ; non-zero-length segment without any colon ":" pchar = unreserved / pct-encoded / sub-delims / ":" / "@" query = *( pchar / "/" / "?" ) fragment = *( pchar / "/" / "?" ) pct-encoded = "%" HEXDIG HEXDIG unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" reserved = gen-delims / sub-delims gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
Grammar! Grammar!
Grammars in IETF specifications are defined with Augmented BNF (ABNF)
RFC 5234 contains a grammar for ABNF
Unfortunately,
abnf.abnf
it is also not an iXML grammarrulelist = 1*( rule / (*c-wsp c-nl) ) rule = rulename defined-as elements c-nl ; continues if next line starts ; with white space rulename = ALPHA *(ALPHA / DIGIT / "-") defined-as = *c-wsp ("=" / "=/") *c-wsp ; basic rules definition and ; incremental alternatives elements = alternation *c-wsp c-wsp = WSP / (c-nl WSP) c-nl = comment / CRLF ; comment or newline comment = ";" *(WSP / VCHAR) CRLF alternation = concatenation *(*c-wsp "/" *c-wsp concatenation) concatenation = repetition *(1*c-wsp repetition) repetition = [repeat] element repeat = 1*DIGIT / (*DIGIT "*" *DIGIT) element = rulename / group / option / char-val / num-val / prose-val group = "(" *c-wsp alternation *c-wsp ")" option = "[" *c-wsp alternation *c-wsp "]" char-val = DQUOTE *(%x20-21 / %x23-7E) DQUOTE ; quoted string of SP and VCHAR ; without DQUOTE num-val = "%" (bin-val / dec-val / hex-val) bin-val = "b" 1*BIT [ 1*("." 1*BIT) / ("-" 1*BIT) ] ; series of concatenated bit values ; or single ONEOF range dec-val = "d" 1*DIGIT [ 1*("." 1*DIGIT) / ("-" 1*DIGIT) ] hex-val = "x" 1*HEXDIG [ 1*("." 1*HEXDIG) / ("-" 1*HEXDIG) ] prose-val = "<" *(%x20-3D / %x3F-7E) ">" ; bracketed string of SP and VCHAR ; without angles ; prose description, to be used as ; last resort ALPHA = %x41-5A / %x61-7A ; A-Z / a-z BIT = "0" / "1" CHAR = %x01-7F ; any 7-bit US-ASCII character, ; excluding NUL CR = %x0D ; carriage return CRLF = CR LF ; Internet standard newline CTL = %x00-1F / %x7F ; controls DIGIT = %x30-39 ; 0-9 DQUOTE = %x22 ; " (Double Quote) HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" HTAB = %x09 ; horizontal tab LF = %x0A ; linefeed LWSP = *(WSP / CRLF WSP) ; Use of this linear-white-space rule ; permits lines containing only white ; space that are no longer legal in ; mail headers and have caused ; interoperability problems in other ; contexts. ; Do not use when defining mail ; headers and use with caution in ; other contexts. OCTET = %x00-FF ; 8 bits of data SP = %x20 VCHAR = %x21-7E ; visible (printing) characters WSP = SP / HTAB ; white space
Grammar! Grammar! Grammar!
Michael Sperberg-McQueen wrote an iXML grammar for ABNF
It is an iXML grammar!
{ The grammar notation defined by RFC 5234, "Augmented BNF for Syntax Specifications: ABNF", ed. D. Crocker and P. Overell, January 2008. The nonterminals used here are those of RFC 5234, but some definitions have been reformulated to use ixml idioms. The definition of ABNF has no analogue to ixml marks for guiding XML serialization; the marks used here have been supplied by the transcriber. Transcribed into ixml by C. M. Sperberg-McQueen, February 2022. } rulelist = (rule | (c-wsp*, c-nl))+. rule = rulename, defined-as, elements, c-nl. { continues if next line starts with white space } rulename = ALPHA, (ALPHA | DIGIT | "-")*. defined-as = c-wsp*, ("=" | "=/"), c-wsp*. { basic rules definition and incremental alternatives } elements = alternation, c-wsp*. c-wsp = WSP | (c-nl, WSP). c-nl = comment | CRLF. { comment or newline } comment = ";", (WSP | VCHAR)*, CRLF. alternation = concatenation ** (c-wsp*, "/", c-wsp*). concatenation = repetition ** (c-wsp+). repetition = repeat?, element. repeat = DIGIT+ | (DIGIT*, "*", DIGIT*). element = rulename | group | option | char-val | num-val | prose-val. group = "(", c-wsp*, alternation, c-wsp*, ")". option = "[", c-wsp*, alternation, c-wsp*, "]". char-val = DQUOTE, [#20 - #21; #23 - #7E]*, DQUOTE. { quoted string of SP and VCHAR without DQUOTE } num-val = "%", (bin-val | dec-val | hex-val). bin-val = "b", BIT+, ((".", BIT+)+ | ("-", BIT+))?. { series of concatenated bit values or single ONEOF range } dec-val = "d", DIGIT+, ((".", DIGIT+)+ | ("-", DIGIT+))?. hex-val = "x", HEXDIG+, ((".", HEXDIG+)+ | ("-", HEXDIG+))?. prose-val = "<", [#20 - #3D; #3F - #7E]*, ">". { bracketed string of SP and VCHAR without angles prose description, to be used as last resort } { 'Core rules' from Appendix B, intended for re-use. } ALPHA = ["A"-"Z"; "a"-"z"]. { #41-#5A; #61-#7A } BIT = "0"; "1". CR = #0D. { carriage return } CRLF = CR, LF { Internet standard newline } | LF . { Extension: support single LF convention for newlines } DIGIT = ["0"-"9"]. { #30 - #39 } DQUOTE = #22. { (Double Quote) } HEXDIG = DIGIT; ["A"-"F"]. HTAB = #09. { horizontal tab } LF = #0A. { linefeed } SP = #20. VCHAR = [#21 - #7E]. { visible (printing) characters } WSP = SP | HTAB. { white space } { Included in Appendix B for reuse elsewhere, but not used by ABNF itself: } { CHAR = [#01 - #7F]. { Any 7-bit US-ASCII chracter, excluding NUL } CTL = [#00 - #1F; #7F]. { controls } LWSP = (WSP | CRLF, WSP)*. { Use of this linear-white-space rule permits lines containing only white space that are no longer legal in mail headers and have caused interoperability problems in other contexts. Do not use when defining mail headers and use with caution in other contexts. } OCTET = [#00 - #FF]. { 8 bits of data } } { Notes: - As noted in the comments, this grammar has been reported ambiguous in a couple of places. - ABNF nonterminals are case-insensitive unless specified using numeric values for the characters. }
An XML version of uri.abnf
Now we can parse
uri.abnf
into XMLUnfortunately, it is not an iXML grammar
And it’s a little bit verbose
<rulelist xmlns:ixml='http://invisiblexml.org/NS' ixml:state='ambiguous'> <c-nl> <comment>; <VCHAR>;</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>T</VCHAR> <VCHAR>r</VCHAR> <VCHAR>a</VCHAR> <VCHAR>n</VCHAR> <VCHAR>s</VCHAR> <VCHAR>c</VCHAR> <VCHAR>r</VCHAR> <VCHAR>i</VCHAR> <VCHAR>b</VCHAR> <VCHAR>e</VCHAR> <VCHAR>d</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>f</VCHAR> <VCHAR>r</VCHAR> <VCHAR>o</VCHAR> <VCHAR>m</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>R</VCHAR> <VCHAR>F</VCHAR> <VCHAR>C</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>3</VCHAR> <VCHAR>9</VCHAR> <VCHAR>8</VCHAR> <VCHAR>6</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>b</VCHAR> <VCHAR>y</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>n</VCHAR> <VCHAR>d</VCHAR> <VCHAR>w</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>U</ALPHA> <ALPHA>R</ALPHA> <ALPHA>I</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <ALPHA>i</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA>- <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>? <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>q</ALPHA> <ALPHA>u</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE># <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>f</ALPHA> <ALPHA>r</ALPHA> <ALPHA>a</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>h</ALPHA> <ALPHA>i</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA>- <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> <ALPHA>t</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>// <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>a</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA> <ALPHA>o</ALPHA> <ALPHA>r</ALPHA> <ALPHA>i</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>a</ALPHA> <ALPHA>b</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>p</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>a</ALPHA> <ALPHA>b</ALPHA> <ALPHA>s</ALPHA> <ALPHA>o</ALPHA> <ALPHA>l</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>r</ALPHA> <ALPHA>o</ALPHA> <ALPHA>o</ALPHA> <ALPHA>t</ALPHA> <ALPHA>l</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>p</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>U</ALPHA> <ALPHA>R</ALPHA> <ALPHA>I</ALPHA>- <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>f</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>c</ALPHA> <ALPHA>e</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>U</ALPHA> <ALPHA>R</ALPHA> <ALPHA>I</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>i</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA>- <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>f</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>a</ALPHA> <ALPHA>b</ALPHA> <ALPHA>s</ALPHA> <ALPHA>o</ALPHA> <ALPHA>l</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA>- <ALPHA>U</ALPHA> <ALPHA>R</ALPHA> <ALPHA>I</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <ALPHA>i</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA>- <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>? <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>q</ALPHA> <ALPHA>u</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>i</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA>- <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>f</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>i</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA>- <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>? <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>q</ALPHA> <ALPHA>u</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE># <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>f</ALPHA> <ALPHA>r</ALPHA> <ALPHA>a</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>i</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA>- <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> <ALPHA>t</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>// <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>a</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA> <ALPHA>o</ALPHA> <ALPHA>r</ALPHA> <ALPHA>i</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>a</ALPHA> <ALPHA>b</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>p</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>a</ALPHA> <ALPHA>b</ALPHA> <ALPHA>s</ALPHA> <ALPHA>o</ALPHA> <ALPHA>l</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>o</ALPHA> <ALPHA>s</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>p</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>s</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>A</ALPHA> <ALPHA>L</ALPHA> <ALPHA>P</ALPHA> <ALPHA>H</ALPHA> <ALPHA>A</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>A</ALPHA> <ALPHA>L</ALPHA> <ALPHA>P</ALPHA> <ALPHA>H</ALPHA> <ALPHA>A</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> <ALPHA>I</ALPHA> <ALPHA>T</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>+ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>- <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>. <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>a</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA> <ALPHA>o</ALPHA> <ALPHA>r</ALPHA> <ALPHA>i</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>u</ALPHA> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>i</ALPHA> <ALPHA>n</ALPHA> <ALPHA>f</ALPHA> <ALPHA>o</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>@ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <ALPHA>o</ALPHA> <ALPHA>s</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>o</ALPHA> <ALPHA>r</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>u</ALPHA> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>i</ALPHA> <ALPHA>n</ALPHA> <ALPHA>f</ALPHA> <ALPHA>o</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>u</ALPHA> <ALPHA>n</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>c</ALPHA> <ALPHA>o</ALPHA> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>u</ALPHA> <ALPHA>b</ALPHA>- <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>m</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>h</ALPHA> <ALPHA>o</ALPHA> <ALPHA>s</ALPHA> <ALPHA>t</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>I</ALPHA> <ALPHA>P</ALPHA>- <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>a</ALPHA> <ALPHA>l</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>I</ALPHA> <ALPHA>P</ALPHA> <ALPHA>v</ALPHA> <DIGIT>4</DIGIT> <ALPHA>a</ALPHA> <ALPHA>d</ALPHA> <ALPHA>d</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>a</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>p</ALPHA> <ALPHA>o</ALPHA> <ALPHA>r</ALPHA> <ALPHA>t</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat>*</repeat> <element> <rulename> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> <ALPHA>I</ALPHA> <ALPHA>T</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>I</ALPHA> <ALPHA>P</ALPHA>- <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>a</ALPHA> <ALPHA>l</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>[ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>I</ALPHA> <ALPHA>P</ALPHA> <ALPHA>v</ALPHA> <DIGIT>6</DIGIT> <ALPHA>a</ALPHA> <ALPHA>d</ALPHA> <ALPHA>d</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>I</ALPHA> <ALPHA>P</ALPHA> <ALPHA>v</ALPHA> <ALPHA>F</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>u</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>] <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>I</ALPHA> <ALPHA>P</ALPHA> <ALPHA>v</ALPHA> <ALPHA>F</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>u</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>v <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat> <DIGIT>1</DIGIT>*</repeat> <element> <rulename> <ALPHA>H</ALPHA> <ALPHA>E</ALPHA> <ALPHA>X</ALPHA> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>. <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat> <DIGIT>1</DIGIT>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>u</ALPHA> <ALPHA>n</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>u</ALPHA> <ALPHA>b</ALPHA>- <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>m</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>I</ALPHA> <ALPHA>P</ALPHA> <ALPHA>v</ALPHA> <DIGIT>6</DIGIT> <ALPHA>a</ALPHA> <ALPHA>d</ALPHA> <ALPHA>d</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>s</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat> <DIGIT>6</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>l</ALPHA> <ALPHA>s</ALPHA> <DIGIT>3</DIGIT> <DIGIT>2</DIGIT> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>:: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat> <DIGIT>5</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>l</ALPHA> <ALPHA>s</ALPHA> <DIGIT>3</DIGIT> <DIGIT>2</DIGIT> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>:: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat> <DIGIT>4</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>l</ALPHA> <ALPHA>s</ALPHA> <DIGIT>3</DIGIT> <DIGIT>2</DIGIT> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <repeat>* <DIGIT>1</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>:: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat> <DIGIT>3</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>l</ALPHA> <ALPHA>s</ALPHA> <DIGIT>3</DIGIT> <DIGIT>2</DIGIT> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <repeat>* <DIGIT>2</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>:: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat> <DIGIT>2</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>l</ALPHA> <ALPHA>s</ALPHA> <DIGIT>3</DIGIT> <DIGIT>2</DIGIT> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <repeat>* <DIGIT>3</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>:: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>l</ALPHA> <ALPHA>s</ALPHA> <DIGIT>3</DIGIT> <DIGIT>2</DIGIT> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <repeat>* <DIGIT>4</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>:: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>l</ALPHA> <ALPHA>s</ALPHA> <DIGIT>3</DIGIT> <DIGIT>2</DIGIT> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <repeat>* <DIGIT>5</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>:: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <repeat>* <DIGIT>6</DIGIT> </repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>:: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat> <DIGIT>1</DIGIT>* <DIGIT>4</DIGIT> </repeat> <element> <rulename> <ALPHA>H</ALPHA> <ALPHA>E</ALPHA> <ALPHA>X</ALPHA> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>l</ALPHA> <ALPHA>s</ALPHA> <DIGIT>3</DIGIT> <DIGIT>2</DIGIT> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>h</ALPHA> <DIGIT>1</DIGIT> <DIGIT>6</DIGIT> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>I</ALPHA> <ALPHA>P</ALPHA> <ALPHA>v</ALPHA> <DIGIT>4</DIGIT> <ALPHA>a</ALPHA> <ALPHA>d</ALPHA> <ALPHA>d</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>I</ALPHA> <ALPHA>P</ALPHA> <ALPHA>v</ALPHA> <DIGIT>4</DIGIT> <ALPHA>a</ALPHA> <ALPHA>d</ALPHA> <ALPHA>d</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>s</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>c</ALPHA>- <ALPHA>o</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>. <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>c</ALPHA>- <ALPHA>o</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>. <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>c</ALPHA>- <ALPHA>o</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>. <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>c</ALPHA>- <ALPHA>o</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>c</ALPHA>- <ALPHA>o</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> <ALPHA>t</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> <ALPHA>I</ALPHA> <ALPHA>T</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>0</VCHAR> <VCHAR>-</VCHAR> <VCHAR>9</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <num-val>% <hex-val>x <HEXDIG> <DIGIT>3</DIGIT> </HEXDIG> <HEXDIG> <DIGIT>1</DIGIT> </HEXDIG>- <HEXDIG> <DIGIT>3</DIGIT> </HEXDIG> <HEXDIG> <DIGIT>9</DIGIT> </HEXDIG> </hex-val> </num-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> <ALPHA>I</ALPHA> <ALPHA>T</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>1</VCHAR> <VCHAR>0</VCHAR> <VCHAR>-</VCHAR> <VCHAR>9</VCHAR> <VCHAR>9</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>1 <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat> <DIGIT>2</DIGIT> </repeat> <element> <rulename> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> <ALPHA>I</ALPHA> <ALPHA>T</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>1</VCHAR> <VCHAR>0</VCHAR> <VCHAR>0</VCHAR> <VCHAR>-</VCHAR> <VCHAR>1</VCHAR> <VCHAR>9</VCHAR> <VCHAR>9</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>2 <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <num-val>% <hex-val>x <HEXDIG> <DIGIT>3</DIGIT> </HEXDIG> <HEXDIG> <DIGIT>0</DIGIT> </HEXDIG>- <HEXDIG> <DIGIT>3</DIGIT> </HEXDIG> <HEXDIG> <DIGIT>4</DIGIT> </HEXDIG> </hex-val> </num-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> <ALPHA>I</ALPHA> <ALPHA>T</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>2</VCHAR> <VCHAR>0</VCHAR> <VCHAR>0</VCHAR> <VCHAR>-</VCHAR> <VCHAR>2</VCHAR> <VCHAR>4</VCHAR> <VCHAR>9</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>25 <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <num-val>% <hex-val>x <HEXDIG> <DIGIT>3</DIGIT> </HEXDIG> <HEXDIG> <DIGIT>0</DIGIT> </HEXDIG>- <HEXDIG> <DIGIT>3</DIGIT> </HEXDIG> <HEXDIG> <DIGIT>5</DIGIT> </HEXDIG> </hex-val> </num-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </elements> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>2</VCHAR> <VCHAR>5</VCHAR> <VCHAR>0</VCHAR> <VCHAR>-</VCHAR> <VCHAR>2</VCHAR> <VCHAR>5</VCHAR> <VCHAR>5</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>a</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>u</ALPHA> <ALPHA>n</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>c</ALPHA> <ALPHA>o</ALPHA> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>u</ALPHA> <ALPHA>b</ALPHA>- <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>m</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>a</ALPHA> <ALPHA>b</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>p</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>b</VCHAR> <VCHAR>e</VCHAR> <VCHAR>g</VCHAR> <VCHAR>i</VCHAR> <VCHAR>n</VCHAR> <VCHAR>s</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>w</VCHAR> <VCHAR>i</VCHAR> <VCHAR>t</VCHAR> <VCHAR>h</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>"</VCHAR> <VCHAR>/</VCHAR> <VCHAR>"</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>o</VCHAR> <VCHAR>r</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>i</VCHAR> <VCHAR>s</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>e</VCHAR> <VCHAR>m</VCHAR> <VCHAR>p</VCHAR> <VCHAR>t</VCHAR> <VCHAR>y</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>a</ALPHA> <ALPHA>b</ALPHA> <ALPHA>s</ALPHA> <ALPHA>o</ALPHA> <ALPHA>l</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>b</VCHAR> <VCHAR>e</VCHAR> <VCHAR>g</VCHAR> <VCHAR>i</VCHAR> <VCHAR>n</VCHAR> <VCHAR>s</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>w</VCHAR> <VCHAR>i</VCHAR> <VCHAR>t</VCHAR> <VCHAR>h</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>"</VCHAR> <VCHAR>/</VCHAR> <VCHAR>"</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>b</VCHAR> <VCHAR>u</VCHAR> <VCHAR>t</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>n</VCHAR> <VCHAR>o</VCHAR> <VCHAR>t</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>"</VCHAR> <VCHAR>/</VCHAR> <VCHAR>/</VCHAR> <VCHAR>"</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>o</ALPHA> <ALPHA>s</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>b</VCHAR> <VCHAR>e</VCHAR> <VCHAR>g</VCHAR> <VCHAR>i</VCHAR> <VCHAR>n</VCHAR> <VCHAR>s</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>w</VCHAR> <VCHAR>i</VCHAR> <VCHAR>t</VCHAR> <VCHAR>h</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>a</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>n</VCHAR> <VCHAR>o</VCHAR> <VCHAR>n</VCHAR> <VCHAR>-</VCHAR> <VCHAR>c</VCHAR> <VCHAR>o</VCHAR> <VCHAR>l</VCHAR> <VCHAR>o</VCHAR> <VCHAR>n</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>s</VCHAR> <VCHAR>e</VCHAR> <VCHAR>g</VCHAR> <VCHAR>m</VCHAR> <VCHAR>e</VCHAR> <VCHAR>n</VCHAR> <VCHAR>t</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>r</ALPHA> <ALPHA>o</ALPHA> <ALPHA>o</ALPHA> <ALPHA>t</ALPHA> <ALPHA>l</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>b</VCHAR> <VCHAR>e</VCHAR> <VCHAR>g</VCHAR> <VCHAR>i</VCHAR> <VCHAR>n</VCHAR> <VCHAR>s</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>w</VCHAR> <VCHAR>i</VCHAR> <VCHAR>t</VCHAR> <VCHAR>h</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>a</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>s</VCHAR> <VCHAR>e</VCHAR> <VCHAR>g</VCHAR> <VCHAR>m</VCHAR> <VCHAR>e</VCHAR> <VCHAR>n</VCHAR> <VCHAR>t</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>p</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </elements> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>z</VCHAR> <VCHAR>e</VCHAR> <VCHAR>r</VCHAR> <VCHAR>o</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>c</VCHAR> <VCHAR>h</VCHAR> <VCHAR>a</VCHAR> <VCHAR>r</VCHAR> <VCHAR>a</VCHAR> <VCHAR>c</VCHAR> <VCHAR>t</VCHAR> <VCHAR>e</VCHAR> <VCHAR>r</VCHAR> <VCHAR>s</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>a</ALPHA> <ALPHA>b</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>p</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>/ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>a</ALPHA> <ALPHA>b</ALPHA> <ALPHA>s</ALPHA> <ALPHA>o</ALPHA> <ALPHA>l</ALPHA> <ALPHA>u</ALPHA> <ALPHA>t</ALPHA> <ALPHA>e</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>/ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <option>[ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>z</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>/ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>]</option> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>o</ALPHA> <ALPHA>s</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>z</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>c</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>/ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>r</ALPHA> <ALPHA>o</ALPHA> <ALPHA>o</ALPHA> <ALPHA>t</ALPHA> <ALPHA>l</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>s</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>z</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <repeat>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>/ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>p</ALPHA> <ALPHA>a</ALPHA> <ALPHA>t</ALPHA> <ALPHA>h</ALPHA>- <ALPHA>e</ALPHA> <ALPHA>m</ALPHA> <ALPHA>p</ALPHA> <ALPHA>t</ALPHA> <ALPHA>y</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat> <DIGIT>0</DIGIT> </repeat> <element> <prose-val><pchar></prose-val> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat>*</repeat> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>z</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat> <DIGIT>1</DIGIT>*</repeat> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>z</ALPHA>- <ALPHA>n</ALPHA> <ALPHA>c</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat> <DIGIT>1</DIGIT>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>u</ALPHA> <ALPHA>n</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>c</ALPHA> <ALPHA>o</ALPHA> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>u</ALPHA> <ALPHA>b</ALPHA>- <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>m</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>@ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </elements> <c-nl> <comment>; <WSP> <SP> </SP> </WSP> <VCHAR>n</VCHAR> <VCHAR>o</VCHAR> <VCHAR>n</VCHAR> <VCHAR>-</VCHAR> <VCHAR>z</VCHAR> <VCHAR>e</VCHAR> <VCHAR>r</VCHAR> <VCHAR>o</VCHAR> <VCHAR>-</VCHAR> <VCHAR>l</VCHAR> <VCHAR>e</VCHAR> <VCHAR>n</VCHAR> <VCHAR>g</VCHAR> <VCHAR>t</VCHAR> <VCHAR>h</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>s</VCHAR> <VCHAR>e</VCHAR> <VCHAR>g</VCHAR> <VCHAR>m</VCHAR> <VCHAR>e</VCHAR> <VCHAR>n</VCHAR> <VCHAR>t</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>w</VCHAR> <VCHAR>i</VCHAR> <VCHAR>t</VCHAR> <VCHAR>h</VCHAR> <VCHAR>o</VCHAR> <VCHAR>u</VCHAR> <VCHAR>t</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>a</VCHAR> <VCHAR>n</VCHAR> <VCHAR>y</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>c</VCHAR> <VCHAR>o</VCHAR> <VCHAR>l</VCHAR> <VCHAR>o</VCHAR> <VCHAR>n</VCHAR> <WSP> <SP> </SP> </WSP> <VCHAR>"</VCHAR> <VCHAR>:</VCHAR> <VCHAR>"</VCHAR> <CRLF> <LF> </LF> </CRLF> </comment> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>u</ALPHA> <ALPHA>n</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>c</ALPHA> <ALPHA>o</ALPHA> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>u</ALPHA> <ALPHA>b</ALPHA>- <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>m</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>@ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>q</ALPHA> <ALPHA>u</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>y</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>/ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>? <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>f</ALPHA> <ALPHA>r</ALPHA> <ALPHA>a</ALPHA> <ALPHA>g</ALPHA> <ALPHA>m</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>t</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <repeat>*</repeat> <element> <group>( <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>h</ALPHA> <ALPHA>a</ALPHA> <ALPHA>r</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>/ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>? <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>)</group> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>p</ALPHA> <ALPHA>c</ALPHA> <ALPHA>t</ALPHA>- <ALPHA>e</ALPHA> <ALPHA>n</ALPHA> <ALPHA>c</ALPHA> <ALPHA>o</ALPHA> <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>% <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>H</ALPHA> <ALPHA>E</ALPHA> <ALPHA>X</ALPHA> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> </rulename> </element> </repetition> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <repetition> <element> <rulename> <ALPHA>H</ALPHA> <ALPHA>E</ALPHA> <ALPHA>X</ALPHA> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <rule> <rulename> <ALPHA>u</ALPHA> <ALPHA>n</ALPHA> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>A</ALPHA> <ALPHA>L</ALPHA> <ALPHA>P</ALPHA> <ALPHA>H</ALPHA> <ALPHA>A</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>D</ALPHA> <ALPHA>I</ALPHA> <ALPHA>G</ALPHA> <ALPHA>I</ALPHA> <ALPHA>T</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>- <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>. <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>_ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>~ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>r</ALPHA> <ALPHA>e</ALPHA> <ALPHA>s</ALPHA> <ALPHA>e</ALPHA> <ALPHA>r</ALPHA> <ALPHA>v</ALPHA> <ALPHA>e</ALPHA> <ALPHA>d</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <rulename> <ALPHA>g</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA>- <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>m</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <rulename> <ALPHA>s</ALPHA> <ALPHA>u</ALPHA> <ALPHA>b</ALPHA>- <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>m</ALPHA> <ALPHA>s</ALPHA> </rulename> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>g</ALPHA> <ALPHA>e</ALPHA> <ALPHA>n</ALPHA>- <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>m</ALPHA> <ALPHA>s</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>: <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>/ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>? <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE># <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>[ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>] <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>@ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> <rule> <rulename> <ALPHA>s</ALPHA> <ALPHA>u</ALPHA> <ALPHA>b</ALPHA>- <ALPHA>d</ALPHA> <ALPHA>e</ALPHA> <ALPHA>l</ALPHA> <ALPHA>i</ALPHA> <ALPHA>m</ALPHA> <ALPHA>s</ALPHA> </rulename> <defined-as> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>= <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> </defined-as> <elements> <alternation> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>! <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>$ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>& <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>' <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>( <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>) <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>* <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>+ <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>, <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>; <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp>/ <c-wsp> <WSP> <SP> </SP> </WSP> </c-wsp> <concatenation> <repetition> <element> <char-val> <DQUOTE>"</DQUOTE>= <DQUOTE>"</DQUOTE> </char-val> </element> </repetition> </concatenation> </alternation> </elements> <c-nl> <CRLF> <LF> </LF> </CRLF> </c-nl> </rule> </rulelist>
Another XML version of uri.abnf
By adding a few marks to
abnf.ixml
, we can make the result less verboseBut it’s still not an iXML grammar
<rulelist> <rule> <rulename>URI</rulename> <alternation> <concatenation> <repetition> <rulename>scheme</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> <repetition> <rulename>hier-part</rulename> </repetition> <repetition> <option> <alternation> <concatenation> <repetition> <char-val>?</char-val> </repetition> <repetition> <rulename>query</rulename> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <option> <alternation> <concatenation> <repetition> <char-val>#</char-val> </repetition> <repetition> <rulename>fragment</rulename> </repetition> </concatenation> </alternation> </option> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>hier-part</rulename> <alternation> <concatenation> <repetition> <char-val>//</char-val> </repetition> <repetition> <rulename>authority</rulename> </repetition> <repetition> <rulename>path-abempty</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-absolute</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-rootless</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-empty</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>URI-reference</rulename> <alternation> <concatenation> <repetition> <rulename>URI</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>relative-ref</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>absolute-URI</rulename> <alternation> <concatenation> <repetition> <rulename>scheme</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> <repetition> <rulename>hier-part</rulename> </repetition> <repetition> <option> <alternation> <concatenation> <repetition> <char-val>?</char-val> </repetition> <repetition> <rulename>query</rulename> </repetition> </concatenation> </alternation> </option> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>relative-ref</rulename> <alternation> <concatenation> <repetition> <rulename>relative-part</rulename> </repetition> <repetition> <option> <alternation> <concatenation> <repetition> <char-val>?</char-val> </repetition> <repetition> <rulename>query</rulename> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <option> <alternation> <concatenation> <repetition> <char-val>#</char-val> </repetition> <repetition> <rulename>fragment</rulename> </repetition> </concatenation> </alternation> </option> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>relative-part</rulename> <alternation> <concatenation> <repetition> <char-val>//</char-val> </repetition> <repetition> <rulename>authority</rulename> </repetition> <repetition> <rulename>path-abempty</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-absolute</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-noscheme</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-empty</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>scheme</rulename> <alternation> <concatenation> <repetition> <rulename>ALPHA</rulename> </repetition> <repetition> <repeat>*</repeat> <group> <alternation> <concatenation> <repetition> <rulename>ALPHA</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>DIGIT</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>+</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>-</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>.</char-val> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>authority</rulename> <alternation> <concatenation> <repetition> <option> <alternation> <concatenation> <repetition> <rulename>userinfo</rulename> </repetition> <repetition> <char-val>@</char-val> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <rulename>host</rulename> </repetition> <repetition> <option> <alternation> <concatenation> <repetition> <char-val>:</char-val> </repetition> <repetition> <rulename>port</rulename> </repetition> </concatenation> </alternation> </option> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>userinfo</rulename> <alternation> <concatenation> <repetition> <repeat>*</repeat> <group> <alternation> <concatenation> <repetition> <rulename>unreserved</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>pct-encoded</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>sub-delims</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>host</rulename> <alternation> <concatenation> <repetition> <rulename>IP-literal</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>IPv4address</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>reg-name</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>port</rulename> <alternation> <concatenation> <repetition> <repeat>*</repeat> <rulename>DIGIT</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>IP-literal</rulename> <alternation> <concatenation> <repetition> <char-val>[</char-val> </repetition> <repetition> <group> <alternation> <concatenation> <repetition> <rulename>IPv6address</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>IPvFuture</rulename> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <char-val>]</char-val> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>IPvFuture</rulename> <alternation> <concatenation> <repetition> <char-val>v</char-val> </repetition> <repetition> <repeat>1*</repeat> <rulename>HEXDIG</rulename> </repetition> <repetition> <char-val>.</char-val> </repetition> <repetition> <repeat>1*</repeat> <group> <alternation> <concatenation> <repetition> <rulename>unreserved</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>sub-delims</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>IPv6address</rulename> <alternation> <concatenation> <repetition> <repeat>6</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>ls32</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>::</char-val> </repetition> <repetition> <repeat>5</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>ls32</rulename> </repetition> </concatenation> <concatenation> <repetition> <option> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <char-val>::</char-val> </repetition> <repetition> <repeat>4</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>ls32</rulename> </repetition> </concatenation> <concatenation> <repetition> <option> <alternation> <concatenation> <repetition> <repeat>*1</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>h16</rulename> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <char-val>::</char-val> </repetition> <repetition> <repeat>3</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>ls32</rulename> </repetition> </concatenation> <concatenation> <repetition> <option> <alternation> <concatenation> <repetition> <repeat>*2</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>h16</rulename> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <char-val>::</char-val> </repetition> <repetition> <repeat>2</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>ls32</rulename> </repetition> </concatenation> <concatenation> <repetition> <option> <alternation> <concatenation> <repetition> <repeat>*3</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>h16</rulename> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <char-val>::</char-val> </repetition> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> <repetition> <rulename>ls32</rulename> </repetition> </concatenation> <concatenation> <repetition> <option> <alternation> <concatenation> <repetition> <repeat>*4</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>h16</rulename> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <char-val>::</char-val> </repetition> <repetition> <rulename>ls32</rulename> </repetition> </concatenation> <concatenation> <repetition> <option> <alternation> <concatenation> <repetition> <repeat>*5</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>h16</rulename> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <char-val>::</char-val> </repetition> <repetition> <rulename>h16</rulename> </repetition> </concatenation> <concatenation> <repetition> <option> <alternation> <concatenation> <repetition> <repeat>*6</repeat> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> </concatenation> </alternation> </group> </repetition> <repetition> <rulename>h16</rulename> </repetition> </concatenation> </alternation> </option> </repetition> <repetition> <char-val>::</char-val> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>h16</rulename> <alternation> <concatenation> <repetition> <repeat>1*4</repeat> <rulename>HEXDIG</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>ls32</rulename> <alternation> <concatenation> <repetition> <group> <alternation> <concatenation> <repetition> <rulename>h16</rulename> </repetition> <repetition> <char-val>:</char-val> </repetition> <repetition> <rulename>h16</rulename> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> <concatenation> <repetition> <rulename>IPv4address</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>IPv4address</rulename> <alternation> <concatenation> <repetition> <rulename>dec-octet</rulename> </repetition> <repetition> <char-val>.</char-val> </repetition> <repetition> <rulename>dec-octet</rulename> </repetition> <repetition> <char-val>.</char-val> </repetition> <repetition> <rulename>dec-octet</rulename> </repetition> <repetition> <char-val>.</char-val> </repetition> <repetition> <rulename>dec-octet</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>dec-octet</rulename> <alternation> <concatenation> <repetition> <rulename>DIGIT</rulename> </repetition> </concatenation> <concatenation> <repetition> <hex-val>31-39</hex-val> </repetition> <repetition> <rulename>DIGIT</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>1</char-val> </repetition> <repetition> <repeat>2</repeat> <rulename>DIGIT</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>2</char-val> </repetition> <repetition> <hex-val>30-34</hex-val> </repetition> <repetition> <rulename>DIGIT</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>25</char-val> </repetition> <repetition> <hex-val>30-35</hex-val> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>reg-name</rulename> <alternation> <concatenation> <repetition> <repeat>*</repeat> <group> <alternation> <concatenation> <repetition> <rulename>unreserved</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>pct-encoded</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>sub-delims</rulename> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>path</rulename> <alternation> <concatenation> <repetition> <rulename>path-abempty</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-absolute</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-noscheme</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-rootless</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>path-empty</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>path-abempty</rulename> <alternation> <concatenation> <repetition> <repeat>*</repeat> <group> <alternation> <concatenation> <repetition> <char-val>/</char-val> </repetition> <repetition> <rulename>segment</rulename> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>path-absolute</rulename> <alternation> <concatenation> <repetition> <char-val>/</char-val> </repetition> <repetition> <option> <alternation> <concatenation> <repetition> <rulename>segment-nz</rulename> </repetition> <repetition> <repeat>*</repeat> <group> <alternation> <concatenation> <repetition> <char-val>/</char-val> </repetition> <repetition> <rulename>segment</rulename> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </option> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>path-noscheme</rulename> <alternation> <concatenation> <repetition> <rulename>segment-nz-nc</rulename> </repetition> <repetition> <repeat>*</repeat> <group> <alternation> <concatenation> <repetition> <char-val>/</char-val> </repetition> <repetition> <rulename>segment</rulename> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>path-rootless</rulename> <alternation> <concatenation> <repetition> <rulename>segment-nz</rulename> </repetition> <repetition> <repeat>*</repeat> <group> <alternation> <concatenation> <repetition> <char-val>/</char-val> </repetition> <repetition> <rulename>segment</rulename> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>path-empty</rulename> <alternation> <concatenation> <repetition> <repeat>0</repeat> <prose-val><pchar></prose-val> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>segment</rulename> <alternation> <concatenation> <repetition> <repeat>*</repeat> <rulename>pchar</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>segment-nz</rulename> <alternation> <concatenation> <repetition> <repeat>1*</repeat> <rulename>pchar</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>segment-nz-nc</rulename> <alternation> <concatenation> <repetition> <repeat>1*</repeat> <group> <alternation> <concatenation> <repetition> <rulename>unreserved</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>pct-encoded</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>sub-delims</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>@</char-val> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>pchar</rulename> <alternation> <concatenation> <repetition> <rulename>unreserved</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>pct-encoded</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>sub-delims</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>:</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>@</char-val> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>query</rulename> <alternation> <concatenation> <repetition> <repeat>*</repeat> <group> <alternation> <concatenation> <repetition> <rulename>pchar</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>/</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>?</char-val> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>fragment</rulename> <alternation> <concatenation> <repetition> <repeat>*</repeat> <group> <alternation> <concatenation> <repetition> <rulename>pchar</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>/</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>?</char-val> </repetition> </concatenation> </alternation> </group> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>pct-encoded</rulename> <alternation> <concatenation> <repetition> <char-val>%</char-val> </repetition> <repetition> <rulename>HEXDIG</rulename> </repetition> <repetition> <rulename>HEXDIG</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>unreserved</rulename> <alternation> <concatenation> <repetition> <rulename>ALPHA</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>DIGIT</rulename> </repetition> </concatenation> <concatenation> <repetition> <char-val>-</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>.</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>_</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>~</char-val> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>reserved</rulename> <alternation> <concatenation> <repetition> <rulename>gen-delims</rulename> </repetition> </concatenation> <concatenation> <repetition> <rulename>sub-delims</rulename> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>gen-delims</rulename> <alternation> <concatenation> <repetition> <char-val>:</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>/</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>?</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>#</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>[</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>]</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>@</char-val> </repetition> </concatenation> </alternation> </rule> <rule> <rulename>sub-delims</rulename> <alternation> <concatenation> <repetition> <char-val>!</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>$</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>&</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>'</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>(</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>)</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>*</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>+</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>,</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>;</char-val> </repetition> </concatenation> <concatenation> <repetition> <char-val>=</char-val> </repetition> </concatenation> </alternation> </rule> </rulelist>
XSLT enters the chat
We have the technology to fix that!
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:array="http://www.w3.org/2005/xpath-functions/array" xmlns:cs="http://nineml.com/ns/coffeesacks" xmlns:f="https://nineml.org/ns/functions" xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="#all" expand-text="yes" version="3.0"> <xsl:output method="xml" encoding="utf-8" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:preserve-space elements="char-val"/> <xsl:key name="definitions" match="rule" use="rulename"/> <xsl:key name="uses" match="rulename[not(parent::rule)]" use="."/> <xsl:param name="marks" select="()"/> <xsl:variable name="parser" select="cs:load-grammar('marks.ixml')"/> <xsl:variable name="marklist" as="element(marks)?" select="$marks ! $parser(unparsed-text(.))/*"/> <xsl:variable name="marked" as="map(xs:string, xs:string)"> <xsl:variable name="root" select="/"/> <xsl:map> <xsl:iterate select="$marklist/*"> <xsl:param name="selected" select="()"/> <xsl:variable name="mark" select="@mark/string()"/> <xsl:variable name="elements" as="element()*"> <xsl:choose> <xsl:when test="self::rule"> <xsl:evaluate context-item="$root" as="element()*" xpath="'/rulelist/rule[rulename='''||normalize-space(.)||''']'"/> </xsl:when> <xsl:when test="self::token"> <!--<xsl:message select="string(.)"/>--> <xsl:evaluate context-item="$root" as="element()*" xpath="string(.)"/> </xsl:when> <xsl:when test="self::renametoken"> <!-- nop --> </xsl:when> <xsl:when test="self::rename"> <!-- nop --> </xsl:when> <xsl:otherwise> <xsl:message select="'Unrecognized mark:', ."/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:for-each select="$elements"> <xsl:if test="not(generate-id(.) = $selected)"> <xsl:map-entry key="generate-id(.)" select="$mark"/> </xsl:if> </xsl:for-each> <xsl:next-iteration> <xsl:with-param name="selected" select="($selected, $elements ! generate-id(.))"/> </xsl:next-iteration> </xsl:iterate> </xsl:map> </xsl:variable> <xsl:variable name="renamed" as="map(xs:string, xs:string)"> <xsl:variable name="root" select="/"/> <xsl:map> <xsl:iterate select="$marklist/*"> <xsl:param name="selected" select="()"/> <xsl:variable name="rename" select="@name/string()"/> <xsl:variable name="elements" as="element()*"> <xsl:choose> <xsl:when test="self::rule"> <!-- nop --> </xsl:when> <xsl:when test="self::token"> <!-- nop --> </xsl:when> <xsl:when test="self::renametoken"> <!--<xsl:message select="string(.)"/>--> <xsl:evaluate context-item="$root" as="element()*" xpath="string(.)"/> </xsl:when> <xsl:when test="self::rename"> <!-- nop --> </xsl:when> <xsl:otherwise> <xsl:message select="'Unrecognized mark:', ."/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:for-each select="$elements"> <xsl:if test="not(generate-id(.) = $selected)"> <xsl:map-entry key="generate-id(.)" select="$rename"/> </xsl:if> </xsl:for-each> <xsl:next-iteration> <xsl:with-param name="selected" select="($selected, $elements ! generate-id(.))"/> </xsl:next-iteration> </xsl:iterate> </xsl:map> </xsl:variable> <xsl:variable name="core-rules" as="element()"> <core-rules> <rule mark='-' name='ALPHA'> <alt> <inclusion> <member from='A' to='Z'/> <member from='a' to='z'/> </inclusion> </alt> </rule> <rule mark='-' name='BIT'> <alt> <literal string='0'/> </alt> <alt> <literal string='1'/> </alt> </rule> <rule mark='-' name='CR'> <alt> <literal tmark='-' hex='0D'/> </alt> </rule> <rule mark='-' name='CRLF'> <alt> <nonterminal name='CR'/> <nonterminal name='LF'/> </alt> <alt> <nonterminal name='LF'/> </alt> </rule> <rule mark='-' name='DIGIT'> <alt> <inclusion> <member from='0' to='9'/> </inclusion> </alt> </rule> <rule mark='-' name='DQUOTE'> <alt> <literal tmark='-' hex='22'/> </alt> </rule> <rule mark='-' name='HEXDIG'> <alt> <nonterminal name='DIGIT'/> </alt> <alt> <inclusion> <member from='A' to='F'/> </inclusion> </alt> <alt> <inclusion> <member from='a' to='f'/> </inclusion> </alt> </rule> <rule mark='-' name='HTAB'> <alt> <literal hex='09'/> </alt> </rule> <comment> horizontal tab </comment> <rule mark='-' name='LF'> <alt> <literal tmark='-' hex='0A'/> </alt> </rule> <rule mark='-' name='SP'> <alt> <literal hex='20'/> </alt> </rule> <rule mark='-' name='VCHAR'> <alt> <inclusion> <member from='#21' to='#7E'/> </inclusion> </alt> </rule> <rule mark='-' name='WSP'> <alt> <nonterminal name='SP'/> </alt> <alt> <nonterminal name='HTAB'/> </alt> </rule> <rule mark='-' name='CHAR'> <alt> <inclusion> <member from='#01' to='#7F'/> </inclusion> </alt> </rule> <rule mark='-' name='CTL'> <alt> <inclusion> <member from='#00' to='#1F'/> <literal hex='7F'/> </inclusion> </alt> </rule> <rule mark='-' name='LWSP'> <alt> <nonterminal name='CR'/> <nonterminal name='LF'/> </alt> <alt> <nonterminal name='LF'/> </alt> </rule> <rule name='LWSP'> <alt> <repeat0> <alts> <alt> <nonterminal name='WSP'/> </alt> <alt> <nonterminal name='CRLF'/> <nonterminal name='WSP'/> </alt> </alts> </repeat0> </alt> </rule> <rule mark='-' name='OCTET'> <alt> <inclusion> <member from='#00' to='#FF'/> </inclusion> </alt> </rule> </core-rules> </xsl:variable> <xsl:template match="rulelist"> <xsl:variable name="rules" select="."/> <ixml> <prolog> <version string='1.1-nineml'/> </prolog> <xsl:apply-templates/> <xsl:for-each select="$core-rules/rule"> <xsl:variable name="name" select="@name/string()"/> <xsl:if test="empty(key('definitions', $name, $rules)) and exists(key('uses', $name, $rules))"> <xsl:sequence select="."/> </xsl:if> </xsl:for-each> </ixml> </xsl:template> <xsl:template match="rule"> <xsl:variable name="name" select="rulename/string()"/> <rule name='{$name}'> <xsl:sequence select="f:mark(.)"/> <xsl:if test="$marklist/rename[@name = $name]"> <xsl:attribute name="rename" select="normalize-space($marklist/rename[@name = $name])"/> </xsl:if> <xsl:apply-templates/> </rule> </xsl:template> <xsl:template match="alternation"> <alts> <xsl:apply-templates/> </alts> </xsl:template> <xsl:template match="group/alternation" priority="10"> <xsl:apply-templates/> </xsl:template> <xsl:template match="rule/alternation" priority="10"> <xsl:apply-templates/> </xsl:template> <xsl:template match="alternation/*" priority="10"> <alt> <xsl:next-match/> </alt> </xsl:template> <xsl:template match="group"> <alts> <xsl:apply-templates/> </alts> </xsl:template> <xsl:template match="repetition"> <xsl:message terminate="yes" select="'Unhandled repetition type:', ."/> </xsl:template> <xsl:template match="repetition[not(repeat)]"> <xsl:apply-templates/> </xsl:template> <xsl:template match="repetition[repeat='+']"> <repeat1> <xsl:apply-templates select="* except repeat"/> </repeat1> </xsl:template> <xsl:template match="repetition[repeat castable as xs:integer]"> <xsl:variable name="item" select="* except repeat"/> <xsl:for-each select="1 to xs:integer(repeat)"> <xsl:apply-templates select="$item"/> </xsl:for-each> </xsl:template> <xsl:template match="repetition[repeat='0']" priority="10"> <alts> <alt/> </alts> </xsl:template> <xsl:template match="repetition[matches(repeat, '\d*\*\d*')]"> <xsl:variable name="item" select="* except repeat"/> <xsl:variable name="min" select="if (substring-before(repeat, '*') = '') then 0 else xs:integer(substring-before(repeat, '*'))"/> <xsl:variable name="max" select="if (substring-after(repeat, '*') = '') then () else xs:integer(substring-after(repeat, '*'))"/> <xsl:if test="$min gt 0"> <xsl:for-each select="1 to $min"> <xsl:apply-templates select="$item"/> </xsl:for-each> </xsl:if> <xsl:choose> <xsl:when test="exists($max)"> <xsl:for-each select="$min to $max"> <xsl:apply-templates select="$item"/> </xsl:for-each> </xsl:when> <xsl:otherwise> <repeat0> <xsl:apply-templates select="$item"/> </repeat0> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="option"> <option> <xsl:apply-templates/> </option> </xsl:template> <xsl:template match="char-val"> <literal string='{.}'> <xsl:sequence select="f:tmark(.)"/> </literal> </xsl:template> <xsl:template match="hex-val"> <xsl:variable name="attr" select="f:tmark(.)"/> <xsl:for-each select="tokenize(., '\.')"> <literal hex='{.}'> <xsl:sequence select="$attr"/> </literal> </xsl:for-each> </xsl:template> <xsl:template match="hex-val[contains(., '-')]"> <xsl:variable name="attr" select="f:tmark(.)"/> <xsl:variable name="first" select="substring-before(., '-')"/> <xsl:variable name="last" select="substring-after(., '-')"/> <alts> <alt> <inclusion> <member from='#{$first}' to='#{$last}'> <xsl:sequence select="$attr"/> </member> </inclusion> </alt> </alts> </xsl:template> <xsl:template match="rulename"> <nonterminal name='{.}'> <xsl:sequence select="f:mark(.)"/> <xsl:sequence select="f:rename(.)"/> </nonterminal> </xsl:template> <xsl:template match="rule/rulename"/> <xsl:template match="comment"> <comment> <xsl:apply-templates/> </comment> </xsl:template> <!-- ============================================================ --> <xsl:function name="f:hex-to-dec" as="xs:integer"> <xsl:param name="hex" as="xs:string"/> <xsl:iterate select="reverse(string-to-codepoints(upper-case($hex)))"> <xsl:param name="dec" select="0"/> <xsl:param name="pow" select="1"/> <xsl:on-completion select="$dec"/> <xsl:variable name="digit" select="if (. gt 64) then . - 55 else . - 48"/> <xsl:next-iteration> <xsl:with-param name="dec" select="$dec + ($digit * $pow)"/> <xsl:with-param name="pow" select="$pow * 16"/> </xsl:next-iteration> </xsl:iterate> </xsl:function> <xsl:function name="f:dec-to-hex" as="xs:string"> <xsl:param name="dec" as="xs:integer"/> <xsl:choose> <xsl:when test="$dec lt 16"> <xsl:sequence select="substring('0123456789ABCDEF', $dec+1, 1)"/> </xsl:when> <xsl:otherwise> <xsl:variable name="newdec" select="$dec idiv 16"/> <xsl:variable name="digit" select="$dec - ($newdec * 16)"/> <xsl:sequence select="f:dec-to-hex($newdec)||substring('0123456789ABCDEF', $digit+1, 1)"/> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:function name="f:mark" as="attribute()?"> <xsl:param name="node" as="element()"/> <xsl:if test="map:contains($marked, generate-id($node))"> <xsl:attribute name="mark" select="map:get($marked, generate-id($node))"/> </xsl:if> </xsl:function> <xsl:function name="f:tmark" as="attribute()?"> <xsl:param name="node" as="element()"/> <xsl:if test="map:contains($marked, generate-id($node))"> <xsl:attribute name="tmark" select="map:get($marked, generate-id($node))"/> </xsl:if> </xsl:function> <xsl:function name="f:rename" as="attribute()?"> <xsl:param name="node" as="element()"/> <xsl:if test="map:contains($renamed, generate-id($node))"> <xsl:attribute name="rename" select="map:get($renamed, generate-id($node))"/> </xsl:if> </xsl:function> </xsl:stylesheet>
Grammar! Grammar! Grammar! Grammar!
Now we can…
Convert
uri.abnf
to xml…coffeepot -g:ABNFp.ixml -i:uri.abnf -o:uri.xml
Transform that XML…
saxon -s:uri.xml -xsl:abnf2ixml.xsl -o:uri-raw.vxml
And now it’s iXML!
<?xml version="1.0" encoding="utf-8"?> <ixml> <prolog> <version string="1.1-nineml"/> </prolog> <rule name="URI"> <alt> <nonterminal name="scheme"/> <literal string=":"/> <nonterminal name="hier-part"/> <option> <alts> <alt> <literal string="?"/> <nonterminal name="query"/> </alt> </alts> </option> <option> <alts> <alt> <literal string="#"/> <nonterminal name="fragment"/> </alt> </alts> </option> </alt> </rule> <rule name="hier-part"> <alt> <literal string="//"/> <nonterminal name="authority"/> <nonterminal name="path-abempty"/> </alt> <alt> <nonterminal name="path-absolute"/> </alt> <alt> <nonterminal name="path-rootless"/> </alt> <alt> <nonterminal name="path-empty"/> </alt> </rule> <rule name="URI-reference"> <alt> <nonterminal name="URI"/> </alt> <alt> <nonterminal name="relative-ref"/> </alt> </rule> <rule name="absolute-URI"> <alt> <nonterminal name="scheme"/> <literal string=":"/> <nonterminal name="hier-part"/> <option> <alts> <alt> <literal string="?"/> <nonterminal name="query"/> </alt> </alts> </option> </alt> </rule> <rule name="relative-ref"> <alt> <nonterminal name="relative-part"/> <option> <alts> <alt> <literal string="?"/> <nonterminal name="query"/> </alt> </alts> </option> <option> <alts> <alt> <literal string="#"/> <nonterminal name="fragment"/> </alt> </alts> </option> </alt> </rule> <rule name="relative-part"> <alt> <literal string="//"/> <nonterminal name="authority"/> <nonterminal name="path-abempty"/> </alt> <alt> <nonterminal name="path-absolute"/> </alt> <alt> <nonterminal name="path-noscheme"/> </alt> <alt> <nonterminal name="path-empty"/> </alt> </rule> <rule name="scheme"> <alt> <nonterminal name="ALPHA"/> <repeat0> <alts> <alt> <nonterminal name="ALPHA"/> </alt> <alt> <nonterminal name="DIGIT"/> </alt> <alt> <literal string="+"/> </alt> <alt> <literal string="-"/> </alt> <alt> <literal string="."/> </alt> </alts> </repeat0> </alt> </rule> <rule name="authority"> <alt> <option> <alts> <alt> <nonterminal name="userinfo"/> <literal string="@"/> </alt> </alts> </option> <nonterminal name="host"/> <option> <alts> <alt> <literal string=":"/> <nonterminal name="port"/> </alt> </alts> </option> </alt> </rule> <rule name="userinfo"> <alt> <repeat0> <alts> <alt> <nonterminal name="unreserved"/> </alt> <alt> <nonterminal name="pct-encoded"/> </alt> <alt> <nonterminal name="sub-delims"/> </alt> <alt> <literal string=":"/> </alt> </alts> </repeat0> </alt> </rule> <rule name="host"> <alt> <nonterminal name="IP-literal"/> </alt> <alt> <nonterminal name="IPv4address"/> </alt> <alt> <nonterminal name="reg-name"/> </alt> </rule> <rule name="port"> <alt> <repeat0> <nonterminal name="DIGIT"/> </repeat0> </alt> </rule> <rule name="IP-literal"> <alt> <literal string="["/> <alts> <alt> <nonterminal name="IPv6address"/> </alt> <alt> <nonterminal name="IPvFuture"/> </alt> </alts> <literal string="]"/> </alt> </rule> <rule name="IPvFuture"> <alt> <literal string="v"/> <nonterminal name="HEXDIG"/> <repeat0> <nonterminal name="HEXDIG"/> </repeat0> <literal string="."/> <alts> <alt> <nonterminal name="unreserved"/> </alt> <alt> <nonterminal name="sub-delims"/> </alt> <alt> <literal string=":"/> </alt> </alts> <repeat0> <alts> <alt> <nonterminal name="unreserved"/> </alt> <alt> <nonterminal name="sub-delims"/> </alt> <alt> <literal string=":"/> </alt> </alts> </repeat0> </alt> </rule> <rule name="IPv6address"> <alt> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="ls32"/> </alt> <alt> <literal string="::"/> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="ls32"/> </alt> <alt> <option> <alts> <alt> <nonterminal name="h16"/> </alt> </alts> </option> <literal string="::"/> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="ls32"/> </alt> <alt> <option> <alts> <alt> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="h16"/> </alt> </alts> </option> <literal string="::"/> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="ls32"/> </alt> <alt> <option> <alts> <alt> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="h16"/> </alt> </alts> </option> <literal string="::"/> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="ls32"/> </alt> <alt> <option> <alts> <alt> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="h16"/> </alt> </alts> </option> <literal string="::"/> <nonterminal name="h16"/> <literal string=":"/> <nonterminal name="ls32"/> </alt> <alt> <option> <alts> <alt> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="h16"/> </alt> </alts> </option> <literal string="::"/> <nonterminal name="ls32"/> </alt> <alt> <option> <alts> <alt> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="h16"/> </alt> </alts> </option> <literal string="::"/> <nonterminal name="h16"/> </alt> <alt> <option> <alts> <alt> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> </alt> </alts> <nonterminal name="h16"/> </alt> </alts> </option> <literal string="::"/> </alt> </rule> <rule name="h16"> <alt> <nonterminal name="HEXDIG"/> <nonterminal name="HEXDIG"/> <nonterminal name="HEXDIG"/> <nonterminal name="HEXDIG"/> <nonterminal name="HEXDIG"/> </alt> </rule> <rule name="ls32"> <alt> <alts> <alt> <nonterminal name="h16"/> <literal string=":"/> <nonterminal name="h16"/> </alt> </alts> </alt> <alt> <nonterminal name="IPv4address"/> </alt> </rule> <rule name="IPv4address"> <alt> <nonterminal name="dec-octet"/> <literal string="."/> <nonterminal name="dec-octet"/> <literal string="."/> <nonterminal name="dec-octet"/> <literal string="."/> <nonterminal name="dec-octet"/> </alt> </rule> <rule name="dec-octet"> <alt> <nonterminal name="DIGIT"/> </alt> <alt> <alts> <alt> <inclusion> <member from="#31" to="#39"/> </inclusion> </alt> </alts> <nonterminal name="DIGIT"/> </alt> <alt> <literal string="1"/> <nonterminal name="DIGIT"/> <nonterminal name="DIGIT"/> </alt> <alt> <literal string="2"/> <alts> <alt> <inclusion> <member from="#30" to="#34"/> </inclusion> </alt> </alts> <nonterminal name="DIGIT"/> </alt> <alt> <literal string="25"/> <alts> <alt> <inclusion> <member from="#30" to="#35"/> </inclusion> </alt> </alts> </alt> </rule> <rule name="reg-name"> <alt> <repeat0> <alts> <alt> <nonterminal name="unreserved"/> </alt> <alt> <nonterminal name="pct-encoded"/> </alt> <alt> <nonterminal name="sub-delims"/> </alt> </alts> </repeat0> </alt> </rule> <rule name="path"> <alt> <nonterminal name="path-abempty"/> </alt> <alt> <nonterminal name="path-absolute"/> </alt> <alt> <nonterminal name="path-noscheme"/> </alt> <alt> <nonterminal name="path-rootless"/> </alt> <alt> <nonterminal name="path-empty"/> </alt> </rule> <rule name="path-abempty"> <alt> <repeat0> <alts> <alt> <literal string="/"/> <nonterminal name="segment"/> </alt> </alts> </repeat0> </alt> </rule> <rule name="path-absolute"> <alt> <literal string="/"/> <option> <alts> <alt> <nonterminal name="segment-nz"/> <repeat0> <alts> <alt> <literal string="/"/> <nonterminal name="segment"/> </alt> </alts> </repeat0> </alt> </alts> </option> </alt> </rule> <rule name="path-noscheme"> <alt> <nonterminal name="segment-nz-nc"/> <repeat0> <alts> <alt> <literal string="/"/> <nonterminal name="segment"/> </alt> </alts> </repeat0> </alt> </rule> <rule name="path-rootless"> <alt> <nonterminal name="segment-nz"/> <repeat0> <alts> <alt> <literal string="/"/> <nonterminal name="segment"/> </alt> </alts> </repeat0> </alt> </rule> <rule name="path-empty"> <alt> <alts> <alt/> </alts> </alt> </rule> <rule name="segment"> <alt> <repeat0> <nonterminal name="pchar"/> </repeat0> </alt> </rule> <rule name="segment-nz"> <alt> <nonterminal name="pchar"/> <repeat0> <nonterminal name="pchar"/> </repeat0> </alt> </rule> <rule name="segment-nz-nc"> <alt> <alts> <alt> <nonterminal name="unreserved"/> </alt> <alt> <nonterminal name="pct-encoded"/> </alt> <alt> <nonterminal name="sub-delims"/> </alt> <alt> <literal string="@"/> </alt> </alts> <repeat0> <alts> <alt> <nonterminal name="unreserved"/> </alt> <alt> <nonterminal name="pct-encoded"/> </alt> <alt> <nonterminal name="sub-delims"/> </alt> <alt> <literal string="@"/> </alt> </alts> </repeat0> </alt> </rule> <rule name="pchar"> <alt> <nonterminal name="unreserved"/> </alt> <alt> <nonterminal name="pct-encoded"/> </alt> <alt> <nonterminal name="sub-delims"/> </alt> <alt> <literal string=":"/> </alt> <alt> <literal string="@"/> </alt> </rule> <rule name="query"> <alt> <repeat0> <alts> <alt> <nonterminal name="pchar"/> </alt> <alt> <literal string="/"/> </alt> <alt> <literal string="?"/> </alt> </alts> </repeat0> </alt> </rule> <rule name="fragment"> <alt> <repeat0> <alts> <alt> <nonterminal name="pchar"/> </alt> <alt> <literal string="/"/> </alt> <alt> <literal string="?"/> </alt> </alts> </repeat0> </alt> </rule> <rule name="pct-encoded"> <alt> <literal string="%"/> <nonterminal name="HEXDIG"/> <nonterminal name="HEXDIG"/> </alt> </rule> <rule name="unreserved"> <alt> <nonterminal name="ALPHA"/> </alt> <alt> <nonterminal name="DIGIT"/> </alt> <alt> <literal string="-"/> </alt> <alt> <literal string="."/> </alt> <alt> <literal string="_"/> </alt> <alt> <literal string="~"/> </alt> </rule> <rule name="reserved"> <alt> <nonterminal name="gen-delims"/> </alt> <alt> <nonterminal name="sub-delims"/> </alt> </rule> <rule name="gen-delims"> <alt> <literal string=":"/> </alt> <alt> <literal string="/"/> </alt> <alt> <literal string="?"/> </alt> <alt> <literal string="#"/> </alt> <alt> <literal string="["/> </alt> <alt> <literal string="]"/> </alt> <alt> <literal string="@"/> </alt> </rule> <rule name="sub-delims"> <alt> <literal string="!"/> </alt> <alt> <literal string="$"/> </alt> <alt> <literal string="&"/> </alt> <alt> <literal string="'"/> </alt> <alt> <literal string="("/> </alt> <alt> <literal string=")"/> </alt> <alt> <literal string="*"/> </alt> <alt> <literal string="+"/> </alt> <alt> <literal string=","/> </alt> <alt> <literal string=";"/> </alt> <alt> <literal string="="/> </alt> </rule> <rule mark="-" name="ALPHA"> <alt> <inclusion> <member from="A" to="Z"/> <member from="a" to="z"/> </inclusion> </alt> </rule> <rule mark="-" name="DIGIT"> <alt> <inclusion> <member from="0" to="9"/> </inclusion> </alt> </rule> <rule mark="-" name="HEXDIG"> <alt> <nonterminal name="DIGIT"/> </alt> <alt> <inclusion> <member from="A" to="F"/> </inclusion> </alt> <alt> <inclusion> <member from="a" to="f"/> </inclusion> </alt> </rule> </ixml>
I can haz URI!
Now I can parse a URI with the grammar from RFC 3986:
coffeepot -g:uri-raw.vxml "https://mushroom.mushroom/?notareal#tld"
XML!
<URI> <scheme>https</scheme>: <hier-part>// <authority> <host> <reg-name> <unreserved>m</unreserved> <unreserved>u</unreserved> <unreserved>s</unreserved> <unreserved>h</unreserved> <unreserved>r</unreserved> <unreserved>o</unreserved> <unreserved>o</unreserved> <unreserved>m</unreserved> <unreserved>.</unreserved> <unreserved>m</unreserved> <unreserved>u</unreserved> <unreserved>s</unreserved> <unreserved>h</unreserved> <unreserved>r</unreserved> <unreserved>o</unreserved> <unreserved>o</unreserved> <unreserved>m</unreserved> </reg-name> </host> </authority> <path-abempty>/ <segment/> </path-abempty> </hier-part>? <query> <pchar> <unreserved>n</unreserved> </pchar> <pchar> <unreserved>o</unreserved> </pchar> <pchar> <unreserved>t</unreserved> </pchar> <pchar> <unreserved>a</unreserved> </pchar> <pchar> <unreserved>r</unreserved> </pchar> <pchar> <unreserved>e</unreserved> </pchar> <pchar> <unreserved>a</unreserved> </pchar> <pchar> <unreserved>l</unreserved> </pchar> </query># <fragment> <pchar> <unreserved>t</unreserved> </pchar> <pchar> <unreserved>l</unreserved> </pchar> <pchar> <unreserved>d</unreserved> </pchar> </fragment> </URI>
Marks
I could improve the output with marks…
I could edit the VXML file…
I could edit the VXML file, but that would be wrong.
What if I could describe where I wanted the marks to go?
In a declarative way:
mark rule unreserved with "-" mark rule pchar with “-” mark token //char-val[. = ('/', ':', '//')] with “-” mark token /rulelist/rule[rulename = 'URI']//char-val with ‘-’
Marks, in XML
That marks file sure would be easier to process if it was in XML though…
CoffeeSacks (iXML extension functions for Saxon) to the rescue
<xsl:param name="marks" select="()"/> <xsl:variable name="parser" select="cs:load-grammar('marks.ixml')"/> <xsl:variable name="marklist" as="element(marks)?" select="$marks ! $parser(unparsed-text(.))/*"/>
With this little grammar grammar grammar grammar grammar.
ixml version "1.1-nineml" . marks = mark**NL, NL? . -mark = rule | token | rename . rule = -'mark', s, -'rule', s, name, s, -'with', s, themark, s? . token = -'mark', s, -'token', s, expr, s, -'with', s, themark, s? . -rename = renamerule | renametoken . renamerule>rename = -'rename', s, @name, s, -'to', s, name, s? . renametoken = -'rename', s, -'token', s, expr, s, -'to', s, @name, s? . -expr = ~[#A]+ . -name = [L|N|'-'|'.'|'_']+ . @themark>mark = -'"', [P], -'"' | -"'", [P], -"'" | -'“', [P], -'”' | -"‘", [P], -"’" . -s = -[#20 | #9]+ . -NL = -#D?, -#A .
Mushroom! Mushroom!
Ready! Set! Go!
coffeepot -g:ABNFp.ixml -i:uri.abnf -o:uri.xml
saxon -s:uri.xml -xsl:abnf2ixml.xsl -o:uri.vxml marks=uri-marks.txt
coffeepot -g:uri.vxml "https://mushroom.mushroom/?notareal#tld"
Tada!
<URI> <scheme>https</scheme> <hier-part> <authority> <host> <reg-name>mushroom.mushroom</reg-name> </host> </authority> <path-abempty> <segment/> </path-abempty> </hier-part> <query>notareal</query> <fragment>tld</fragment> </URI>