| |
| rulelist | = |
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 CRLF
*c-wsp
")"
|
| option | = |
"["
*c-wsp
alternation CRLF
*c-wsp
"]"
|
| char-val | = |
DQUOTE *(%x20-21 / %x23-7E) DQUOTE
|
| |
; ; quoted string of SP and VCHAR without DQUOTE
; ; NOTE: ABNF strings are case-insensitive.
; Hence: rulename = "abc" and: rulename = "aBc"
; will match "abc", "Abc", "aBc", "abC", "ABc", "aBC", "AbC", and "ABC".
; To specify a rule that IS case SENSITIVE, specify the characters individually.
; For example:
; rulename = %d97 %d98 %d99
; or
; rulename = %d97.98.99
; will match only the string that comprises only the lowercased characters, abc.
|
| 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
|
| |