Get closures working!

In the process, I had to change the grammar. There is now a strong
separation between statements and expressions. The code was just wrong
before when it popped locals at the end of a block scope because there
could be temporaries on the stack if the block was in expression
position. This fixes that.

Still need to implement closing over `this`.
This commit is contained in:
Bob Nystrom
2013-12-04 07:43:50 -08:00
parent c14b115c02
commit 157944aa27
32 changed files with 1063 additions and 416 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ class Foo {
this baz { io.write("this baz") }
this bar(arg) { io.write("this bar " + arg) }
toString { "Foo" }
toString { return "Foo" }
}
// Different names.
+1 -1
View File
@@ -4,7 +4,7 @@ class Foo {
this new(a) { io.write(a) }
this new(a, b) { io.write(a + b) }
toString { "Foo" }
toString { return "Foo" }
}
// Can overload by arity.