some changes

master
serr 2025-03-30 18:02:55 +03:00
parent f3023ba5f4
commit 7b9e5fdf3a
3 changed files with 18 additions and 12 deletions

30
main.py
View File

@ -1,20 +1,26 @@
import os import os
import subprocess import subprocess
def main(): # ЭТИ ПУТИ НАДО ЗАДАТЬ ВРУЧНУЮ
# АНАЛИЗАТОРЫ .l, .y ДОЛЖНЫ ИМЕТЬ ОДИНАКОВЫЙ basename
# Подготовка констант # И ЛЕЖАТЬ В ПАПАКЕ С ИМЕНЕМ basename
ANALYZERS_DIR = r'C:\Users\user\Desktop\УЧЕБА\6_СЕМ\КОМПИЛЯТОРЫ\flex_bison_test\analyzers\calc'
FLEX_EXE_PATH = r"C:\tools\win_flex_bison\win_flex.exe" FLEX_EXE_PATH = r"C:\tools\win_flex_bison\win_flex.exe"
BISON_EXE_PATH = r"C:\tools\win_flex_bison\win_bison.exe" BISON_EXE_PATH = r"C:\tools\win_flex_bison\win_bison.exe"
ANALYZER_NAME = f'calc' # basename .l, .y файлов #
LEXICAL_ANALYZER_PATH = fr"analyzers\{ANALYZER_NAME}.l"
SYNTAXIC_ANALYZER_PATH = fr"analyzers\{ANALYZER_NAME}.y" def main():
# Подготовка путей
analyzer_name = os.path.basename(ANALYZERS_DIR)
lexical_analyzer_path = fr"{ANALYZERS_DIR}\{analyzer_name}.l"
syntaxic_analyzer_path = fr"{ANALYZERS_DIR}\{analyzer_name}.y"
# #
# Подготовка списка команд # Подготовка списка команд
cmds = [f'{FLEX_EXE_PATH} {LEXICAL_ANALYZER_PATH}', cmds = [f'{FLEX_EXE_PATH} {lexical_analyzer_path}',
f'{BISON_EXE_PATH} -d {SYNTAXIC_ANALYZER_PATH}', f'{BISON_EXE_PATH} -d {syntaxic_analyzer_path}',
f'gcc lex.yy.c {ANALYZER_NAME}.tab.c -o {ANALYZER_NAME}.exe'] f'gcc lex.yy.c {analyzer_name}.tab.c -o {analyzer_name}.exe']
# #
# Исполнение команд # Исполнение команд
@ -26,10 +32,10 @@ def main():
print(f"\033[91mError during export: {e}\033[0m") print(f"\033[91mError during export: {e}\033[0m")
# #
# Очистка # Очистка промежуточных файлов
for path in ['lex.yy.c', for path in ['lex.yy.c',
f'{ANALYZER_NAME}.tab.c', f'{analyzer_name}.tab.c',
f'{ANALYZER_NAME}.tab.h']: f'{analyzer_name}.tab.h']:
os.remove(path) os.remove(path)
# #