Mercurial > lcfOS
view test/test_burm.py @ 394:988f3fb861e4
c3 code generator rewrite
author | Windel Bouwman |
---|---|
date | Thu, 22 May 2014 08:14:12 +0200 |
parents | 8c569fbe60e4 |
children |
line wrap: on
line source
import unittest import io import argparse from tree import Tree import pyburg class testBURG(unittest.TestCase): def testSample4(self): """ Test sample4 burg system """ # Generate matcher from spec: buf = io.StringIO() args = argparse.Namespace(source=open('sample4.brg'), output=buf) pyburg.main(args) # Execute generated script into global scope: exec(buf.getvalue(), globals()) # Sample tree: t = Tree('ASGNI', Tree('ADDRLP'), Tree('ADDI', Tree('CVCI', Tree('INDIRC', Tree('ADDRLP'))), Tree('CNSTI') ) ) # Subclass generated matcher: class MyMatcher(Matcher): def __init__(self): super().__init__() self.trace = [] def tr(self, r): self.trace.append(r) # Match tree: mm = MyMatcher() mm.gen(t) self.assertSequenceEqual([8,8,4,11,9,3,1], mm.trace) if __name__ == '__main__': unittest.main()