minigrace
Version:
A compiler for the Grace programming language
157 lines (156 loc) • 7.8 kB
JavaScript
let gracecode_random_sourceFile = "/Users/black/Development/mg/gracelang/minigrace/modules/random.grace";
let gracecode_random_sha256 = "23806b8de44336d17ec701e2f9069a79b59ffcc2b7814857cec61a55b4dfc674";
let gracecode_random_minigraceRevision = "b57591d29fc5ee5270d114920bf671367b8c3ecb";
let gracecode_random_minigraceGeneration = "5171";
if (typeof gctCache !== "undefined")
gctCache["random"] = "dialect:\n standard\nfreshScopes:\nmethodTypes:$100:\n between(m:Number)and(n:Number) \u2192 Number\n between0And1 \u2192 Number\n integerIn(m:Number)to(n:Number) \u2192 Number\nmodules:\n standard\npath:\n /Users/black/Development/mg/gracelang/minigrace/modules/random.grace\nscope:$100:\n asDebugString String (go) $scope_string\n asString String (go) $scope_string\n basicAsString String (go) $scope_string\n between(1)and(1) Number (mth) $scope_done\n between0And1 Number (mth) $scope_done\n integerIn(1)to(1) Number (mth) $scope_done\n isMe(1) Boolean (go) $scope_boolean\n myIdentityHash Number (go) $scope_number\nself:\n $100\ntypes:\n";
if (typeof originalSourceLines !== "undefined") {
originalSourceLines["random"] = [
"dialect \"standard\"",
"",
"method between0And1 -> Number {",
" // A pseudo-random number between in the interval [0..1)",
" native \"c\" code ‹ return alloc_Float64((double)rand() / RAND_MAX);›",
" native \"js\" code ‹ return new GraceNum(Math.random());›",
"}",
"",
"method between (m: Number) and (n: Number) -> Number {",
" // A pseudo-random number in the interval [m..n)",
" ((n - m) * between0And1) + m",
"}",
"",
"method integerIn (m: Number) to (n: Number) -> Number {",
" // A pseudo-random integer in the interval [m..n]",
" ((n - m + 1) * between0And1).truncated + m",
"}" ];
}
function gracecode_random() {
importedModules["random"] = this;
const var_$module = this;
this.definitionModule = "random";
this.definitionLine = 1;
setLineNumber(1); // compilenode dialect
// Dialect "standard"
const var_$dialect = do_import("standard", gracecode_standard);
this.outer = var_$dialect;
this.closureKeys = this.closureKeys || [];
this.closureKeys.push("outer_random_1");
this.outer_random_1 = var_$dialect;
var func0 = function(argcv) { // method between0And1, line 3
var returnTarget = invocationCount;
invocationCount++;
const numArgs = arguments.length - 1;
if ((numArgs > 0) && (numArgs !== 0)) {
raiseTypeArgError("between0And1", 0, numArgs - 0);
}
setLineNumber(6); // compilenode call
var result = GraceDone; // start native code from line 6
return new GraceNum(Math.random()); // end native code insertion
setLineNumber(3); // compilenode member
var call3 = selfRequest(var_$dialect, "Number", [0]);
setLineNumber(6); // typecheck
assertTypeOrMsg(result, call3, "result of method between0And1", "Number");
return result;
}; // end of method between0And1
setLineNumber(3); // compilenode member
var call4 = selfRequest(var_$dialect, "Number", [0]);
func0.returnType = call4;
this.methods["between0And1"] = func0;
func0.methodName = "between0And1";
func0.paramCounts = [0];
func0.paramNames = [];
func0.definitionLine = 3;
func0.definitionModule = "random";
var func5 = function(argcv, var_m, var_n) { // method between(_)and(_), line 9
var returnTarget = invocationCount;
invocationCount++;
const numArgs = arguments.length - 1;
if ((numArgs > 2) && (numArgs !== 2)) {
raiseTypeArgError("between(_)and(_)", 0, numArgs - 2);
}
setLineNumber(9); // compilenode member
var call6 = selfRequest(var_$dialect, "Number", [0]);
assertTypeOrMsg(var_m, call6, "argument 1 in request of `between(_)and(_)`", "Number");
var call7 = selfRequest(var_$dialect, "Number", [0]);
assertTypeOrMsg(var_n, call7, "argument 2 in request of `between(_)and(_)`", "Number");
setLineNumber(11); // compilenode op
// call case 4: other requests
var call10 = selfRequest(var_$module, "between0And1", [0]);
// call case 4: other requests
// call case 4: other requests
var diff11 = request(var_n, "-(1)", [1], var_m);
var prod9 = request(diff11, "*(1)", [1], call10);
var sum8 = request(prod9, "+(1)", [1], var_m);
setLineNumber(9); // compilenode member
var call12 = selfRequest(var_$dialect, "Number", [0]);
setLineNumber(11); // typecheck
assertTypeOrMsg(sum8, call12, "result of method between(_)and(_)", "Number");
return sum8;
}; // end of method between(_)and(_)
setLineNumber(9); // compilenode member
var call13 = selfRequest(var_$dialect, "Number", [0]);
var call14 = selfRequest(var_$dialect, "Number", [0]);
func5.paramTypes = [call13, call14];
var call15 = selfRequest(var_$dialect, "Number", [0]);
func5.returnType = call15;
this.methods["between(1)and(1)"] = func5;
func5.methodName = "between(1)and(1)";
func5.paramCounts = [1, 1];
func5.paramNames = ["m", "n"];
func5.definitionLine = 9;
func5.definitionModule = "random";
var func16 = function(argcv, var_m, var_n) { // method integerIn(_)to(_), line 14
var returnTarget = invocationCount;
invocationCount++;
const numArgs = arguments.length - 1;
if ((numArgs > 2) && (numArgs !== 2)) {
raiseTypeArgError("integerIn(_)to(_)", 0, numArgs - 2);
}
setLineNumber(14); // compilenode member
var call17 = selfRequest(var_$dialect, "Number", [0]);
assertTypeOrMsg(var_m, call17, "argument 1 in request of `integerIn(_)to(_)`", "Number");
var call18 = selfRequest(var_$dialect, "Number", [0]);
assertTypeOrMsg(var_n, call18, "argument 2 in request of `integerIn(_)to(_)`", "Number");
setLineNumber(16); // compilenode op
// call case 4: other requests
// call case 4: other requests
var call22 = selfRequest(var_$module, "between0And1", [0]);
// call case 4: other requests
// call case 4: other requests
// call case 4: other requests
var diff24 = request(var_n, "-(1)", [1], var_m);
var sum23 = request(diff24, "+(1)", [1], new GraceNum(1));
var prod21 = request(sum23, "*(1)", [1], call22);
var call20 = request(prod21, "truncated", [0]);
var sum19 = request(call20, "+(1)", [1], var_m);
setLineNumber(14); // compilenode member
var call25 = selfRequest(var_$dialect, "Number", [0]);
setLineNumber(16); // typecheck
assertTypeOrMsg(sum19, call25, "result of method integerIn(_)to(_)", "Number");
return sum19;
}; // end of method integerIn(_)to(_)
setLineNumber(14); // compilenode member
var call26 = selfRequest(var_$dialect, "Number", [0]);
var call27 = selfRequest(var_$dialect, "Number", [0]);
func16.paramTypes = [call26, call27];
var call28 = selfRequest(var_$dialect, "Number", [0]);
func16.returnType = call28;
this.methods["integerIn(1)to(1)"] = func16;
func16.methodName = "integerIn(1)to(1)";
func16.paramCounts = [1, 1];
func16.paramNames = ["m", "n"];
func16.definitionLine = 14;
func16.definitionModule = "random";
return this;
}
if (typeof global !== "undefined")
global.gracecode_random = gracecode_random;
if (typeof window !== "undefined")
window.gracecode_random = gracecode_random;
gracecode_random.definitionModule = "random";
gracecode_random.sourceFile = gracecode_random_sourceFile;
gracecode_random.sha256 = gracecode_random_sha256;
gracecode_random.minigraceRevision = gracecode_random_minigraceRevision;
gracecode_random.minigraceGeneration = gracecode_random_minigraceGeneration;
gracecode_random.imports = [ ["standard", "5016aa3a5b2e0d35a67289d21c1e41cf8d73bef931ceea7b35f6a8b10a1386cf"] ];
gracecode_random.definitionLine = 1;