16 from ..lexer
import Token
17 from ..model
import TestCase, Keyword, For, If, Try, While
27 raise NotImplementedError
30 raise NotImplementedError
34 unhandled_tokens = Token.HEADER_TOKENS | frozenset((Token.TESTCASE_NAME,
38 Parser.__init__(self, model)
42 Token.INLINE_IF: IfParser,
44 Token.WHILE: WhileParser
51 parser_class = self.
nested_parsersnested_parsers.get(statement.type)
53 parser = parser_class(statement)
54 self.
modelmodel.body.append(parser.model)
56 self.
modelmodel.body.append(statement)
63 BlockParser.__init__(self,
TestCase(header))
69 BlockParser.__init__(self,
Keyword(header))
75 return BlockParser.handles(self, statement)
and \
76 not getattr(self.
modelmodel,
'end',
False)
79 if statement.type == Token.END:
80 self.
modelmodel.end = statement
82 return BlockParser.parse(self, statement)
88 NestedBlockParser.__init__(self,
For(header))
98 if statement.type
in (Token.ELSE_IF, Token.ELSE):
99 parser =
IfParser(statement, handle_end=
False)
100 self.
modelmodel.orelse = parser.model
102 return NestedBlockParser.parse(self, statement)
105 if statement.type == Token.END
and not self.
handle_endhandle_end:
107 return super().
handles(statement)
117 if statement.type
in (Token.EXCEPT, Token.ELSE, Token.FINALLY):
118 parser =
TryParser(statement, handle_end=
False)
119 self.
modelmodel.next = parser.model
121 return super().
parse(statement)
124 if statement.type == Token.END
and not self.
handle_endhandle_end:
126 return super().
handles(statement)
Represents IF structures in the model.
def __init__(self, model)
def handles(self, statement)
def parse(self, statement)
def __init__(self, header)
def parse(self, statement)
def __init__(self, header, handle_end=True)
def handles(self, statement)
def __init__(self, header)
def handles(self, statement)
def parse(self, statement)
def __init__(self, model)
def parse(self, statement)
def handles(self, statement)
def __init__(self, header)
def parse(self, statement)
def handles(self, statement)
def __init__(self, header, handle_end=True)
def __init__(self, header)