/* HTML 4.0 small subset, by Paul B Mann, 2005?, tabs=3. */ "tab=3" => error() => lookupu() // Uppercase lookup, so we don't have to specify both in grammar. => lookup() => lookup() => double_quote ({string}) => lookup() => lookup() => lookup() '.' => period ({period}) '?' => period ({period}) '!' => period ({period}) ; /*----------------------------------------------------------------------------*/ Start -> HtmlFile +> file HtmlFile -> [PreHtml] [Html] PreHtml -> PreHtmlSt HTML PUBLIC {string} TagEnd +> prehtml PreHtmlSt -> ' tag() TagEnd -> '>' => tagend() Html -> HtmlStart TagEnd [Head] [Body] [''] +> html HtmlStart -> ' tag() Head -> HeadStart TagEnd [HeadItem...] [''] +> head HeadStart -> ' tag() HeadItem -> Title -> MetaTag -> LinkTag -> Style -> Script Title -> '' +> title // => delete_tree() TitleWords -> Word... -> (Word... TitleEnd)... TitleEnd -> {period} +> puncr -> '?' +> puncr -> '!' +> puncr -> BRTag -> TitleEnd Tag MetaTag -> MetaStart TagEnd -> MetaStart MetaItem... TagEnd MetaStart -> ' tag() MetaItem -> NAME '=' Value -> CONTENT '=' Value -> 'HTTP-EQUIV' '=' Value LinkTag -> LinkStart TagEnd -> LinkStart LinkItem... TagEnd LinkStart -> ' tag() LinkItem -> REL '=' Value -> TYPE '=' Value -> HREF '=' Value Style -> StyleStart '' StyleStart -> '' => read_until ('') Script -> ScriptStart '' -> ScriptTag ScriptItem... TagEnd ScriptStart -> '' => read_until ('') ScriptTag -> ' tag() ScriptItem -> '=' Value -> '=' Value /*----------------------------------------------------------------------------*/ Body -> BodyTag [BodyText] '' +> body BodyTag -> BodyStart TagEnd -> BodyStart BodyItem... TagEnd BodyStart -> ' tag() BodyItem -> CLASS '=' Value -> ONLOAD '=' Value -> BGCOLOR '=' Value BodyText -> Section... Section -> Headline +> section -> Headline Paragraph... +> section -> Paragraph... +> section Headline -> HeadlineTag Paragraph... HeadlineEnd -> HeadlineTag HeadlineEnd HeadlineTag -> HeadlineSt TagEnd -> HeadlineSt HeadlineItem... TagEnd HeadlineSt -> ' tag() -> ' tag() -> ' tag() -> ' tag() -> ' tag() -> ' tag() -> ' tag() HeadlineItem-> CLASS '=' Value -> STYLE '=' Value -> ALIGN '=' Value HeadlineEnd -> '' -> '' -> '' -> '' -> '' -> '' -> '' Paragraph -> ParaTag Sentence... +> paragraph -> ParaTag Sentence... ParaEnd +> paragraph -> ParaTag ParaEnd +> paragraph -> Sentence... +> paragraph ParaTag -> ParaStart TagEnd -> ParaStart ParaItem... TagEnd ParaStart -> ' tag() ParaItem -> CLASS '=' Value -> ALIGN '=' Value -> STYLE '=' Value ParaEnd -> '

' Sentence -> Word... +> sentence -> Word... SentenceEnd +> sentence -> SentenceEnd +> sentence -> Tag... Word... +> sentence -> Tag... Word... SentenceEnd +> sentence -> Tag... Word... BRTag... +> sentence -> BRTag... -> Tag... SentenceEnd -> {period} +> punce -> '?' +> punce -> '!' +> punce -> SentenceEnd Tag /*----------------------------------------------------------------------------*/ Word -> +> word -> +> word -> -> {string} -> +> word -> -> '=' +> punc -> '>' +> puncr -> '<' +> puncl -> '-' +> punc -> ',' +> puncr -> ':' +> puncr -> ';' +> puncr -> '.' +> punc -> '...' +> punc -> +> puncq -> -> Word Tag... Tag -> ' '' -> HRTag -> ' '' -> ' '' -> FontTag -> FontEnd -> AnchorTag -> AnchorEnd -> SpanTag -> SpanEnd -> DivTag -> DivEnd -> ' ' /*----------------------------------------------------------------------------*/ FontTag -> FontStart TagEnd -> FontStart FontItem... TagEnd FontStart -> ' tag() FontItem -> SIZE '=' Value -> FACE '=' Value FontEnd -> '' AnchorTag -> AnchorStart TagEnd -> AnchorStart AnchorItem... TagEnd AnchorStart -> ' tag() AnchorItem -> TITLE '=' Value -> HREF '=' Value -> NAME '=' Value AnchorEnd -> '' SpanTag -> SpanStart TagEnd -> SpanStart SpanItem... TagEnd SpanStart -> ' tag() SpanItem -> CLASS '=' Value -> STYLE '=' Value SpanEnd -> '' DivTag -> DivStart TagEnd -> DivStart DivItem... TagEnd DivStart -> ' tag() DivItem -> '=' Value -> '=' Value DivEnd -> '' BRTag -> BRStart TagEnd -> BRStart BRItem... TagEnd BRStart -> ' tag() BRItem -> '=' Value -> '=' Value HRTag -> HRStart TagEnd -> HRStart HRItem... TagEnd HRStart -> ' tag() HRItem -> '=' Value -> '=' Value Value -> -> -> -> '+' -> '-' -> -> {string} /* End of Grammar */