; [hpat.sty] HTML Pattern Language
Language hpat
Regular Grammar
let Byte = '\00' .. '\ff' ; all extended ascii
let Control = '\00' .. '\1f' ; control
| '\7f' ; DEL
| '\ff' ; space-like extended ascii
let Letter = 'A'..'Z' | 'a'..'z'
let Digit = '0'..'9'
let Special = '_'
let Space = " " | "\t" | "\n" | "\r\n" | "\r"
let White = Space+
let Ide = ( ( Letter | Digit | Special )
{ Letter | Digit | Special } )
let Key = 'Hh' 'Pp' 'Aa' 'Tt'
tok PatBgn = "<" Key ( White Ide )+ [ White ] ">"
tok PatEnd = "" Key ">"
tok PatRef = "&" Ide ";"
;tok Other = ( Byte - Ide - '<&' )+
; | Ide | ( ( "<" | "" ) [ Ide - Key ] )
; | "&" [ Ide ]
Context Free Grammar
start HPatDoc
:dfn : Contents
let Contents
:nil :
:cons: Content Contents
let Content
:ref : PatRef
:else: [other]
;:else: Other
:pat : PatBgn Contents PatEnd