diff --git a/src/parse.py b/src/parse.py index f8df467..57617e9 100644 --- a/src/parse.py +++ b/src/parse.py @@ -334,16 +334,17 @@ else: return self.parse_statement(stream, context, "Done") - # Parses a file - def parse_file(self, stream, parent_context): - context = ParseContext(ParseTask.PARSE_FILE, stream.peek(), parent_context) - directives = [] + +# Parses a file +def parse_file(stream, parent_context): + context = ParseContext(ParseTask.PARSE_FILE, stream.peek(), parent_context) + directives = [] + next = stream.peek() + while next is not None: + dir = Parser().parse_directive(stream, context) # pragma: no mutate + directives.append(dir) next = stream.peek() - while next is not None: - dir = self.parse_directive(stream, context) # pragma: no mutate - directives.append(dir) - next = stream.peek() - return directives + return directives # Parses tokens @@ -351,7 +352,7 @@ stream = TokenStream(tokens) cleared = clear_notes(stream, context) stream2 = TokenStream(cleared) - parsed = Parser().parse_file(stream2, context) + parsed = parse_file(stream2, context) return parsed diff --git a/tests/parse/test_file.py b/tests/parse/test_file.py index a84aebe..db27b21 100644 --- a/tests/parse/test_file.py +++ b/tests/parse/test_file.py @@ -19,7 +19,7 @@ from src.parse import ( ParseContext, ParseTask, - Parser, + parse_file, ) from tests.parse.templates import template_test_invalid from tests.parse.test_error import static_parse_context @@ -54,7 +54,7 @@ def test_parse_file_valid(test_data): (tokens, expected) = test_data stream = TokenStream(tokens.copy()) - parsed = Parser().parse_file(stream, None) + parsed = parse_file(stream, None) assert parsed == expected assert stream.pop() is None @@ -68,8 +68,7 @@ (tokens, expected) = test_data invalid_directive = static_directive_invalid() new_tokens = tokens + invalid_directive - parser = Parser().parse_file parent_context = static_parse_context() context = ParseContext(ParseTask.PARSE_FILE, new_tokens[0], parent_context) error = static_directive_invalid_error(context) - template_test_invalid(parser, parent_context, new_tokens, error) + template_test_invalid(parse_file, parent_context, new_tokens, error) diff --git a/tests/parse/test_parse.py b/tests/parse/test_parse.py index f9bcce3..edd55db 100644 --- a/tests/parse/test_parse.py +++ b/tests/parse/test_parse.py @@ -7,8 +7,8 @@ from src.parse import ( clear_notes, ParseErrorException, - Parser, parse, + parse_file, ) from src.token import TokenStream from tests.test_token import draw_token_random @@ -27,7 +27,7 @@ stream = TokenStream(tokens.copy()) cleared = clear_notes(stream, context) stream2 = TokenStream(cleared) - result = Parser().parse_file(stream2, context) + result = parse_file(stream2, context) except ParseErrorException as e: result = e try: