Coverage for src/m6rclib/metaphor_token.py: 100%
25 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-01-22 17:09 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-01-22 17:09 +0000
1# Copyright 2024 M6R Ltd.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
15from dataclasses import dataclass
16from enum import IntEnum
18class TokenType(IntEnum):
19 """
20 Enum-like class representing different types of tokens in the source file.
21 """
22 NONE: int = 0
23 INDENT: int = 1
24 OUTDENT: int = 2
25 INCLUDE: int = 3
26 EMBED: int = 4
27 KEYWORD_TEXT: int = 5
28 TEXT: int = 6
29 ACTION: int = 7
30 CONTEXT: int = 8
31 ROLE: int = 9
32 BAD_INDENT: int = 10
33 BAD_OUTDENT: int = 11
34 TAB: int = 12
35 END_OF_FILE: int = 13
38@dataclass(frozen=True)
39class Token:
40 """
41 Represents a token in the input stream.
43 Attributes:
44 type (TokenType): The type of the token (e.g., TEXT, ACTION).
45 value (str): The actual string value of the token.
46 input (str): The entire line of input where the token appears.
47 filename (str): The file where the token was read from.
48 line (int): The line number in the file where the token is located.
49 column (int): The column number where the token starts.
50 """
51 type: TokenType
52 value: str
53 input: str
54 filename: str
55 line: int
56 column: int