Add a main! Now it works!
This commit is contained in:
parent
6f0d15ee3f
commit
d39a78fae7
36
main.py
Normal file
36
main.py
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
from emis_funky_funktions import *
|
||||||
|
|
||||||
|
from typing import Sequence
|
||||||
|
|
||||||
|
from grammar import lex_and_parse
|
||||||
|
from lex import Lexeme
|
||||||
|
from resolution import derives_false
|
||||||
|
|
||||||
|
def main(args: Sequence[str]) -> Tuple[str, int]:
|
||||||
|
match args[1:]:
|
||||||
|
case [file]:
|
||||||
|
with open(file) as input:
|
||||||
|
match lex_and_parse(input.read()):
|
||||||
|
case Ok(Ok(ir_kb)):
|
||||||
|
return (
|
||||||
|
'no'
|
||||||
|
if derives_false(ir_kb) else
|
||||||
|
'yes',
|
||||||
|
0
|
||||||
|
)
|
||||||
|
case Ok(Err(gen_ir_err)):
|
||||||
|
return (str(gen_ir_err), 102)
|
||||||
|
case Err((Lexeme(token, text, line, col_start, col_end), expected)):
|
||||||
|
return (
|
||||||
|
f'Parse error! Line {line}:{col_start}-{col_end}\n\nGot: {repr(text)}\nExpected: {expected}',
|
||||||
|
101
|
||||||
|
)
|
||||||
|
case _:
|
||||||
|
return (f'Usage: python {args[0]} some_file.cnf', 100)
|
||||||
|
raise Exception('Unreachable')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
from sys import argv
|
||||||
|
out, code = main(argv)
|
||||||
|
print(out)
|
||||||
|
exit(code)
|
Loading…
Reference in a new issue