30 lines
823 B
Text
30 lines
823 B
Text
|
#!/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
|