runtime.js

来自「《JavaScript王者归来》examples.rar」· JavaScript 代码 · 共 225 行 · 第 1/4 页

JS
225
字号
				}
				var tmpStrs = code.match(regExps_strings[1]);
				if (tmpStrs != null)
				{
					constStrs = constStrs.concat(tmpStrs);
				}
				for (var i = 0; i < constStrs.length; i++)
				{
					code = code.replace(constStrs[i],
						(strings_tmpPrefix + i + strings_tmpSuffix));
				}
				// remove comments
				code = code.replace(regExps_comments[0], "");
				code = code.replace(regExps_comments[1], "");
				// proc package
				code = code.replace(regExp_package, "$1_$package(\"$5\")");
				var packageName = RegExp.$5;
				// proc import
				code = code.replace(regExp_import, "$1var $7 = _$import(\"$5\")");
				// proc super
				code = code.replace(regExp_super, "$1$class.$super$2");

				if (regExp_class.test(code))
				{
					var className = RegExp.$5;
					var superName = RegExp.$7.replace(/(\s*)extends(\s+)/, "");
					var shortClassName = className;
					if (className.indexOf(".") == -1)
					{
						className = packageName + "." + className;
					}
					else
					{
							shortClassName = className.replace(/\w*\./g, "");
					}
					var str = "\r\nvar $class = "
						+ className	+	" = function(){return $"
						+ shortClassName + ".apply(this,arguments);};\r\n"
						+ "var " + shortClassName	+ " = $class;\r\n";
					if (superName == "")
					{
						str += "$class.$extends(_JSVM_Namespace.kernel.Object);";
					}
					else
					{
						str += "$class.$extends("	+ superName + ");";
					}
					str += "\r\nvar $" + shortClassName + " = function(";
					code = code.replace(regExp_class, "$1" + str);
				}
				else
				{
					throw new Exception(0x001E,	"JSVM jsvm2-parser@compiler "
						+ "error: can't found keyword 'class'.");
				}
				// restore string constant
				for (var i = 0; i < constStrs.length; i++)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?