示例#1
0
    def testTreeVisitor(self):
        tree = "(PRINT (MULT ID[x] (VEC (MULT INT[9] INT[1]) INT[2] INT[3])))"
        adaptor = CommonTreeAdaptor()
        wiz = TreeWizard(adaptor, self.tokenNames)
        t = wiz.create(tree)

        found = []

        def pre(t):
            found.append("pre({})".format(t))
            return t

        def post(t):
            found.append("post({})".format(t))
            return t

        visitor = TreeVisitor(adaptor)
        visitor.visit(t, pre, post)

        expecting = [
            "pre(PRINT)", "pre(MULT)", "pre(x)", "post(x)", "pre(VEC)",
            "pre(MULT)", "pre(9)", "post(9)", "pre(1)", "post(1)",
            "post(MULT)", "pre(2)", "post(2)", "pre(3)", "post(3)",
            "post(VEC)", "post(MULT)", "post(PRINT)"
        ]

        self.assertEqual(expecting, found)
示例#2
0
 def testVerticalList(self):
     adaptor = CommonTreeAdaptor()
     wiz = TreeWizard(adaptor, self.tokens)
     t = wiz.create("(A (B C))")
     it = TreeIterator(t)
     expecting = "A DOWN B DOWN C UP UP EOF"
     found = self.toString(it)
     self.assertEqual(expecting, found)
示例#3
0
 def testFlatAB(self):
     adaptor = CommonTreeAdaptor()
     wiz = TreeWizard(adaptor, self.tokens)
     t = wiz.create("(nil A B)")
     it = TreeIterator(t)
     expecting = "nil DOWN A B UP EOF"
     found = self.toString(it)
     self.assertEqual(expecting, found)
示例#4
0
 def testNode(self):
     adaptor = CommonTreeAdaptor()
     wiz = TreeWizard(adaptor, self.tokens)
     t = wiz.create("A")
     it = TreeIterator(t)
     expecting = "A EOF"
     found = self.toString(it)
     self.assertEqual(expecting, found)
示例#5
0
 def testABC(self):
     adaptor = CommonTreeAdaptor()
     wiz = TreeWizard(adaptor, self.tokens)
     t = wiz.create("(A B C)")
     it = TreeIterator(t)
     expecting = "A DOWN B C UP EOF"
     found = self.toString(it)
     self.assertEquals(expecting, found)
示例#6
0
 def testComplex(self):
     adaptor = CommonTreeAdaptor()
     wiz = TreeWizard(adaptor, self.tokens)
     t = wiz.create("(A (B (C D E) F) G)")
     it = TreeIterator(t)
     expecting = "A DOWN B DOWN C DOWN D E UP F UP G UP EOF"
     found = self.toString(it)
     self.assertEqual(expecting, found)
示例#7
0
 def parse(self, filename):
     input = antlr3.FileStream (filename)
     lexer = MonitorLexer (input)
     tokens = antlr3.CommonTokenStream (lexer)
     parser = MonitorParser (tokens)
     adaptor = CommonTreeAdaptor()
     parser.setTreeAdaptor(adaptor)
     res = parser.description ()
     return res
    def setUp(self):
        """Setup text fixure

        We need a tree adaptor, use CommonTreeAdaptor.
        And a constant list of token names.

        """

        self.adaptor = CommonTreeAdaptor()
        self.tokens = [
            "", "", "", "", "", "A", "B", "C", "D", "E", "ID", "VAR"
            ]
示例#9
0
    def toDOT(self, tree, adaptor=None, treeST=_treeST, edgeST=_edgeST):
        if adaptor is None:
            adaptor = CommonTreeAdaptor()

        treeST = treeST.getInstanceOf()

        self.nodeNumber = 0
        self.toDOTDefineNodes(tree, adaptor, treeST)

        self.nodeNumber = 0
        self.toDOTDefineEdges(tree, adaptor, treeST, edgeST)
        return treeST
示例#10
0
    def testNoParent(self):
        tree = "(PRINT (MULT ID[x] (VEC INT[1] INT[2] INT[3])))"
        adaptor = CommonTreeAdaptor()
        wiz = TreeWizard(adaptor, self.tokenNames)
        t = wiz.create(tree)

        labels = {}
        valid = wiz.parse(t, "(%x:PRINT (MULT ID (VEC INT INT INT)))", labels)
        self.assertTrue(valid)
        node = labels.get("x")

        expecting = False
        found = TreeParser._inContext(adaptor, self.tokenNames, node, "VEC")
        self.assertEqual(expecting, found)
示例#11
0
    def __init__(self, adaptor=None, tokenNames=None, typeMap=None):
        if adaptor is None:
            self.adaptor = CommonTreeAdaptor()

        else:
            self.adaptor = adaptor

        if typeMap is None:
            self.tokenNameToTypeMap = computeTokenTypes(tokenNames)

        else:
            if tokenNames is not None:
                raise ValueError("Can't have both tokenNames and typeMap")

            self.tokenNameToTypeMap = typeMap
示例#12
0
    def testDotDot(self):
        tree = "(PRINT (MULT ID[x] (VEC (MULT INT[9] INT[1]) INT[2] INT[3])))"
        adaptor = CommonTreeAdaptor()
        wiz = TreeWizard(adaptor, self.tokenNames)
        t = wiz.create(tree)

        labels = {}
        valid = wiz.parse(t,
                          "(PRINT (MULT ID (VEC (MULT INT %x:INT) INT INT)))",
                          labels)
        self.assertTrue(valid)
        node = labels.get("x")

        self.assertRaisesRegex(ValueError, r'invalid syntax: \.\.',
                               TreeParser._inContext, adaptor, self.tokenNames,
                               node, "PRINT .. VEC")
示例#13
0
    def testDeepAndFindRoot(self):
        tree = "(PRINT (MULT ID[x] (VEC (MULT INT[9] INT[1]) INT[2] INT[3])))"
        adaptor = CommonTreeAdaptor()
        wiz = TreeWizard(adaptor, self.tokenNames)
        t = wiz.create(tree)

        labels = {}
        valid = wiz.parse(t,
                          "(PRINT (MULT ID (VEC (MULT INT %x:INT) INT INT)))",
                          labels)
        self.assertTrue(valid)
        node = labels.get("x")

        expecting = True
        found = TreeParser._inContext(adaptor, self.tokenNames, node,
                                      "PRINT ...")
        self.assertEqual(expecting, found)
示例#14
0
    def testWildcardAtStartIgnored(self):
        tree = "(nil (ASSIGN ID[x] INT[3]) (PRINT (MULT ID[x] (VEC INT[1] INT[2] INT[3]))))"
        adaptor = CommonTreeAdaptor()
        wiz = TreeWizard(adaptor, self.tokenNames)
        t = wiz.create(tree)

        labels = {}
        valid = wiz.parse(
            t,
            "(nil (ASSIGN ID[x] INT[3]) (PRINT (MULT ID (VEC INT %x:INT INT))))",
            labels)
        self.assertTrue(valid)
        node = labels.get("x")

        expecting = True
        found = TreeParser._inContext(adaptor, self.tokenNames, node, "...VEC")
        self.assertEqual(expecting, found)
示例#15
0
    def testMismatch(self):
        tree = "(PRINT (MULT ID[x] (VEC (MULT INT[9] INT[1]) INT[2] INT[3])))"
        adaptor = CommonTreeAdaptor()
        wiz = TreeWizard(adaptor, self.tokenNames)
        t = wiz.create(tree)

        labels = {}
        valid = wiz.parse(t,
                          "(PRINT (MULT ID (VEC (MULT INT %x:INT) INT INT)))",
                          labels)
        self.assertTrue(valid)
        node = labels.get("x")

        expecting = False
        ## missing MULT
        found = TreeParser._inContext(adaptor, self.tokenNames, node,
                                      "PRINT VEC MULT")
        self.assertEquals(expecting, found)
示例#16
0
    def testDotDot(self):
        tree = "(PRINT (MULT ID[x] (VEC (MULT INT[9] INT[1]) INT[2] INT[3])))"
        adaptor = CommonTreeAdaptor()
        wiz = TreeWizard(adaptor, self.tokenNames)
        t = wiz.create(tree)

        labels = {}
        valid = wiz.parse(t,
                          "(PRINT (MULT ID (VEC (MULT INT %x:INT) INT INT)))",
                          labels)
        self.assertTrue(valid)
        node = labels.get("x")

        try:
            TreeParser._inContext(adaptor, self.tokenNames, node,
                                  "PRINT .. VEC")
            self.fail()
        except ValueError, exc:
            expecting = "invalid syntax: .."
            found = str(exc)
            self.assertEquals(expecting, found)
示例#17
0
    def __init__(self, adaptor=None):
        super(TraceDebugEventListener, self).__init__()

        if adaptor is None:
            adaptor = CommonTreeAdaptor()
        self.adaptor = adaptor
示例#18
0
    def setUp(self):
        """Setup test fixure"""

        self.adaptor = CommonTreeAdaptor()
示例#19
0
 def setUp(self):
     self.adaptor = CommonTreeAdaptor()
 def setUp(self):
     self.adaptor = CommonTreeAdaptor()
     self.tokens = [
         "", "", "", "", "", "A", "B", "C", "D", "E", "ID", "VAR"
         ]
     self.wiz = TreeWizard(self.adaptor, self.tokens)