41 SETTING_HEADER =
'SETTING HEADER'
42 VARIABLE_HEADER =
'VARIABLE HEADER'
43 TESTCASE_HEADER =
'TESTCASE HEADER'
44 TASK_HEADER =
'TASK HEADER'
45 KEYWORD_HEADER =
'KEYWORD HEADER'
46 COMMENT_HEADER =
'COMMENT HEADER'
48 TESTCASE_NAME =
'TESTCASE NAME'
49 KEYWORD_NAME =
'KEYWORD NAME'
51 DOCUMENTATION =
'DOCUMENTATION'
52 SUITE_SETUP =
'SUITE SETUP'
53 SUITE_TEARDOWN =
'SUITE TEARDOWN'
55 TEST_SETUP =
'TEST SETUP'
56 TEST_TEARDOWN =
'TEST TEARDOWN'
57 TEST_TEMPLATE =
'TEST TEMPLATE'
58 TEST_TIMEOUT =
'TEST TIMEOUT'
59 FORCE_TAGS =
'FORCE TAGS'
60 DEFAULT_TAGS =
'DEFAULT TAGS'
61 KEYWORD_TAGS =
'KEYWORD TAGS'
64 VARIABLES =
'VARIABLES'
70 ARGUMENTS =
'ARGUMENTS'
74 RETURN_SETTING = RETURN
81 WITH_NAME =
'WITH NAME'
83 FOR_SEPARATOR =
'FOR SEPARATOR'
86 INLINE_IF =
'INLINE IF'
94 RETURN_STATEMENT =
'RETURN STATEMENT'
99 SEPARATOR =
'SEPARATOR'
101 CONTINUATION =
'CONTINUATION'
107 FATAL_ERROR =
'FATAL ERROR'
109 NON_DATA_TOKENS = frozenset((
116 SETTING_TOKENS = frozenset((
139 HEADER_TOKENS = frozenset((
147 ALLOW_VARIABLES = frozenset((
154 __slots__ = [
'type',
'value',
'lineno',
'col_offset',
'error',
155 '_add_eos_before',
'_add_eos_after']
157 def __init__(self, type=None, value=None, lineno=-1, col_offset=-1, error=None):
161 Token.IF:
'IF', Token.INLINE_IF:
'IF', Token.ELSE_IF:
'ELSE IF',
162 Token.ELSE:
'ELSE', Token.FOR:
'FOR', Token.WHILE:
'WHILE',
163 Token.TRY:
'TRY', Token.EXCEPT:
'EXCEPT', Token.FINALLY:
'FINALLY',
164 Token.END:
'END', Token.CONTINUE:
'CONTINUE', Token.BREAK:
'BREAK',
165 Token.RETURN_STATEMENT:
'RETURN', Token.CONTINUATION:
'...',
166 Token.EOL:
'\n', Token.WITH_NAME:
'WITH NAME', Token.AS:
'AS'
177 end_col_offset = property
185 self.
typetype = Token.ERROR
if not fatal
else Token.FATAL_ERROR
186 self.
errorerror = error
197 if self.
typetype
not in Token.ALLOW_VARIABLES:
199 variables = VariableIterator(self.
valuevalue)
208 lineno = self.
linenolineno
211 for before, variable, remaining
in variables:
213 yield Token(self.
typetype, before, lineno, col_offset)
214 col_offset += len(before)
215 yield Token(Token.VARIABLE, variable, lineno, col_offset)
216 col_offset += len(variable)
218 yield Token(self.
typetype, remaining, lineno, col_offset)
221 return self.
valuevalue
224 type_ = self.
typetype.replace(
' ',
'_')
if self.
typetype
else 'None'
225 error =
'' if not self.
errorerror
else ', %r' % self.
errorerror
226 return 'Token(%s, %r, %s, %s%s)' % (type_, self.
valuevalue, self.
linenolineno,
230 return (isinstance(other, Token)
231 and self.
typetype == other.type
232 and self.
valuevalue == other.value
233 and self.
linenolineno == other.lineno
234 and self.
col_offsetcol_offset == other.col_offset
235 and self.
errorerror == other.error)
243 Token.__init__(self, Token.EOS,
'', lineno, col_offset)
247 col_offset = token.col_offset
if before
else token.end_col_offset
248 return EOS(token.lineno, col_offset)
259 def __init__(self, lineno=-1, col_offset=-1, virtual=False):
260 value =
'END' if not virtual
else ''
261 Token.__init__(self, Token.END, value, lineno, col_offset)
265 return END(token.lineno, token.end_col_offset, virtual)
Token representing END token used to signify block ending.
def from_token(cls, token, virtual=False)
def __init__(self, lineno=-1, col_offset=-1, virtual=False)
Token representing end of a statement.
def from_token(cls, token, before=False)
def __init__(self, lineno=-1, col_offset=-1)
Token representing piece of Robot Framework data.
def tokenize_variables(self)
Tokenizes possible variables in token value.
def set_error(self, error, fatal=False)
def __init__(self, type=None, value=None, lineno=-1, col_offset=-1, error=None)
def _tokenize_no_variables(self)
def _tokenize_variables(self, variables)