| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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 = ( "<HTML>" HeadPart BodyPart "</HTML>"
- | HeadPart BodyPart ) EOF .
- HeadPart = "<HEAD>" TitleField "</HEAD>" | TitleField .
- BodyPart = "<BODY>" { Field } "</BODY>" | { Field } .
- TitleField = "<TITLE>" { TextOrImage } "</TITLE>" .
- (* Or should this be simply
- TitleField = "<TITLE>" { InlineText } "</TITLE>" .
- *)
- Field = Heading | Anchor | UnNumList | NumList | Address |
- Paragraph | DefList | PreFormatted | TextOrImage .
- Heading = ("<H1" Alignment ">" { TextOrImage } "</H1>") |
- ("<H2" Alignment ">" { TextOrImage } "</H2>") |
- ("<H3" Alignment ">" { TextOrImage } "</H3>") |
- ("<H4" Alignment ">" { TextOrImage } "</H4>") .
- Alignment = [ "ALIGN" "=" ( "TOP" | "MIDDLE" | "CENTER" ) ] .
- Anchor = "<A" ( "HREF" | "NAME" ) "=" FilePath ">"
- TextOrImage { TextOrImage } "</A>" .
- FilePath = Word | String .
- TextOrImage = InlineText | Image .
- UnNumList = "<UL>" { ListElement } "</UL>" .
- NumList = "<OL>" { ListElement } "</OL>" .
- ListElement = "<LI>" { Field } .
- Address = "<ADDRESS>" InlineText { InlineText } "</ADDRESS>" .
- Format = "<DFN>" { InlineText } "</DFN>"
- | "<EM>" { InlineText } "</EM>"
- | "<CITE>" { InlineText } "</CITE>"
- | "<CODE>" { InlineText } "</CODE>"
- | "<STRONG>" { InlineText } "</STRONG>" .
- Paragraph = "<P" Alignment ">" .
- DefList = "<DL>" DefListElement { DefListElement } "</DL>" .
- DefListElement = "<DT>" { Field } "<DD>" { Field } .
- PreFormatted = "<PRE>" { InlineText } "</PRE>" .
- Image = "<IMG" Alignment "SRC" "=" FilePath Alignment
- [ "ALT" "=" String ] ">" .
- InlineText = Word | String | Escape | Control | Format .
- Escape = "<" | ">" | "&" | """ .
- Control = "</P>" | "<BR>" | "<HR>" | "=" |
- "ALIGN" | "HREF" | "NAME" | "TOP" | "MIDDLE" | "CENTER" .
- END HTML.
|