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

📄 t044trace.py

📁 antlr最新版本V3源代码
💻 PY
字号:
import antlr3import testbaseimport unittestclass T(testbase.ANTLRTest):    def setUp(self):        self.compileGrammar(options='-trace')            def lexerClass(self, base):        class TLexer(base):            def __init__(self, *args, **kwargs):                base.__init__(self, *args, **kwargs)                self.traces = []            def traceIn(self, ruleName, ruleIndex):                self.traces.append('>'+ruleName)            def traceOut(self, ruleName, ruleIndex):                self.traces.append('<'+ruleName)            def recover(self, input, re):                # no error recovery yet, just crash!                raise        return TLexer                def parserClass(self, base):        class TParser(base):            def __init__(self, *args, **kwargs):                base.__init__(self, *args, **kwargs)                self.traces = []            def traceIn(self, ruleName, ruleIndex):                self.traces.append('>'+ruleName)            def traceOut(self, ruleName, ruleIndex):                self.traces.append('<'+ruleName)            def recover(self, input, re):                # no error recovery yet, just crash!                raise            def getRuleInvocationStack(self):                return self._getRuleInvocationStack(base.__module__)                    return TParser                def testTrace(self):        cStream = antlr3.StringStream('< 1 + 2 + 3 >')        lexer = self.getLexer(cStream)        tStream = antlr3.CommonTokenStream(lexer)        parser = self.getParser(tStream)        parser.a()        self.failUnlessEqual(            lexer.traces,            [ '>T6', '<T6', '>WS', '<WS', '>INT', '<INT', '>WS', '<WS',              '>T8', '<T8', '>WS', '<WS', '>INT', '<INT', '>WS', '<WS',              '>T8', '<T8', '>WS', '<WS', '>INT', '<INT', '>WS', '<WS',              '>T7', '<T7']            )        self.failUnlessEqual(            parser.traces,            [ '>a', '>synpred1_fragment', '<synpred1_fragment', '>b', '>c',              '<c', '>c', '<c', '>c', '<c', '<b', '<a' ]            )                def testInvokationStack(self):        cStream = antlr3.StringStream('< 1 + 2 + 3 >')        lexer = self.getLexer(cStream)        tStream = antlr3.CommonTokenStream(lexer)        parser = self.getParser(tStream)        parser.a()        self.failUnlessEqual(            parser._stack,            ['a', 'b', 'c']            )        if __name__ == '__main__':    unittest.main()    

⌨️ 快捷键说明

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