Example #1
0
    def test_eof(self):
        NoSym = ANTLR(r"""
            grammar NoSym ;

            start: expr * EOF;
            expr: 'a';
        """)
        tree = str(NoSym.tree('aa', 'start'))
        self.assertEqual(
            tree,
            r"({'type': 'rule', 'name': 'start', 'rule': 'start'}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr'}: ({'type': 'token', 'name': 'a', 'value': 'a'})), ({'type': 'rule', 'name': 'expr', 'rule': 'expr'}: ({'type': 'token', 'name': 'a', 'value': 'a'})))"
        )
Example #2
0
    def test_nolexersym(self):
        NoSym = ANTLR(r"""
            grammar NoSym ;

            start: expr * ;
            expr: 'a';
        """)
        tree = str(NoSym.tree('aa', 'start'))
        self.assertEqual(
            tree,
            r"({'type': 'rule', 'name': 'start', 'rule': 'start', 'src': (0, 1)}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr', 'src': (0, 0)}: ({'type': 'token', 'name': 'a', 'value': 'a', 'src': 0})), ({'type': 'rule', 'name': 'expr', 'rule': 'expr', 'src': (1, 1)}: ({'type': 'token', 'name': 'a', 'value': 'a', 'src': 1})))"
        )
Example #3
0
    def test_tree(self):
        Bad = ANTLR(r"""
            grammar Bad ;

            start: expr ;
            expr: ID | expr OP ID | expr '*' ID;

            OP: '+' | '-' ;
            ID: [a-z];
        """)
        tree = str(Bad.tree('z-a+a*x', 'start'))
        self.assertEqual(
            tree,
            r"({'type': 'rule', 'name': 'start', 'rule': 'start'}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr'}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr'}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr'}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr'}: ({'type': 'token', 'name': 'ID', 'value': 'z'})), ({'type': 'token', 'name': 'OP', 'value': '-'}), ({'type': 'token', 'name': 'ID', 'value': 'a'})), ({'type': 'token', 'name': 'OP', 'value': '+'}), ({'type': 'token', 'name': 'ID', 'value': 'a'})), ({'type': 'token', 'name': '*', 'value': '*'}), ({'type': 'token', 'name': 'ID', 'value': 'x'})))"
        )
Example #4
0
    def test_tree_simple(self):
        Bad = ANTLR(r"""
            grammar Bad ;

            start: expr ;
            expr: ID | expr OP ID | expr '*' ID;

            OP: '+' | '-' ;
            ID: [a-z];
        """)
        tree = str(Bad.tree('z-a+a*x', 'start', simple=True))
        self.assertEqual(
            tree,
            "(start: (expr: (expr: (expr: (expr: (z)), (-), (a)), (+), (a)), (*), (x)))"
        )
Example #5
0
    def test_tree(self):
        Bad = ANTLR(r"""
            grammar Bad ;

            start: expr ;
            expr: ID | expr OP ID | expr '*' ID;

            OP: '+' | '-' ;
            ID: [a-z];
        """)
        tree = str(Bad.tree('z-a+a*x', 'start'))
        self.assertEqual(
            tree,
            r"({'type': 'rule', 'name': 'start', 'rule': 'start', 'src': (0, 6)}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr', 'src': (0, 6)}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr', 'src': (0, 4)}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr', 'src': (0, 2)}: ({'type': 'rule', 'name': 'expr', 'rule': 'expr', 'src': (0, 0)}: ({'type': 'token', 'name': 'ID', 'value': 'z', 'src': 0})), ({'type': 'token', 'name': 'OP', 'value': '-', 'src': 1}), ({'type': 'token', 'name': 'ID', 'value': 'a', 'src': 2})), ({'type': 'token', 'name': 'OP', 'value': '+', 'src': 3}), ({'type': 'token', 'name': 'ID', 'value': 'a', 'src': 4})), ({'type': 'token', 'name': '*', 'value': '*', 'src': 5}), ({'type': 'token', 'name': 'ID', 'value': 'x', 'src': 6})))"
        )