Exemplo n.º 1
0
from importlib.machinery import SourceFileLoader

parser = SourceFileLoader("module", "parser.py").load_module()

tests = [
	["base0", "var a int;", ['var', 'a', 'int', False, None] ],
	["base1", "var a int = 1;", ['var', 'a', 'int', False, 1] ],
	["base2", "var a [2]int = {0,1};", ['var', 'a', 'int', False, 1] ],
	["template0", "template a() {}", ['template', 'a', [], False, []] ],
	["template1", "template a(b bit) {}", ['template', 'a', [['b', 'bit']], False, []] ],
]

grammar = parser.prepare_grammar()

n_pass = 0
for test in tests:
	name = test[0]
	code = test[1]
	expected_ast = test[2]
	ast = []
	try:
		ast = grammar.parseString(code)
		if ast != expected_ast:
			raise
		print(name + " : passed")
		n_pass = n_pass + 1
	except:
		print(name + " : failed")
		print("\tcode    : {}".format(code))
		print("\texpected: {}".format(expected_ast))
		print("\t     got: {}".format(ast))