Pārlūkot izejas kodu

more fixes and tests

Vladislav Folts 12 gadi atpakaļ
vecāks
revīzija
50ce18ba0e

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 616 - 616
src/context.js


+ 3 - 2
src/lexer.js

@@ -100,8 +100,9 @@ exports.skipSpaces = function(stream, context){
 	if (context.isLexem && context.isLexem())
 		return;
 
-	stream.read(function(c){return ' \t\n\r'.indexOf(c) != -1;});
-	skipComment(stream);
+	do
+		stream.read(function(c){return ' \t\n\r'.indexOf(c) != -1;});
+	while (skipComment(stream));
 }
 
 exports.separator = function(stream, context){

+ 1 - 0
src/oc.js

@@ -8,6 +8,7 @@ var Stream = require("stream.js").Stream;
 exports.compile = function(text, handleErrors){
 	var stream = new Stream(text);
 	var context = new Context.Context();
+	Lexer.skipSpaces(stream, context);	
 	try {
 		if (!Grammar.module(stream, context))
 			throw new Errors.Error("syntax error");

+ 1 - 1
test/expected/array.js

@@ -14,7 +14,7 @@ var RTL$ = {
         }
         else
             for(i = 0; i < result.length; ++i)
-                result[i] = RTLMakeArray.apply(this, forward);
+                result[i] = this.makeArray.apply(this, forward);
         return result;
     },
 	extend: function extend(methods){

+ 55 - 0
test/expected/blur.js

@@ -0,0 +1,55 @@
+var RTL$ = {
+	makeArray: function (/*dimensions, initializer*/){
+        var forward = Array.prototype.slice.call(arguments);
+        var result = new Array(forward.shift());
+        var i;
+        if (forward.length == 1){
+            var init = forward[0];
+            if (typeof init == "function")
+                for(i = 0; i < result.length; ++i)
+                    result[i] = init();
+            else
+                for(i = 0; i < result.length; ++i)
+                    result[i] = init;
+        }
+        else
+            for(i = 0; i < result.length; ++i)
+                result[i] = this.makeArray.apply(this, forward);
+        return result;
+    }
+};
+var Blur = function (){
+var W = 640;
+var W1 = 640 - 3;
+var H = 480;
+var H1 = 480 - 3;
+var N = 13;
+var Frames = 1;
+var a = RTL$.makeArray(1920, 480, 0);var b = RTL$.makeArray(1920, 480, 0);
+var time = 0;
+
+function Blur2DArray(){
+	var f = 0;var n = 0;
+	var x = 0;var y = 0;
+	var color = 0;
+	for (f = 1; f <= Frames; ++f){
+		for (n = 1; n <= N; ++n){
+			for (y = 1; y <= H - 2; ++y){
+				for (x = 1; x <= W - 2; ++x){
+					for (color = 0; color <= 2; ++color){
+						b[x * 3 + color][y] = (a[x * 3 + color][y + 1] + a[x * 3 + color][y - 1] + a[(x - 1) * 3][y] + a[(x + 1) * 3][y]) / 4 >> 0;
+					}
+				}
+			}
+			for (y = 1; y <= H - 2; ++y){
+				for (x = 1; x <= W - 2; ++x){
+					for (color = 0; color <= 2; ++color){
+						a[x * 3 + color][y] = (b[x * 3 + color][y + 1] + b[x * 3 + color][y - 1] + b[(x - 1) * 3][y] + b[(x + 1) * 3][y]) / 4 >> 0;
+					}
+				}
+			}
+		}
+	}
+}
+Blur2DArray();
+}();

+ 1 - 1
test/expected/len.js

@@ -14,7 +14,7 @@ var RTL$ = {
         }
         else
             for(i = 0; i < result.length; ++i)
-                result[i] = RTLMakeArray.apply(this, forward);
+                result[i] = this.makeArray.apply(this, forward);
         return result;
     },
 	assert: function (condition, code){

+ 1 - 1
test/expected/parentheses.js

@@ -14,7 +14,7 @@ var RTL$ = {
         }
         else
             for(i = 0; i < result.length; ++i)
-                result[i] = RTLMakeArray.apply(this, forward);
+                result[i] = this.makeArray.apply(this, forward);
         return result;
     },
 	assert: function (condition, code){

+ 1 - 1
test/expected/string.js

@@ -14,7 +14,7 @@ var RTL$ = {
         }
         else
             for(i = 0; i < result.length; ++i)
-                result[i] = RTLMakeArray.apply(this, forward);
+                result[i] = this.makeArray.apply(this, forward);
         return result;
     },
 	assignArrayFromString: function (a, s){

+ 1 - 1
test/expected/var_parameter.js

@@ -25,7 +25,7 @@ var RTL$ = {
         }
         else
             for(i = 0; i < result.length; ++i)
-                result[i] = RTLMakeArray.apply(this, forward);
+                result[i] = this.makeArray.apply(this, forward);
         return result;
     },
 	makeRef: function (obj, prop){

+ 11 - 0
test/input/run/array.ob

@@ -0,0 +1,11 @@
+MODULE m;
+
+VAR
+    a1: ARRAY 5, 10 OF INTEGER;
+
+BEGIN
+    a1[0, 1] := 1;
+    ASSERT(a1[0, 1] = 1);
+    a1[1, 0] := a1[0, 1];
+    ASSERT(a1[1, 0] = 1);
+END m.

+ 4 - 0
test/test_unit.js

@@ -82,6 +82,7 @@ comment: function(){
 	var test = setup(Grammar.expression);
 	test.parse("(**)123");
 	test.parse("(*abc*)123");
+	test.parse("(*abc*)(*def*)123");
 	test.parse("(*a(*b*)c*)123");
 	test.expectError("(*123", "comment was not closed");
 },
@@ -896,6 +897,9 @@ IMPORT: function(){
 	test.parse("MODULE m; IMPORT JS; END m.");
 	test.parse("MODULE m; IMPORT JS; BEGIN JS.alert(\"test\") END m.");
 	test.parse("MODULE m; IMPORT JS; BEGIN JS.console.info(123) END m.");
+	test.expectError("MODULE m; IMPORT unknown; END m.", "module(s) not found: unknown");
+	test.expectError("MODULE m; IMPORT unknown1, unknown2; END m.", "module(s) not found: unknown1, unknown2");
+	test.expectError("MODULE m; IMPORT u1 := unknown1, unknown2; END m.", "module(s) not found: unknown1, unknown2");
 }};
 
 Test.run(testSuite);

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels