29 lines
823 B
Bash
Executable file
29 lines
823 B
Bash
Executable file
#!/bin/bash
|
|
|
|
program=${1}
|
|
command=${2}
|
|
if [[ "x${program}" == "x" ]]; then
|
|
usage "${0} <program>.mn [lex|parse|run]"
|
|
exit 1
|
|
fi
|
|
if [[ "x${command}" == "x" ]]; then
|
|
command="run"
|
|
fi
|
|
|
|
if [[ "${command}" == "lex" ]]; then
|
|
./lexer.py ${program} | jq . > ${program}.tokens && cat ${program}.tokens
|
|
rm ${program}.tokens
|
|
exit 0
|
|
fi
|
|
if [[ "${command}" == "parse" ]]; then
|
|
./lexer.py ${program} | jq . > ${program}.tokens && ./parser.py ${program}.tokens | jq . > ${program}.ast && cat ${program}.ast
|
|
rm ${program}.tokens ${program}.ast
|
|
exit 0
|
|
fi
|
|
if [[ "${command}" == "run" ]]; then
|
|
./lexer.py ${program} | jq . > ${program}.tokens && ./parser.py ${program}.tokens | jq . > ${program}.ast && ./interpreter.py ${program}.ast
|
|
rm ${program}.tokens ${program}.ast
|
|
exit 0
|
|
fi
|
|
usage "${0} <program>.mn [lex|parse|run]"
|
|
exit 1
|