Example #1
0
import sys
import ply.yacc as yacc
from Cparser import Cparser
from TypeChecker import TypeChecker
from Interpreter import Interpreter


if __name__ == '__main__':

	try:
		filename = sys.argv[1] if len(sys.argv) > 1 else "example.txt"
		input_file = open(filename, "r")
	except IOError:
		print("Cannot open {0} file".format(filename))
		sys.exit(0)

	Cparser = Cparser()
	parser = yacc.yacc(module=Cparser)
	text = input_file.read()
	ast = parser.parse(text, lexer=Cparser.scanner)
	checker = TypeChecker()
	types_ok = checker.generic_visit(ast)
	#~ print(ast)
	
	if(types_ok):
		interpreter = Interpreter()
		interpreter.generic_execute(ast)