source: proto/REgen/abnf.abnf @ 5787

Last change on this file since 5787 was 892, checked in by cameron, 8 years ago

REgen: regexp generator for ABNF

File size: 2.7 KB
Line 
1rulelist       =  1*( rule / (*c-wsp c-nl) )
2rule           =  rulename defined-as elements c-nl
3                       ; continues if next line starts
4                       ;  with white space
5rulename       =  ALPHA *(ALPHA / DIGIT / "-")
6defined-as     =  *c-wsp ("=" / "=/") *c-wsp
7                       ; basic rules definition and
8                       ;  incremental alternatives
9elements       =  alternation *c-wsp
10c-wsp          =  WSP / (c-nl WSP)
11c-nl           =  comment / CRLF
12                       ; comment or newline
13comment        =  ";" *(WSP / VCHAR) CRLF
14alternation    =  concatenation
15                  *(*c-wsp "/" *c-wsp concatenation)
16concatenation  =  repetition *(1*c-wsp repetition)
17repetition     =  [repeat] element
18repeat         =  1*DIGIT / (*DIGIT "*" *DIGIT)
19element        =  rulename / group / option /
20                          char-val / num-val / prose-val
21group          =  "(" *c-wsp alternation *c-wsp ")"
22option         =  "[" *c-wsp alternation *c-wsp "]"
23char-val       =  DQUOTE *(%x20-21 / %x23-7E) DQUOTE
24                       ; quoted string of SP and VCHAR without DQUOTE
25num-val        =  "%" (bin-val / dec-val / hex-val)
26bin-val        =  "b" 1*BIT
27                  [ 1*("." 1*BIT) / ("-" 1*BIT) ]
28                       ; series of concatenated bit values
29                       ; or single ONEOF range
30dec-val        =  "d" 1*DIGIT
31                  [ 1*("." 1*DIGIT) / ("-" 1*DIGIT) ]
32hex-val        =  "x" 1*HEXDIG
33                  [ 1*("." 1*HEXDIG) / ("-" 1*HEXDIG) ]
34prose-val      =  "<" *(%x20-3D / %x3F-7E) ">"
35                       ; bracketed string of SP and VCHAR without angles
36                       ; prose description, to be used as last resort
37ALPHA          =  %x41-5A / %x61-7A   ; A-Z / a-z
38BIT            =  "0" / "1"
39CHAR           =  %x01-7F
40                       ; any 7-bit US-ASCII character, excluding NUL
41CR             =  %x0D
42                       ; carriage return
43CRLF           =  CR LF
44                       ; Internet standard newline
45CTL            =  %x00-1F / %x7F
46                       ; controls
47DIGIT          =  %x30-39
48                       ; 0-9
49DQUOTE         =  %x22
50                       ; " (Double Quote)
51HEXDIG         =  DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
52HTAB           =  %x09
53                       ; horizontal tab
54LF             =  %x0A
55                       ; linefeed
56LWSP           =  *(WSP / CRLF WSP)
57                       ; linear white space (past newline)
58OCTET          =  %x00-FF
59                       ; 8 bits of data
60SP             =  %x20
61                      ; space
62VCHAR          =  %x21-7E
63                       ; visible (printing) characters
64WSP            =  SP / HTAB
65                       ; white space
Note: See TracBrowser for help on using the repository browser.