/* * Copyright (c) 2024 joshua stein * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "html.h" #ifdef HTML_ENABLE #ifdef HTML_ENABLE_DEBUGGING const char *html_mode_names[] = { "NONE", "INITIAL", "BEFORE_HTML", "BEFORE_HEAD", "IN_HEAD", "IN_HEAD_NOSCRIPT", "AFTER_HEAD", "IN_BODY", "TEXT", "IN_TABLE", "IN_TABLE_TEXT", "IN_CAPTION", "IN_COLUMN_GROUP", "IN_TABLE_BODY", "IN_ROW", "IN_CELL", "IN_SELECT", "IN_SELECT_IN_TABLE", "IN_TEMPLATE", "AFTER_BODY", "IN_FRAMESET", "AFTER_FRAMESET", "AFTER_AFTER_BODY", "AFTER_AFTER_FRAMESET" }; const char *html_state_names[] = { "NONE", "DATA", "RCDATA", "RAWTEXT", "SCRIPT_DATA", "PLAINTEXT", "TAG_OPEN", "END_TAG_OPEN", "TAG_NAME", "RCDATA_LESS_THAN_SIGN", "RCDATA_END_TAG_OPEN", "RCDATA_END_TAG_NAME", "RAWTEXT_LESS_THAN_SIGN", "RAWTEXT_END_TAG_OPEN", "RAWTEXT_END_TAG_NAME", "SCRIPT_DATA_LESS_THAN_SIGN", "SCRIPT_DATA_END_TAG_OPEN", "SCRIPT_DATA_END_TAG_NAME", "SCRIPT_DATA_ESCAPE_START", "SCRIPT_DATA_ESCAPE_START_DASH", "SCRIPT_DATA_ESCAPED", "SCRIPT_DATA_ESCAPED_DASH", "SCRIPT_DATA_ESCAPED_DASH_DASH", "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN", "SCRIPT_DATA_ESCAPED_END_TAG_OPEN", "SCRIPT_DATA_ESCAPED_END_TAG_NAME", "SCRIPT_DATA_DOUBLE_ESCAPE_START", "SCRIPT_DATA_DOUBLE_ESCAPED", "SCRIPT_DATA_DOUBLE_ESCAPED_DASH", "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH", "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN", "SCRIPT_DATA_DOUBLE_ESCAPE_END", "BEFORE_ATTRIBUTE_NAME", "ATTRIBUTE_NAME", "AFTER_ATTRIBUTE_NAME", "BEFORE_ATTRIBUTE_VALUE", "ATTRIBUTE_VALUE_DOUBLE_QUOTED", "ATTRIBUTE_VALUE_SINGLE_QUOTED", "ATTRIBUTE_VALUE_UNQUOTED", "AFTER_ATTRIBUTE_VALUE_QUOTED", "SELF_CLOSING_START_TAG", "BOGUS_COMMENT", "MARKUP_DECLARATION_OPEN", "COMMENT_START", "COMMENT_START_DASH", "COMMENT", "COMMENT_LESS_THAN_SIGN", "COMMENT_LESS_THAN_SIGN_BANG", "COMMENT_LESS_THAN_SIGN_BANG_DASH", "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH", "COMMENT_END_DASH", "COMMENT_END", "COMMENT_END_BANG", "DOCTYPE", "BEFORE_DOCTYPE_NAME", "DOCTYPE_NAME", "AFTER_DOCTYPE_NAME", "AFTER_DOCTYPE_PUBLIC_KEYWORD", "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER", "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED", "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED", "AFTER_DOCTYPE_PUBLIC_IDENTIFIER", "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS", "AFTER_DOCTYPE_SYSTEM_KEYWORD", "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER", "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED", "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED", "AFTER_DOCTYPE_SYSTEM_IDENTIFIER", "BOGUS_DOCTYPE", "CDATA_SECTION", "CDATA_SECTION_BRACKET", "CDATA_SECTION_END", "CHARACTER_REFERENCE", "NAMED_CHARACTER_REFERENCE", "AMBIGUOUS_AMPERSAND", "NUMERIC_CHARACTER_REFERENCE", "HEXADECIMAL_CHARACTER_REFERENCE_START", "DECIMAL_CHARACTER_REFERENCE_START", "HEXADECIMAL_CHARACTER_REFERENCE", "DECIMAL_CHARACTER_REFERENCE", "NUMERIC_CHARACTER_REFERENCE_END" }; const char *html_error_strings[] = { "NONE", "ABRUPT_CLOSING_OF_EMPTY_COMMENT", "ABRUPT_DOCTYPE_PUBLIC_IDENTIFIER", "ABRUPT_DOCTYPE_SYSTEM_IDENTIFIER", "ABSENCE_OF_DIGITS_IN_NUMERIC_CHARACTER_REFERENCE", "CDATA_IN_HTML_CONTENT", "CHARACTER_REFERENCE_OUTSIDE_UNICODE_RANGE", "CONTROL_CHARACTER_IN_INPUT_STREAM", "CONTROL_CHARACTER_REFERENCE", "DUPLICATE_ATTRIBUTE", "END_TAG_WITH_ATTRIBUTES", "END_TAG_WITH_TRAILING_SOLIDUS", "EOF_BEFORE_TAG_NAME", "EOF_IN_CDATA", "EOF_IN_COMMENT", "EOF_IN_DOCTYPE", "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", "EOF_IN_TAG", "INCORRECTLY_CLOSED_COMMENT", "INCORRECTLY_OPENED_COMMENT", "INVALID_CHARACTER_SEQUENCE_AFTER_DOCTYPE_NAME", "INVALID_FIRST_CHARACTER_OF_TAG_NAME", "MISSING_ATTRIBUTE_VALUE", "MISSING_DOCTYPE_NAME", "MISSING_DOCTYPE_PUBLIC_IDENTIFIER", "MISSING_DOCTYPE_SYSTEM_IDENTIFIER", "MISSING_END_TAG_NAME", "MISSING_QUOTE_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER", "MISSING_QUOTE_BEFORE_DOCTYPE_SYSTEM_IDENTIFIER", "MISSING_SEMICOLON_AFTER_CHARACTER_REFERENCE", "MISSING_WHITESPACE_AFTER_DOCTYPE_PUBLIC_KEYWORD", "MISSING_WHITESPACE_AFTER_DOCTYPE_SYSTEM_KEYWORD", "MISSING_WHITESPACE_BEFORE_DOCTYPE_NAME", "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", "MISSING_WHITESPACE_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS", "NESTED_COMMENT", "NONCHARACTER_CHARACTER_REFERENCE", "NONCHARACTER_IN_INPUT_STREAM", "NON_VOID_HTML_ELEMENT_START_TAG_WITH_TRAILING_SOLIDUS", "NULL_CHARACTER_REFERENCE", "SURROGATE_CHARACTER_REFERENCE", "SURROGATE_IN_INPUT_STREAM", "UNEXPECTED_CHARACTER_AFTER_DOCTYPE_SYSTEM_IDENTIFIER", "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", "UNEXPECTED_NULL_CHARACTER", "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", "UNEXPECTED_SOLIDUS_IN_TAG", "UNKNOWN_NAMED_CHARACTER_REFERENCE" }; const char *html_token_names[] = { "INVALID", "DOCTYPE", "START_TAG", "END_TAG", "COMMENT", "CHARACTER", "EOF" }; #endif /* this doesn't have to list all tags, just ones the docs reference */ const char *html_tag_names[] = { "\1", /* bogus just so 0 isn't a valid tag id */ "a", "address", "applet", "area", "article", "aside", "b", "base", "basefont", "bgsound", "big", "blockquote", "body", "br", "button", "caption", "center", "cite", "code", "col", "colgroup", "dd", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "em", "embed", "fieldset", "figcaption", "figure", "font", "footer", "form", "frame", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "iframe", "image", "img", "input", "ins", "kbd", "keygen", "li", "link", "listing", "main", "marquee", "math", "menu", "meta", "nav", "nobr", "noembed", "noframes", "noscript", "object", "ol", "optgroup", "option", "p", "param", "plaintext", "pre", "rb", "rp", "rt", "rtc", "ruby", "s", "samp", "script", "search", "section", "select", "small", "source", "span", "strike", "strong", "style", "sub", "sup", "summary", "svg", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "title", "tr", "track", "tt", "u", "ul", "var", "wbr", "xmp", NULL }; #endif /* HTML_ENABLE */