Просмотр исходного кода

v3 step 3.2 — showcase6 array tour (43/43 tests green)

Eric Streit 3 недель назад
Родитель
Сommit
b4a0371ec4
2 измененных файлов с 29 добавлено и 0 удалено
  1. 1 0
      compiler/run_tests.sh
  2. 28 0
      compiler/tests/showcase6.mod

+ 1 - 0
compiler/run_tests.sh

@@ -67,6 +67,7 @@ expect_fail t_bad_parent.mod "undeclared identifier"
 expect_run showcase3.mod 183
 expect_run showcase4.mod 44
 expect_fail showcase5.mod "not supported yet"
+expect_run showcase6.mod 34
 expect_fail t_enumdecl.mod "not supported yet"
 expect_fail t_proc.mod "not supported yet"
 expect_fail t_forward.mod "not supported yet"

+ 28 - 0
compiler/tests/showcase6.mod

@@ -0,0 +1,28 @@
+MODULE Showcase6;
+// Step 3.1 tour: 1-D + nested arrays, whole copies (incl. nested),
+// strings, bounds-checked indexing. Expected ExitCode: 34.
+TYPE Vec = ARRAY [0..5] OF INTEGER;
+TYPE Mat = ARRAY [0..1, 0..2] OF INTEGER;
+VAR ExitCode, i, sum : INTEGER;
+VAR v, v2 : Vec;
+VAR m, m2 : Mat;
+VAR s : ARRAY [0..3] OF CHAR;
+BEGIN
+  (* 0+1+..+5 = 15 *)
+  sum := 0;
+  FOR i := 0 TO 5 DO v[i] := i; sum := sum + v[i] END;
+  m[0, 0] := 1; m[0, 1] := 2; m[0, 2] := 3;
+  m[1, 0] := 4; m[1, 1] := 5; m[1, 2] := 6;
+  (* 15 + 3 + 4 = 22 *)
+  sum := sum + m[0, 2] + m[1, 0];
+  s := "abcd";
+  (* +2 = 24 *)
+  IF s[3] = 'd' THEN sum := sum + 2 END;
+  v2 := v;
+  (* +5 = 29 *)
+  sum := sum + v2[5];
+  m2 := m;
+  (* +5 = 34 *)
+  sum := sum + m2[1, 1];
+  ExitCode := sum
+END Showcase6.