Back to Prismjs

Prism Abnf

examples/prism-abnf.html

latest1.6 KB
Original Source

Full example

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 *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