aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdvard Thörnros <edvard.thornros@gmail.com>2021-01-12 20:04:02 +0100
committerEdvard Thörnros <edvard.thornros@gmail.com>2021-01-12 20:04:02 +0100
commit6718b634844a7db28ef01374701d1f77c4fe1716 (patch)
treeb00c3bc1850568b28efccf990eff9cb692562ad3
parent3a1e2316e467c85340f353b47d6fe92a02dc112a (diff)
downloadsylt-6718b634844a7db28ef01374701d1f77c4fe1716.tar.gz
Fib test and allowing skipping of comma
-rw-r--r--src/compiler.rs6
-rw-r--r--tests/fib.tdy15
2 files changed, 19 insertions, 2 deletions
diff --git a/src/compiler.rs b/src/compiler.rs
index 0dfa1a3..df094ae 100644
--- a/src/compiler.rs
+++ b/src/compiler.rs
@@ -386,7 +386,7 @@ impl Compiler {
// Definition
match self.peek_four() {
- (Token::Identifier(name), Token::Identifier(typ), Token::ColonEqual, _) => {
+ (Token::Identifier(name), Token::Identifier(typ), Token::ColonEqual, ..) => {
self.eat();
self.eat();
self.eat();
@@ -397,12 +397,14 @@ impl Compiler {
}
}
- (Token::Identifier(name), Token::ColonEqual, _, _) => {
+ (Token::Identifier(name), Token::ColonEqual, ..) => {
self.eat();
self.eat();
self.define_variable(&name, Type::UnkownType, block);
}
+ (Token::Comma, ..) => {}
+
_ => { error!(self, "Expected definition at start of for-loop."); }
}
diff --git a/tests/fib.tdy b/tests/fib.tdy
new file mode 100644
index 0000000..549d68a
--- /dev/null
+++ b/tests/fib.tdy
@@ -0,0 +1,15 @@
+a := 0
+for j := 0, j < 100000, j = j + 1 {
+ a = 0
+ b := 1
+
+ for i := 0, i < 90, i = i + 1 {
+ c := a
+ a = b
+ b = c + b
+ }
+}
+
+// Expect 2880067194370816120
+print a
+