⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t042ast.py

📁 antlr最新版本V3源代码
💻 PY
📖 第 1 页 / 共 2 页
字号:
import unittestimport textwrapimport antlr3import testbaseclass t042ast(testbase.ANTLRTest):    def lexerClass(self, base):        class TLexer(base):            def recover(self, input, re):                # no error recovery yet, just crash!                raise        return TLexer        def parserClass(self, base):        class TParser(base):            def recover(self, input, re):                # no error recovery yet, just crash!                raise        return TParser        def parse(self, text, method, rArgs=[], **kwargs):        self.compileGrammar() #options='-trace')                cStream = antlr3.StringStream(text)        self.lexer = self.getLexer(cStream)        tStream = antlr3.CommonTokenStream(self.lexer)        self.parser = self.getParser(tStream)                for attr, val in kwargs.items():            setattr(self.parser, attr, val)                    return getattr(self.parser, method)(*rArgs)        def testR1(self):        r = self.parse("1 + 2", 'r1')        self.failUnlessEqual(            r.tree.toStringTree(),            '(+ 1 2)'            )    def testR2a(self):        r = self.parse("assert 2+3;", 'r2')        self.failUnlessEqual(            r.tree.toStringTree(),            '(assert (+ 2 3))'            )    def testR2b(self):        r = self.parse("assert 2+3 : 5;", 'r2')        self.failUnlessEqual(            r.tree.toStringTree(),            '(assert (+ 2 3) 5)'            )    def testR3a(self):        r = self.parse("if 1 fooze", 'r3')        self.failUnlessEqual(            r.tree.toStringTree(),            '(if 1 fooze)'            )    def testR3b(self):        r = self.parse("if 1 fooze else fooze", 'r3')        self.failUnlessEqual(            r.tree.toStringTree(),            '(if 1 fooze fooze)'            )    def testR4a(self):        r = self.parse("while 2 fooze", 'r4')        self.failUnlessEqual(            r.tree.toStringTree(),            '(while 2 fooze)'            )    def testR5a(self):        r = self.parse("return;", 'r5')        self.failUnlessEqual(            r.tree.toStringTree(),            'return'            )    def testR5b(self):        r = self.parse("return 2+3;", 'r5')        self.failUnlessEqual(            r.tree.toStringTree(),            '(return (+ 2 3))'            )    def testR6a(self):        r = self.parse("3", 'r6')        self.failUnlessEqual(            r.tree.toStringTree(),            '3'            )    def testR6b(self):        r = self.parse("3 a", 'r6')        self.failUnlessEqual(            r.tree.toStringTree(),            '3 a'            )    def testR7(self):        r = self.parse("3", 'r7')        self.failUnlessEqual(            r.tree.toStringTree(),            'nil'            )    def testR8(self):        r = self.parse("var foo:bool", 'r8')        self.failUnlessEqual(            r.tree.toStringTree(),            '(var bool foo)'            )    def testR9(self):        r = self.parse("int foo;", 'r9')        self.failUnlessEqual(            r.tree.toStringTree(),            '(VARDEF int foo)'            )    def testR10(self):        r = self.parse("10", 'r10')        self.failUnlessEqual(            r.tree.toStringTree(),            '10.0'            )    def testR11a(self):        r = self.parse("1+2", 'r11')        self.failUnlessEqual(            r.tree.toStringTree(),            '(EXPR (+ 1 2))'            )    def testR11b(self):        r = self.parse("", 'r11')        self.failUnlessEqual(            r.tree.toStringTree(),            'EXPR'            )    def testR12a(self):        r = self.parse("foo", 'r12')        self.failUnlessEqual(            r.tree.toStringTree(),            'foo'            )    def testR12b(self):        r = self.parse("foo, bar, gnurz", 'r12')        self.failUnlessEqual(            r.tree.toStringTree(),            'foo bar gnurz'            )    def testR13a(self):        r = self.parse("int foo;", 'r13')        self.failUnlessEqual(            r.tree.toStringTree(),            '(int foo)'            )    def testR13b(self):        r = self.parse("bool foo, bar, gnurz;", 'r13')        self.failUnlessEqual(            r.tree.toStringTree(),            '(bool foo bar gnurz)'            )    def testR14a(self):        r = self.parse("1+2 int", 'r14')        self.failUnlessEqual(            r.tree.toStringTree(),            '(EXPR (+ 1 2) int)'            )    def testR14b(self):        r = self.parse("1+2 int bool", 'r14')        self.failUnlessEqual(            r.tree.toStringTree(),            '(EXPR (+ 1 2) int bool)'            )    def testR14c(self):        r = self.parse("int bool", 'r14')        self.failUnlessEqual(            r.tree.toStringTree(),            '(EXPR int bool)'            )    def testR14d(self):        r = self.parse("fooze fooze int bool", 'r14')        self.failUnlessEqual(            r.tree.toStringTree(),            '(EXPR fooze fooze int bool)'            )    def testR14e(self):        r = self.parse("7+9 fooze fooze int bool", 'r14')        self.failUnlessEqual(            r.tree.toStringTree(),            '(EXPR (+ 7 9) fooze fooze int bool)'            )    def testR15(self):        r = self.parse("7", 'r15')        self.failUnlessEqual(            r.tree.toStringTree(),            '7 7'            )    def testR16a(self):        r = self.parse("int foo", 'r16')        self.failUnlessEqual(            r.tree.toStringTree(),            '(int foo)'            )    def testR16b(self):        r = self.parse("int foo, bar, gnurz", 'r16')                    self.failUnlessEqual(            r.tree.toStringTree(),            '(int foo) (int bar) (int gnurz)'            )    def testR17a(self):        r = self.parse("for ( fooze ; 1 + 2 ; fooze ) fooze", 'r17')        self.failUnlessEqual(            r.tree.toStringTree(),            '(for fooze (+ 1 2) fooze fooze)'            )    def testR18a(self):        r = self.parse("for", 'r18')        self.failUnlessEqual(            r.tree.toStringTree(),            'BLOCK'            )    def testR19a(self):        r = self.parse("for", 'r19')        self.failUnlessEqual(            r.tree.toStringTree(),            'for'            )    def testR20a(self):        r = self.parse("for", 'r20')        self.failUnlessEqual(            r.tree.toStringTree(),            'FOR'            )    def testR21a(self):        r = self.parse("for", 'r21')        self.failUnlessEqual(            r.tree.toStringTree(),            'BLOCK'            )    def testR22a(self):        r = self.parse("for", 'r22')        self.failUnlessEqual(            r.tree.toStringTree(),            'for'            )    def testR23a(self):        r = self.parse("for", 'r23')        self.failUnlessEqual(            r.tree.toStringTree(),            'FOR'            )    def testR24a(self):        r = self.parse("fooze 1 + 2", 'r24')        self.failUnlessEqual(            r.tree.toStringTree(),            '(fooze (+ 1 2))'            )    def testR25a(self):        r = self.parse("fooze, fooze2 1 + 2", 'r25')        self.failUnlessEqual(            r.tree.toStringTree(),            '(fooze (+ 1 2))'            )    def testR26a(self):        r = self.parse("fooze, fooze2", 'r26')        self.failUnlessEqual(            r.tree.toStringTree(),            '(BLOCK fooze fooze2)'            )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -