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 = "
    " { ListElement } "
" . 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.