Генерация случайной строки
This commit is contained in:
@@ -34,8 +34,6 @@ print(f"Analyzing input '{input_string}':")
|
||||
parse_result = grammar.analyze(input_string)
|
||||
print(f"Applied rules: {parse_result}")
|
||||
|
||||
rule_details = {num: rule for rule, num in grammar.rule_numbers.items()}
|
||||
|
||||
with open("analysis_result.txt", "w", encoding="utf-8") as f:
|
||||
f.write(f"Input: {input_string}\n")
|
||||
f.write("Applied rules: ")
|
||||
@@ -43,19 +41,33 @@ with open("analysis_result.txt", "w", encoding="utf-8") as f:
|
||||
f.write("\n\n")
|
||||
f.write("Derivation steps:\n")
|
||||
|
||||
current = grammar.start_symbol
|
||||
f.write(f"{current}\n")
|
||||
|
||||
for rule_num in parse_result:
|
||||
non_terminal, replacement = rule_details[rule_num]
|
||||
|
||||
words = current.split()
|
||||
for i, word in enumerate(words):
|
||||
if word == non_terminal:
|
||||
words[i : i + 1] = replacement
|
||||
break
|
||||
|
||||
current = " ".join(words)
|
||||
f.write(f"{current}\n")
|
||||
derivation_steps = grammar.generate_derivation_steps(parse_result)
|
||||
for step in derivation_steps:
|
||||
f.write(f"{step}\n")
|
||||
|
||||
print("Результат анализа сохранен в analysis_result.txt")
|
||||
|
||||
# Тестирование функции генерации строк
|
||||
print("\nГенерация строк по грамматике:")
|
||||
for i in range(5):
|
||||
terminals, rules = grammar.generate()
|
||||
generated_string = " ".join(terminals)
|
||||
print(f"Сгенерированная строка {i+1}: {generated_string}")
|
||||
print(f"Применённые правила: {rules}")
|
||||
|
||||
# Запись одной сгенерированной строки в файл
|
||||
with open("generation_result.txt", "w", encoding="utf-8") as f:
|
||||
terminals, rules = grammar.generate()
|
||||
generated_string = " ".join(terminals)
|
||||
|
||||
f.write(f"Generated string: {generated_string}\n")
|
||||
f.write("Applied rules: ")
|
||||
f.write(str(rules))
|
||||
f.write("\n\n")
|
||||
f.write("Derivation steps:\n")
|
||||
|
||||
derivation_steps = grammar.generate_derivation_steps(rules)
|
||||
for step in derivation_steps:
|
||||
f.write(f"{step}\n")
|
||||
|
||||
print("Результат генерации сохранен в generation_result.txt")
|
||||
|
||||
Reference in New Issue
Block a user