Предобработка

This commit is contained in:
2025-05-14 11:57:52 +03:00
parent 681b56b31b
commit 96c9e6db53
2 changed files with 22 additions and 4 deletions

View File

@@ -39,6 +39,11 @@ def load_grammar(filename: str = "grammar.txt") -> Grammar | None:
return None
def tokenize_string(input_string: str) -> list[str]:
input_string = input_string.replace(",", " , ").replace(".", " . ")
return input_string.split()
def check_string(grammar: Grammar | None, input_string: str) -> None:
if not grammar:
print("Ошибка: Грамматика не загружена")
@@ -46,7 +51,18 @@ def check_string(grammar: Grammar | None, input_string: str) -> None:
print(f"Проверка строки: '{input_string}'")
try:
parse_result = grammar.analyze(input_string)
input_tokens = tokenize_string(input_string)
if not input_tokens:
parse_result = grammar.analyze(input_tokens)
else:
try:
input_tokens[0] = input_tokens[0][0].lower() + input_tokens[0][1:]
parse_result = grammar.analyze(input_tokens)
except ValueError as e:
input_tokens[0] = input_tokens[0][0].upper() + input_tokens[0][1:]
parse_result = grammar.analyze(input_tokens)
print(f"Результат: Строка соответствует грамматике")
print(f"Применённые правила: {parse_result}")
@@ -71,7 +87,8 @@ def check_string(grammar: Grammar | None, input_string: str) -> None:
def post_process_string(string: str) -> str:
string = string.capitalize()
if string:
string = string[0].upper() + string[1:]
string = string.replace(" ,", ",")
string = string.replace(" .", ".")
string = string.replace(",.", ".")