Example #1
0
	def setUp(self):
		self.pgm = parser.parse("""
		s = {x:4, y:5}
		s . x
		s . y
		{q:s}.q.y
		""")
Example #2
0
	def test_arithmetic(self):
		source = "5*4+3;"
		
		result = parser.parse(source)

		self.assertEqual(operators.add, type(result[0]))
		self.assertEqual(operators.multiply, type(result[0].v1))
Example #3
0
	def setUp(self):
		self.pgm = parser.parse("""
		a = 1
		fun = [b; c=a -> b+c]
		a = 2
		fun(a)
		""")
Example #4
0
	def setUp(self):
		self.pgm = parser.parse("""
		z=0
		f = [x,y; z=z+x+y; w=z*z -> w]
		buf = f(2,3)
		buf
		""")
Example #5
0
	def setUp(self):
		self.pgm = parser.parse("""
		l = "ab"; l
		a = l.hd; a
		b = l.tl; b
		b.tl
		""")
Example #6
0
	def setUp(self):
		self.pgm = parser.parse("""
		sum = sum[l -> if l == Empty then 0 else l.hd + sum(l.tl)]
		list = {hd:1, tl:{hd:2, tl:Empty}}
		sum(Empty)
		sum(list)
		""")
Example #7
0
	def setUp(self):
		self.pgm = parser.parse("""
		n = 3
		lam = [a->n+a]
		n = 4
		lam(10)
		[x,y->x+y](3,5)
		""")
Example #8
0
	def test_arithmetic_repr(self):
		source = "5*4+3-2/1;"
		
		expected = '5 * 4 + 3 - 2 / 1'
		
		result = parser.parse(source)
		
		self.assertEqual(expected, repr(result[0]))
Example #9
0
	def setUp(self):
		self.pgm = parser.parse("""
		enum = e[n -> {hd:n, tl:e(n+1)}]
		list = enum(1)
		list.hd
		list.tl.tl.hd
		[l -> l.tl.hd](list)
		""")
Example #10
0
	def setUp(self):
		self.pgm = parser.parse("""
		len = f[s-> if s==Null then 0 else 1+f(s.tl)]
		len("")
		len("foo")
		s = "mam" + "kota"
		s
		len(s)
		""")
Example #11
0
	def setUp(self):
		self.pgm = parser.parse("""
		fixpoint = me[f -> f(me(f))]
		gf = [fun -> [n -> if n>1 then n*fun(n-1) else 1] ] # look! no recurrence.
		fixpoint(gf)(0); fixpoint(gf)(4); fixpoint(gf)(5)
		
		y = [f; lam = [x -> f(x(x))] -> lam(lam)] # hardcore Haskell Curry's fixpoint combinator
		factorial = y(gf)
		factorial(3)
		""")
Example #12
0
	def setUp(self):
		self.pgm = parser.parse("""
		genfun = [ a,b
			addA = [n -> n+a]
			mulB = [n -> n*b] ->
			[n -> mulB(addA(n))]
		]
		fun = genfun(1,10)
		fun(3)
		""")
Example #13
0
	def setUp(self):
		self.pgm = parser.parse("""
		bt1 = f[n-> {val:n, left:f(2*n), right:f(2*n+1)}](1)
		bt2 = f[-> {myk:123, val:100, left:f(), right:f()}]()
		bt2.left.right.left.left.val
		bt1.right.val
		
		bt3 = add[a,b -> {val:a. val+b .val, left:add(a.left, b.left), right:add(a.right, b.right)}](bt1, bt2)
		bt3.left.right.val
		""")
Example #14
0
	def testGetsParsedCorrectly(self):
		parser.parse("""
		s = {
			x:1,
			y:2
		}
		s
		
		fun = name[x,y;
			z = x+y;
			z = z*z ->	
			z + 1
		]
		fun(1,2)
		
		lam = [a;;;;; x=1; ->	a+1;;;;;;
		]

		""")
		
Example #15
0
	def setUp(self):
		self.pgm = parser.parse("""
		s = {x:1, y:4}
		s.y
		s.x = 2
		s.x
		s.y
		o = {}
		o.f = s
		o.f.x
		o.f.y = 3
		o.f.y
		s.y
		""")
Example #16
0
	def setUp(self):
		self.pgm = parser.parse("""
		gcd = f[a,b -> if b>0 then f(b,a%b) else a]
		gcd(6,9)
		gcd(1010,73)
		""")
Example #17
0
	def test_conditional_expression(self):
		source = "if True then 50 else 60;"
		
		result = parser.parse(source)
		self.assertEqual(conditional, type(result[0]))
		self.assertEqual("if(True) then(50) else(60)", repr(result[0]))
Example #18
0
	def setUp(self):
		self.pgm = parser.parse("""
		fib = f[n -> if n<2 then 1 else f(n-2)+f(n-1)]
		fib(2); fib(3); fib(4)
		""")
Example #19
0
	def setUp(self):
		self.pgm = parser.parse("""
		silnia = f[n -> if n<=1 then 1 else n*f(n-1)]
		silnia(5)
		silnia(4)
		""")
Example #20
0
	def setUp(self):
		self.parsed = parser.parse("[->3];")
Example #21
0
	def setUp(self):
		self.pgm = parser.parse("""
		pow = f[p,w; q=f(p*p,w/2) -> if (!w) then 1 else (if (w%2) then p*q else q)]
		pow(2,3)
		""")
Example #22
0
	def setUp(self):
		self.pgm = parser.parse("""
		write(123)
		""")
Example #23
0
	def setUp(self):
		self.fun = parser.parse("""[x,y ;t=3;q=5.6 ->1+z];""")[0]
Example #24
0
	def setUp(self):
		self.fun = parser.parse("sil[n -> if 4+3>0 then 2 else 1];")[0]
Example #25
0
	def setUp(self):
		self.pgm = parser.parse("""
		sqr = [x -> x*x]
		apply = [fun, arg -> fun(arg)]
		apply(sqr, 5)
		""")
Example #26
0
	def testExpr(self):
		pgm = parser.parse("x*x;")
		self.assertRaises(UndefinedVariable, lambda: list(pgm.execute()))
Example #27
0
	def setUp(self):
		self.pgm = parser.parse("{x:4, y:5};")