Example #1
0
 def test_interp(self):
     assert self.parse_expr(r'``') == ast.InterpString([''], [])
     assert self.parse_expr(r'`${1}`') == ast.InterpString(
         ['', ''], [ast.Number(1)])
     assert self.parse_expr(r'`foo${1}bar`') == ast.InterpString(
         ['foo', 'bar'], [ast.Number(1)])
     assert self.parse_expr(r'`${1 + 2}`') == ast.InterpString(
         ['', ''], [ast.BinOp('+', ast.Number(1), ast.Number(2), oppos=(18, 19))])
Example #2
0
 def test_var(self):
     r = self.parse('''
         let x;
         x = 3;
         x = x + 1;
         ''')
     assert r == [
         ast.VarDeclaration([ast.Var('x', ast.NoTypeDecl(), None)]),
         ast.Assignment('x', ast.Number(3)),
         ast.Assignment('x', ast.BinOp('+', ast.Identifier('x'),
                                       ast.Number(1), oppos=(46, 47)))]
Example #3
0
 def test_var(self):
     r = self.parse('''
         var x;
         x = 3;
         x = x + 1;
         ''')
     assert r == [
         ast.VarDeclaration(['x']),
         ast.Assignment('x', ast.Number(3)),
         ast.Assignment('x',
                        ast.BinOp('+', ast.Identifier('x'), ast.Number(1)))
     ]
Example #4
0
 def test_while_loop(self):
     r = self.parse('''
         let i, s;
         i = 0;
         while i < 10 {
             i = i + 1;
             s = s + i;
         }
         return s;
         ''')
     assert r == [
         ast.VarDeclaration([ast.Var('i', ast.NoTypeDecl(), None),
                             ast.Var('s', ast.NoTypeDecl(), None)]),
         ast.Assignment('i', ast.Number(0)),
         ast.While(
             ast.BinOp('<', ast.Identifier('i'), ast.Number(10), oppos=(51, 52)), [
                 ast.Assignment('i', ast.BinOp(
                     '+', ast.Identifier('i'), ast.Number(1), oppos=(72, 73))),
                 ast.Assignment('s', ast.BinOp(
                     '+', ast.Identifier('s'), ast.Identifier('i'), oppos=(91, 92)))]),
         ast.Return(ast.Identifier('s'))]
Example #5
0
 def test_while_loop(self):
     r = self.parse('''
         var i, s;
         i = 0;
         while i < 10 {
             i = i + 1;
             s = s + i;
         }
         return s;
         ''')
     assert r == [
         ast.VarDeclaration(['i', 's']),
         ast.Assignment('i', ast.Number(0)),
         ast.While(ast.BinOp('<', ast.Identifier('i'), ast.Number(10)), [
             ast.Assignment(
                 'i', ast.BinOp('+', ast.Identifier('i'), ast.Number(1))),
             ast.Assignment(
                 's',
                 ast.BinOp('+', ast.Identifier('s'), ast.Identifier('i')))
         ]),
         ast.Return(ast.Identifier('s'))
     ]
Example #6
0
 def expression_not_in_expression(state, p):
     return ast.BinOp('not in', p[0], p[3], sr([p[1], p[2]]), srcpos=sr(p))
Example #7
0
 def expression_binop_expression(state, p):
     return ast.BinOp(p[1].getstr(), p[0], p[2], sr([p[1]]), srcpos=sr(p))
Example #8
0
 def test_add(self):
     assert self.parse('1 + 1') == ast.BinOp('+', ast.Number(1),
                                             ast.Number(1))
Example #9
0
 def expression_lt_expression(state, p):
     return ast.BinOp('<', p[0], p[2])
Example #10
0
 def expression_plus_expression(state, p):
     return ast.BinOp('+', p[0], p[2])