diff --git a/src/parse.py b/src/parse.py index f9fb3a2..b673f10 100644 --- a/src/parse.py +++ b/src/parse.py @@ -1,7 +1,6 @@ # SPDX-License-Identifier: LGPL-2.1-only # Copyright 2022 Jookia -import enum from src.i18n import Message from src.ast_types import Bool, Conditional, Reference, Set, Statement, Text from src.token import TokenStream @@ -28,25 +27,30 @@ # Tasks that happen during parsing -class ParseTask(enum.Enum): - TEST_TASK = enum.auto() # pragma: no mutate - PARSE_NOTE = enum.auto() # pragma: no mutate - CLEAR_NOTES = enum.auto() # pragma: no mutate - PARSE_TEXT = enum.auto() # pragma: no mutate - PARSE_BOOL = enum.auto() # pragma: no mutate - PARSE_REFERENCE = enum.auto() # pragma: no mutate - PARSE_VALUE = enum.auto() # pragma: no mutate - PARSE_STATEMENT = enum.auto() # pragma: no mutate - PARSE_SUBJECT = enum.auto() # pragma: no mutate - PARSE_VERB = enum.auto() # pragma: no mutate - PARSE_ARGUMENT = enum.auto() # pragma: no mutate - PARSE_SET = enum.auto() # pragma: no mutate - PARSE_CONDITIONAL = enum.auto() # pragma: no mutate - PARSE_TEST = enum.auto() # pragma: no mutate - PARSE_SUCCESS = enum.auto() # pragma: no mutate - PARSE_FAILURE = enum.auto() # pragma: no mutate - PARSE_DIRECTIVE = enum.auto() # pragma: no mutate - PARSE_FILE = enum.auto() # pragma: no mutate +class ParseTask: + TEST_TASK = 1 # pragma: no mutate + PARSE_NOTE = 2 # pragma: no mutate + CLEAR_NOTES = 3 # pragma: no mutate + PARSE_TEXT = 4 # pragma: no mutate + PARSE_BOOL = 5 # pragma: no mutate + PARSE_REFERENCE = 6 # pragma: no mutate + PARSE_VALUE = 7 # pragma: no mutate + PARSE_STATEMENT = 8 # pragma: no mutate + PARSE_SUBJECT = 9 # pragma: no mutate + PARSE_VERB = 10 # pragma: no mutate + PARSE_ARGUMENT = 11 # pragma: no mutate + PARSE_SET = 12 # pragma: no mutate + PARSE_CONDITIONAL = 13 # pragma: no mutate + PARSE_TEST = 14 # pragma: no mutate + PARSE_SUCCESS = 15 # pragma: no mutate + PARSE_FAILURE = 16 # pragma: no mutate + PARSE_DIRECTIVE = 17 # pragma: no mutate + PARSE_FILE = 18 # pragma: no mutate + MAX = 19 # pragma: no mutate + + # Returns a list of all tasks + def list(): + return list(range(1, ParseTask.MAX)) # pragma: no mutate # Message identifiers for ParseTasks @@ -100,16 +104,21 @@ # Errors that can happen when parsing -class ParseError(enum.Enum): - TEST_ERROR = enum.auto() # pragma: no mutate - NO_TOKEN = enum.auto() # pragma: no mutate - WRONG_TOKEN = enum.auto() # pragma: no mutate - FOUND_STARTTEXT = enum.auto() # pragma: no mutate - FOUND_STARTNOTE = enum.auto() # pragma: no mutate - NOT_BOOL = enum.auto() # pragma: no mutate - FOUND_ENDNOTE = enum.auto() # pragma: no mutate - RESERVED_NAME = enum.auto() # pragma: no mutate - FOUND_TERMINATOR = enum.auto() # pragma: no mutate +class ParseError: + TEST_ERROR = 1 # pragma: no mutate + NO_TOKEN = 2 # pragma: no mutate + WRONG_TOKEN = 3 # pragma: no mutate + FOUND_STARTTEXT = 4 # pragma: no mutate + FOUND_STARTNOTE = 5 # pragma: no mutate + NOT_BOOL = 6 # pragma: no mutate + FOUND_ENDNOTE = 7 # pragma: no mutate + RESERVED_NAME = 8 # pragma: no mutate + FOUND_TERMINATOR = 9 # pragma: no mutate + MAX = 10 # pragma: no mutate + + # Returns a list of all errors + def list(): + return list(range(1, ParseError.MAX)) # pragma: no mutate # Message identifiers for ParseErrors diff --git a/tests/parse/test_error.py b/tests/parse/test_error.py index 58e9d01..94a325f 100644 --- a/tests/parse/test_error.py +++ b/tests/parse/test_error.py @@ -94,7 +94,7 @@ # Draws a random parse task @composite def draw_parse_task(draw): - return draw(sampled_from(list(ParseTask))) + return draw(sampled_from(ParseTask.list())) # Draws a random parse context without a parent @@ -116,7 +116,7 @@ # Draws a random parse error @composite def draw_parse_error(draw): - return draw(sampled_from(list(ParseError))) + return draw(sampled_from(ParseError.list())) # Draws a random parse error exception