oak_xml/lexer/
token_type.rs1use oak_core::{Source, Token, TokenType, UniversalElementRole, UniversalTokenRole};
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5pub type XmlToken = Token<XmlTokenType>;
6
7impl TokenType for XmlTokenType {
8 type Role = UniversalTokenRole;
9 const END_OF_STREAM: Self = Self::Error;
10
11 fn is_ignored(&self) -> bool {
12 false
13 }
14
15 fn role(&self) -> Self::Role {
16 match self {
17 _ => UniversalTokenRole::None,
18 }
19 }
20}
21
22#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
23#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
24pub enum XmlTokenType {
25 Root,
27 Whitespace,
28 Newline,
29 Comment,
30 Text,
31 Error,
32 Eof,
33
34 XmlDeclaration,
36 DoctypeDeclaration,
37 ProcessingInstruction,
38 CData,
39
40 StartTag,
42 EndTag,
43 SelfClosingTag,
44 TagName,
45
46 AttributeName,
47 AttributeValue,
48
49 StringLiteral,
51
52 LeftAngle, RightAngle, LeftAngleSlash, SlashRightAngle, Equals, Quote, SingleQuote, Exclamation, Question, Ampersand, Semicolon, EntityReference,
67 CharacterReference,
68
69 Identifier,
71
72 SourceFile,
74 Element,
75 Attribute,
76 Prolog,
77}