Se utiliza SLY para implementar el parser y lexer de la gramática pedida.
Este repositorio contiene los siguientes archivos
lexer.py
: lexer de Flechaparser.py
: parser de Flechaast.py
: ast de Flechaserializer.py
: serializador de Flechacompiler.py
: compilador de Flecha a Mamarrachoenv.py
: entorno de variablesinstructions.py
: instrucciones de compilaciónmain.py
: parsea e imprime un ast del programa Flecha- los scripts:
test_parser.sh
, ejecuta el parser con un archivo de prueba dentro de la carpetatests_parser
y compara su salidatest_all_parser.sh
, ejecuta el parser con todos los archivos de prueba de la carpetatests_parser
test_compiler.sh
, ejecuta el compilador con un archivo de prueba dentro de la carpetatest_codegen_v2/test_codegen
y compara su salidatest_all_compiler.sh
, ejecuta el compilador con todos los archivos de prueba de la carpetatest_codegen_v2/test_codegen
Se necesita instalar SLY y Python 3.6 >=, para esto vamos a instalar dos dependencias pyenv y pipenv. Una vez instalados, instalamos la versión python 3.7 de Python con pyenv
pyenv install 3.8
Luego, en la raíz del repositorio generamos un entorno virtual utilizando la versión 3.8 de Pythonpipenv --python 3.8
Inicializamos el entorno virtualpipenv shell
Finalmente instalamos las dependenciaspipenv install
Se pueden utilizar los scripts generados para realizar las pruebas del parser, por ejemplo: Probar todos los casos de prueba.
./test_all_parser.sh
o./test_all_compiler.sh
O, usando main.py
python -m src.main tests_parser/test00.input
- Pyenv installer: https://github.com/pyenv/pyenv-installer