boom
This commit is contained in:
commit
1ac693fdc2
9 changed files with 670 additions and 0 deletions
36
Calculator.py
Normal file
36
Calculator.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
from interpeter import Interpeter
|
||||
from ParserError import ParserError
|
||||
from lexer import Lexer
|
||||
import traceback
|
||||
from parser_ import Parser
|
||||
# 1 % [2 + !3 * 8] @ 2 $ -321.123 - ~12 + 221 & 1000 ^ -1
|
||||
|
||||
def main():
|
||||
|
||||
while True:
|
||||
|
||||
try:
|
||||
expr = input("> ")
|
||||
expr = Parser.strip_str(expr)
|
||||
lexer = Lexer(expr)
|
||||
tokens = lexer.generate_tokens()
|
||||
parser = Parser(tokens)
|
||||
tree = parser.parse()
|
||||
if not tree: continue
|
||||
interpeter = Interpeter()
|
||||
value = interpeter.visit(tree)
|
||||
print(value)
|
||||
|
||||
|
||||
except ParserError as e:
|
||||
print("ParserError: ", str(e))
|
||||
|
||||
except Exception as e:
|
||||
print(type(e), end ='')
|
||||
print(" occured\n" + str(e))
|
||||
traceback.print_exc()
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue