some changes
parent
f3023ba5f4
commit
7b9e5fdf3a
30
main.py
30
main.py
|
@ -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)
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue