diff --git a/lab3/programm/grammar.txt b/lab3/programm/grammar.txt index 0225336..0458c02 100644 --- a/lab3/programm/grammar.txt +++ b/lab3/programm/grammar.txt @@ -1,4 +1,5 @@ -Предложение -> ПрямойПорядок | Инверсия +Предложение -> Повествовательное "." +Повествовательное -> ПрямойПорядок | Инверсия ПрямойПорядок -> Подлежащее ДополнениеКПодлежащему Глагол ВторостепенныеЧлены Отрицание Инверсия -> Обстоятельство Глагол Подлежащее ВторостепенныеЧлены Отрицание Подлежащее -> ИменнаяГруппа ПридаточноеПредложение | Местоимение diff --git a/lab3/programm/main.py b/lab3/programm/main.py index efa39ac..5d8b1f4 100644 --- a/lab3/programm/main.py +++ b/lab3/programm/main.py @@ -70,6 +70,14 @@ def check_string(grammar: Grammar | None, input_string: str) -> None: print(f"Произошла ошибка при анализе: {e}") +def post_process_string(string: str) -> str: + string = string.capitalize() + string = string.replace(" ,", ",") + string = string.replace(" .", ".") + string = string.replace(",.", ".") + return string + + def generate_string(grammar: Grammar | None) -> None: if not grammar: print("Ошибка: Грамматика не загружена") @@ -78,6 +86,7 @@ def generate_string(grammar: Grammar | None) -> None: try: terminals, rules = grammar.generate() generated_string = " ".join(terminals) + generated_string = post_process_string(generated_string) print(f"Сгенерированная строка: {generated_string}") print(f"Применённые правила: {rules}")