コード例 #1
0
ファイル: test.py プロジェクト: SillyFreak/gsl
    def test_antlr_expr(self):
        from tests.grammar.ExprTestLexer import ExprTestLexer
        from tests.grammar.ExprTestParser import ExprTestParser
        from tests.grammar.ExprTestVisitor import ExprTestVisitor as _ExprTestVisitor

        class ExprTestVisitor(_ExprTestVisitor):
            def visitNumber(self, ctx: ExprTestParser.NumberContext):
                return int(super(ExprTestVisitor, self).visitNumber(ctx))

        antlr = Antlr(ExprTestLexer, ExprTestParser)

        p = antlr.parser(antlr.input_stream("1 + 2 * 3 + (4 + 5)"))
        expr = antlr.parse_safe(p.expr)
        model = expr.accept(ExprTestVisitor())

        self.assertEqual(model, [[1], '+', [2, '*', 3], '+', [[[4], '+', [5]]]])
コード例 #2
0
ファイル: test.py プロジェクト: SillyFreak/gsl
    def test_antlr_set(self):
        from tests.grammar.SetTestLexer import SetTestLexer
        from tests.grammar.SetTestParser import SetTestParser
        from tests.grammar.SetTestVisitor import SetTestVisitor as _SetTestVisitor

        class SetTestVisitor(_SetTestVisitor):
            def visitIntElement(self, ctx: SetTestParser.IntElementContext):
                return int(super(SetTestVisitor, self).visitIntElement(ctx))

        antlr = Antlr(SetTestLexer, SetTestParser)

        p = antlr.parser(antlr.input_stream("{1, 2, {}, {3}}"))
        expr = antlr.parse_safe(p.expr)
        model = expr.accept(SetTestVisitor())

        self.assertEqual(model, [1, 2, [], [3]])