Esempio n. 1
0
 def test_assignment(self):
     assert parse("a = 123") == ast.Block(
         [ast.Assign(ast.Symbol("a"), ast.Vector([ast.FloatValue(123.)]))])
     assert parse("a <- 123") == ast.Block(
         [ast.Assign(ast.Symbol("a"), ast.Vector([ast.FloatValue(123.)]))])
     assert parse("123 -> a") == ast.Block(
         [ast.Assign(ast.Symbol("a"), ast.Vector([ast.FloatValue(123.)]))])
Esempio n. 2
0
 def test_funcdef(self):
     assert parse("function() x") == ast.Block(
         [ast.Function(formals=ast.FormalList(), body=ast.Symbol("x"))])
     assert parse("function(x) x") == ast.Block([
         ast.Function(formals=ast.FormalList([(ast.Symbol("x"), None)]),
                      body=ast.Symbol("x"))
     ])
     assert parse("function(x) { x + 3 }") == ast.Block([
         ast.Function(formals=ast.FormalList([(ast.Symbol("x"), None)]),
                      body=ast.Block([
                          ast.BinaryOperation(
                              "+", ast.Symbol("x"),
                              ast.Vector([ast.FloatValue(3.)]))
                      ]))
     ])
     assert parse("function(x, y=0) { x + y }") == ast.Block([
         ast.Function(formals=ast.FormalList([
             (ast.Symbol("x"), None),
             (ast.Symbol("y"), ast.Vector([ast.FloatValue(0.)]))
         ]),
                      body=ast.Block([
                          ast.BinaryOperation("+", ast.Symbol("x"),
                                              ast.Symbol("y"))
                      ]))
     ])
Esempio n. 3
0
 def formlist_extend(self, p):
     # type: (List) -> ast.FormalList
     value = p[4] if len(p) > 3 else None
     return p[0].append_formal(
         ast.Symbol(p[2].getstr().decode("utf-8")),
         value
     )
Esempio n. 4
0
 def test_unicode_symbol(self):
     assert parse(u"👺 = 5".encode("utf-8")) == ast.Block([
         ast.Assign(ast.Symbol(u"👺"), ast.Vector([ast.FloatValue(5.)]))
     ])
Esempio n. 5
0
 def test_binary_operation(self):
     assert parse("a + b") == ast.Block(
         [ast.BinaryOperation("+", ast.Symbol("a"), ast.Symbol("b"))])
Esempio n. 6
0
 def formlist_from_symbol(self, p):
     # type: (List) -> ast.FormalList
     value = p[2] if len(p) > 1 else None
     return ast.FormalList([
         (ast.Symbol(p[0].getstr().decode("utf-8")), value)
     ])
Esempio n. 7
0
 def simple_expr(self, p):
     # type: (List[Token]) -> ast.Symbol
     return ast.Symbol(p[0].getstr().decode("utf-8"))