COMPILER HTML
(* Attempt to describe a fairly large subset of HTML (HyperText Markup Language)
This is incomplete, and parts are not properly described anyway!
P.D. Terry and P.D. Koeslag, Rhodes University, 1995 *)
IGNORE CASE
IGNORE CHR(1) .. CHR(13)
CHARACTERS
eol = CHR(13) .
Special = '<>&"=' .
Letter = CHR(33) .. CHR(255) - Special.
Noquote = ANY - '"' - eol.
TOKENS
Word = Letter { Letter } .
String = '"' { Noquote } '"' .
PRODUCTIONS
HTML = ( "" HeadPart BodyPart ""
| HeadPart BodyPart ) EOF .
HeadPart = "
" TitleField "" | TitleField .
BodyPart = "" { Field } "" | { Field } .
TitleField = "" { TextOrImage } "" .
(* Or should this be simply
TitleField = "" { InlineText } "" .
*)
Field = Heading | Anchor | UnNumList | NumList | Address |
Paragraph | DefList | PreFormatted | TextOrImage .
Heading = ("" { TextOrImage } "
") |
("" { TextOrImage } "
") |
("" { TextOrImage } "
") |
("" { TextOrImage } "
") .
Alignment = [ "ALIGN" "=" ( "TOP" | "MIDDLE" | "CENTER" ) ] .
Anchor = ""
TextOrImage { TextOrImage } "" .
FilePath = Word | String .
TextOrImage = InlineText | Image .
UnNumList = "" .
NumList = "" { ListElement } "
" .
ListElement = "" { Field } .
Address = "" InlineText { InlineText } "" .
Format = "" { InlineText } ""
| "" { InlineText } ""
| "" { InlineText } ""
| "" { InlineText } ""
| "" { InlineText } "" .
Paragraph = "" .
DefList = "
" DefListElement { DefListElement } "
" .
DefListElement = "" { Field } "" { Field } .
PreFormatted = "" { InlineText } "" .
Image = "
" .
InlineText = Word | String | Escape | Control | Format .
Escape = "<" | ">" | "&" | """ .
Control = "" | "
" | "
" | "=" |
"ALIGN" | "HREF" | "NAME" | "TOP" | "MIDDLE" | "CENTER" .
END HTML.