1 /* 2 * Copyright (C) 2018 Alexander Borisov 3 * 4 * Author: Alexander Borisov <borisov@lexbor.com> 5 */ 6 7 #ifndef LEXBOR_HTML_TOKENIZER_ERROR_H 8 #define LEXBOR_HTML_TOKENIZER_ERROR_H 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 #include "lexbor/core/base.h" 15 #include "lexbor/core/array_obj.h" 16 17 #include "lexbor/html/tokenizer.h" 18 19 20 typedef enum { 21 /* abrupt-closing-of-empty-comment */ 22 LXB_HTML_TOKENIZER_ERROR_ABCLOFEMCO = 0x0000, 23 /* abrupt-doctype-public-identifier */ 24 LXB_HTML_TOKENIZER_ERROR_ABDOPUID = 0x0001, 25 /* abrupt-doctype-system-identifier */ 26 LXB_HTML_TOKENIZER_ERROR_ABDOSYID = 0x0002, 27 /* absence-of-digits-in-numeric-character-reference */ 28 LXB_HTML_TOKENIZER_ERROR_ABOFDIINNUCHRE = 0x0003, 29 /* cdata-in-html-content */ 30 LXB_HTML_TOKENIZER_ERROR_CDINHTCO = 0x0004, 31 /* character-reference-outside-unicode-range */ 32 LXB_HTML_TOKENIZER_ERROR_CHREOUUNRA = 0x0005, 33 /* control-character-in-input-stream */ 34 LXB_HTML_TOKENIZER_ERROR_COCHININST = 0x0006, 35 /* control-character-reference */ 36 LXB_HTML_TOKENIZER_ERROR_COCHRE = 0x0007, 37 /* end-tag-with-attributes */ 38 LXB_HTML_TOKENIZER_ERROR_ENTAWIAT = 0x0008, 39 /* duplicate-attribute */ 40 LXB_HTML_TOKENIZER_ERROR_DUAT = 0x0009, 41 /* end-tag-with-trailing-solidus */ 42 LXB_HTML_TOKENIZER_ERROR_ENTAWITRSO = 0x000A, 43 /* eof-before-tag-name */ 44 LXB_HTML_TOKENIZER_ERROR_EOBETANA = 0x000B, 45 /* eof-in-cdata */ 46 LXB_HTML_TOKENIZER_ERROR_EOINCD = 0x000C, 47 /* eof-in-comment */ 48 LXB_HTML_TOKENIZER_ERROR_EOINCO = 0x000D, 49 /* eof-in-doctype */ 50 LXB_HTML_TOKENIZER_ERROR_EOINDO = 0x000E, 51 /* eof-in-script-html-comment-like-text */ 52 LXB_HTML_TOKENIZER_ERROR_EOINSCHTCOLITE = 0x000F, 53 /* eof-in-tag */ 54 LXB_HTML_TOKENIZER_ERROR_EOINTA = 0x0010, 55 /* incorrectly-closed-comment */ 56 LXB_HTML_TOKENIZER_ERROR_INCLCO = 0x0011, 57 /* incorrectly-opened-comment */ 58 LXB_HTML_TOKENIZER_ERROR_INOPCO = 0x0012, 59 /* invalid-character-sequence-after-doctype-name */ 60 LXB_HTML_TOKENIZER_ERROR_INCHSEAFDONA = 0x0013, 61 /* invalid-first-character-of-tag-name */ 62 LXB_HTML_TOKENIZER_ERROR_INFICHOFTANA = 0x0014, 63 /* missing-attribute-value */ 64 LXB_HTML_TOKENIZER_ERROR_MIATVA = 0x0015, 65 /* missing-doctype-name */ 66 LXB_HTML_TOKENIZER_ERROR_MIDONA = 0x0016, 67 /* missing-doctype-public-identifier */ 68 LXB_HTML_TOKENIZER_ERROR_MIDOPUID = 0x0017, 69 /* missing-doctype-system-identifier */ 70 LXB_HTML_TOKENIZER_ERROR_MIDOSYID = 0x0018, 71 /* missing-end-tag-name */ 72 LXB_HTML_TOKENIZER_ERROR_MIENTANA = 0x0019, 73 /* missing-quote-before-doctype-public-identifier */ 74 LXB_HTML_TOKENIZER_ERROR_MIQUBEDOPUID = 0x001A, 75 /* missing-quote-before-doctype-system-identifier */ 76 LXB_HTML_TOKENIZER_ERROR_MIQUBEDOSYID = 0x001B, 77 /* missing-semicolon-after-character-reference */ 78 LXB_HTML_TOKENIZER_ERROR_MISEAFCHRE = 0x001C, 79 /* missing-whitespace-after-doctype-public-keyword */ 80 LXB_HTML_TOKENIZER_ERROR_MIWHAFDOPUKE = 0x001D, 81 /* missing-whitespace-after-doctype-system-keyword */ 82 LXB_HTML_TOKENIZER_ERROR_MIWHAFDOSYKE = 0x001E, 83 /* missing-whitespace-before-doctype-name */ 84 LXB_HTML_TOKENIZER_ERROR_MIWHBEDONA = 0x001F, 85 /* missing-whitespace-between-attributes */ 86 LXB_HTML_TOKENIZER_ERROR_MIWHBEAT = 0x0020, 87 /* missing-whitespace-between-doctype-public-and-system-identifiers */ 88 LXB_HTML_TOKENIZER_ERROR_MIWHBEDOPUANSYID = 0x0021, 89 /* nested-comment */ 90 LXB_HTML_TOKENIZER_ERROR_NECO = 0x0022, 91 /* noncharacter-character-reference */ 92 LXB_HTML_TOKENIZER_ERROR_NOCHRE = 0x0023, 93 /* noncharacter-in-input-stream */ 94 LXB_HTML_TOKENIZER_ERROR_NOININST = 0x0024, 95 /* non-void-html-element-start-tag-with-trailing-solidus */ 96 LXB_HTML_TOKENIZER_ERROR_NOVOHTELSTTAWITRSO = 0x0025, 97 /* null-character-reference */ 98 LXB_HTML_TOKENIZER_ERROR_NUCHRE = 0x0026, 99 /* surrogate-character-reference */ 100 LXB_HTML_TOKENIZER_ERROR_SUCHRE = 0x0027, 101 /* surrogate-in-input-stream */ 102 LXB_HTML_TOKENIZER_ERROR_SUININST = 0x0028, 103 /* unexpected-character-after-doctype-system-identifier */ 104 LXB_HTML_TOKENIZER_ERROR_UNCHAFDOSYID = 0x0029, 105 /* unexpected-character-in-attribute-name */ 106 LXB_HTML_TOKENIZER_ERROR_UNCHINATNA = 0x002A, 107 /* unexpected-character-in-unquoted-attribute-value */ 108 LXB_HTML_TOKENIZER_ERROR_UNCHINUNATVA = 0x002B, 109 /* unexpected-equals-sign-before-attribute-name */ 110 LXB_HTML_TOKENIZER_ERROR_UNEQSIBEATNA = 0x002C, 111 /* unexpected-null-character */ 112 LXB_HTML_TOKENIZER_ERROR_UNNUCH = 0x002D, 113 /* unexpected-question-mark-instead-of-tag-name */ 114 LXB_HTML_TOKENIZER_ERROR_UNQUMAINOFTANA = 0x002E, 115 /* unexpected-solidus-in-tag */ 116 LXB_HTML_TOKENIZER_ERROR_UNSOINTA = 0x002F, 117 /* unknown-named-character-reference */ 118 LXB_HTML_TOKENIZER_ERROR_UNNACHRE = 0x0030, 119 LXB_HTML_TOKENIZER_ERROR_LAST_ENTRY = 0x0031, 120 } 121 lxb_html_tokenizer_error_id_t; 122 123 typedef struct { 124 const lxb_char_t *pos; 125 lxb_html_tokenizer_error_id_t id; 126 } 127 lxb_html_tokenizer_error_t; 128 129 130 LXB_API lxb_html_tokenizer_error_t * 131 lxb_html_tokenizer_error_add(lexbor_array_obj_t *parse_errors, 132 const lxb_char_t *pos, 133 lxb_html_tokenizer_error_id_t id); 134 135 136 #ifdef __cplusplus 137 } /* extern "C" */ 138 #endif 139 140 #endif /* LEXBOR_HTML_TOKENIZER_ERROR_H */ 141 142