-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathtypedlang_compressed.js
43 lines (41 loc) · 15.6 KB
/
typedlang_compressed.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Do not edit this file; automatically generated by build.py.
'use strict';
Blockly.TypedLang=new Blockly.Generator("TypedLang");Blockly.TypedLang.addReservedWords("and,as,assert,asr,begin,class,constraint,do,done,downto,else,end,exception,external,false,for,fun,function,functor,if,in,include,inherit,initializer,land,lazy,let,lor,lsl,lsr,lxor,match,method,mod,module,mutable,new,nonrec,object,of,open,or,private,rec,sig,struct,then,to,true,try,type,val,virtual,when,while,with");Blockly.TypedLang.ORDER_ATOMIC=0;Blockly.TypedLang.ORDER_FUNCTION_CALL=2;
Blockly.TypedLang.ORDER_POWER=4;Blockly.TypedLang.ORDER_MULTIPLICATION=5.1;Blockly.TypedLang.ORDER_DIVISION=5.2;Blockly.TypedLang.ORDER_MOD=5.3;Blockly.TypedLang.ORDER_SUBTRACTION=6.1;Blockly.TypedLang.ORDER_ADDITION=6.2;Blockly.TypedLang.ORDER_CONS=7;Blockly.TypedLang.ORDER_CONCAT_STRING=8;Blockly.TypedLang.ORDER_RELATIONAL=9;Blockly.TypedLang.ORDER_LOGICAL_AND=13;Blockly.TypedLang.ORDER_LOGICAL_OR=14;Blockly.TypedLang.ORDER_ARROW=15;Blockly.TypedLang.ORDER_COMMA=16;
Blockly.TypedLang.ORDER_ELSE=17;Blockly.TypedLang.ORDER_THEN=18;Blockly.TypedLang.ORDER_WITH=19;Blockly.TypedLang.ORDER_SEMI=20;Blockly.TypedLang.ORDER_IN=21;Blockly.TypedLang.ORDER_EXPR=50;Blockly.TypedLang.ORDER_NONE=99;
Blockly.TypedLang.ORDER_OVERRIDES=[[Blockly.TypedLang.ORDER_MULTIPLICATION,Blockly.TypedLang.ORDER_MULTIPLICATION],[Blockly.TypedLang.ORDER_ADDITION,Blockly.TypedLang.ORDER_ADDITION],[Blockly.TypedLang.ORDER_LOGICAL_AND,Blockly.TypedLang.ORDER_LOGICAL_AND],[Blockly.TypedLang.ORDER_LOGICAL_OR,Blockly.TypedLang.ORDER_LOGICAL_OR],[Blockly.TypedLang.ORDER_CONCAT_STRING,Blockly.TypedLang.ORDER_CONCAT_STRING]];
Blockly.TypedLang.init=function(a){Blockly.TypedLang.definitions_=Object.create(null);Blockly.TypedLang.functionNames_=Object.create(null);Blockly.TypedLang.variableDB_?Blockly.TypedLang.variableDB_.reset():Blockly.TypedLang.variableDB_=new Blockly.Names(Blockly.TypedLang.RESERVED_WORDS_);Blockly.TypedLang.variableDB_.setVariableMap(a.getVariableMap());for(var b=[],c=Blockly.Variables.allDeveloperVariables(a),d=0;d<c.length;d++)b.push(Blockly.TypedLang.variableDB_.getName(c[d],Blockly.Names.DEVELOPER_VARIABLE_TYPE));
a=Blockly.Variables.allUsedVarModels(a);for(d=0;d<a.length;d++)b.push(Blockly.TypedLang.variableDB_.getName(a[d].getId(),Blockly.Variables.NAME_TYPE));b.length&&(Blockly.TypedLang.definitions_.variables="var "+b.join(", ")+";")};
Blockly.TypedLang.finish=function(a){var b=[],c;for(c in Blockly.TypedLang.definitions_)b.push(Blockly.TypedLang.definitions_[c]);delete Blockly.TypedLang.definitions_;delete Blockly.TypedLang.functionNames_;Blockly.TypedLang.variableDB_.reset();return b.join("\n\n")+"\n\n\n"+a};Blockly.TypedLang.scrubNakedValue=function(a){return"let _ = "+a+"\n"};Blockly.TypedLang.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"};
Blockly.TypedLang.scrub_=function(a,b){var c="";if(!a.outputConnection||!a.outputConnection.targetConnection){var d=a.getCommentText();(d=Blockly.utils.wrap(d,Blockly.TypedLang.COMMENT_WRAP-3))&&(c+="\n"+Blockly.TypedLang.prefixLines(d," ").replace(/^ /gm,"(* ").replace(/$/gm," *)")+"\n");for(var e=0;e<a.inputList.length;e++)a.inputList[e].type==Blockly.INPUT_VALUE&&(d=a.inputList[e].connection.targetBlock())&&(d=Blockly.TypedLang.allNestedComments(d))&&(c+=Blockly.TypedLang.prefixLines(d," ").replace(/^ /,
"(*").replace(/\n$/," *)\n"))}e=a.nextConnection&&a.nextConnection.targetBlock();e=Blockly.TypedLang.blockToCode(e);return c+b+e};
Blockly.TypedLang.getAdjusted=function(a,b,c,d,e){c=c||0;e=e||Blockly.TypedLang.ORDER_NONE;a.workspace.options.oneBasedIndex&&c--;var g=a.workspace.options.oneBasedIndex?"1":"0";a=0<c?Blockly.TypedLang.valueToCode(a,b,Blockly.TypedLang.ORDER_ADDITION)||g:0>c?Blockly.TypedLang.valueToCode(a,b,Blockly.TypedLang.ORDER_SUBTRACTION)||g:d?Blockly.TypedLang.valueToCode(a,b,Blockly.TypedLang.ORDER_UNARY_NEGATION)||g:Blockly.TypedLang.valueToCode(a,b,e)||g;if(Blockly.isNumber(a))a=parseFloat(a)+c,d&&(a=-a);
else{if(0<c){a=a+" + "+c;var f=Blockly.TypedLang.ORDER_ADDITION}else 0>c&&(a=a+" - "+-c,f=Blockly.TypedLang.ORDER_SUBTRACTION);d&&(a=c?"-("+a+")":"-"+a,f=Blockly.TypedLang.ORDER_UNARY_NEGATION);f=Math.floor(f);e=Math.floor(e);f&&e>=f&&(a="("+a+")")}return a};Blockly.TypedLang.blocks={};Blockly.TypedLang.logic_boolean_typed=function(a){return["TRUE"==a.getFieldValue("BOOL")?"true":"false",Blockly.TypedLang.ORDER_ATOMIC]};Blockly.TypedLang.not_operator_typed=function(a){return["not "+(Blockly.TypedLang.valueToCode(a,"A",Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?"),Blockly.TypedLang.ORDER_FUNCTION_CALL]};
Blockly.TypedLang.logic_operator_typed=function(a){var b={AND:[" && ",Blockly.TypedLang.ORDER_LOGICAL_AND],OR:[" || ",Blockly.TypedLang.ORDER_LOGICAL_OR]}[a.getFieldValue("OP_BOOL")],c=b[0];b=b[1];var d=Blockly.TypedLang.valueToCode(a,"A",b)||"?";a=Blockly.TypedLang.valueToCode(a,"B",b)||"?";return[d+c+a,b]};
Blockly.TypedLang.logic_compare_typed=function(a){var b={EQ:[" = ",Blockly.TypedLang.ORDER_RELATIONAL],NEQ:[" <> ",Blockly.TypedLang.ORDER_RELATIONAL],LT:[" < ",Blockly.TypedLang.ORDER_RELATIONAL],LTE:[" <= ",Blockly.TypedLang.ORDER_RELATIONAL],GT:[" > ",Blockly.TypedLang.ORDER_RELATIONAL],GTE:[" >= ",Blockly.TypedLang.ORDER_RELATIONAL]}[a.getFieldValue("OP")],c=b[0];b=b[1];var d=Blockly.TypedLang.valueToCode(a,"A",b)||"?";a=Blockly.TypedLang.valueToCode(a,"B",b)||"?";return[d+c+a,b]};
Blockly.TypedLang.logic_ternary_typed=function(a){var b=Blockly.TypedLang.valueToCode(a,"IF",Blockly.TypedLang.ORDER_EXPR)||"?",c=Blockly.TypedLang.valueToCode(a,"THEN",Blockly.TypedLang.ORDER_THEN)||"?";a=Blockly.TypedLang.valueToCode(a,"ELSE",Blockly.TypedLang.ORDER_ELSE)||"?";return["if "+b+" then "+c+" else "+a,Blockly.TypedLang.ORDER_EXPR]};Blockly.TypedLang.int_typed=function(a){a=parseInt(a.getFieldValue("INT"));return[a,0>a?Blockly.TypedLang.ORDER_SUBTRACTION:Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.max_int_typed=function(a){return["MAX_INT"===a.getFieldValue("INT")?"max_int":"min_int",Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.int_arithmetic_typed=function(a){var b={ADD_INT:[" + ",Blockly.TypedLang.ORDER_ADDITION],MINUS_INT:[" - ",Blockly.TypedLang.ORDER_SUBTRACTION],MULTIPLY_INT:[" * ",Blockly.TypedLang.ORDER_MULTIPLICATION],DIVIDE_INT:[" / ",Blockly.TypedLang.ORDER_DIVISION],MOD_INT:[" mod ",Blockly.TypedLang.ORDER_MOD]}[a.getFieldValue("OP_INT")],c=b[0];b=b[1];var d=Blockly.TypedLang.valueToCode(a,"A",b)||"?";a=Blockly.TypedLang.valueToCode(a,"B",b)||"?";return[d+c+a,b]};
Blockly.TypedLang.int_abs_typed=function(a){return["abs "+(Blockly.TypedLang.valueToCode(a,"A",Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?"),Blockly.TypedLang.ORDER_FUNCTION_CALL]};Blockly.TypedLang.float_typed=function(a){return[a.getFieldValue("Float"),Blockly.TypedLang.ORDER_ATOMIC]};Blockly.TypedLang.infinity_typed=function(a){a=a.getFieldValue("FLOAT");return["INFINITY"===a?"infinity":"NEG_INFINITY"===a?"neg_infinity":"nan",Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.float_arithmetic_typed=function(a){var b={ADD_FLOAT:[" +. ",Blockly.TypedLang.ORDER_ADDITION],MINUS_FLOAT:[" -. ",Blockly.TypedLang.ORDER_SUBTRACTION],MULTIPLY_FLOAT:[" *. ",Blockly.TypedLang.ORDER_MULTIPLICATION],DIVIDE_FLOAT:[" /. ",Blockly.TypedLang.ORDER_DIVISION],POWER_FLOAT:[" ** ",Blockly.TypedLang.ORDER_POWER]}[a.getFieldValue("OP_FLOAT")],c=b[0];b=b[1];var d=Blockly.TypedLang.valueToCode(a,"A",b)||"?";a=Blockly.TypedLang.valueToCode(a,"B",b)||"?";return[d+c+a,b]};
Blockly.TypedLang.float_sqrt_typed=function(a){return["sqrt "+(Blockly.TypedLang.valueToCode(a,"A",Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?"),Blockly.TypedLang.ORDER_FUNCTION_CALL]};Blockly.TypedLang.string_typed=function(a){a=a.getFieldValue("STRING");return[JSON.stringify(a),Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.concat_string_typed=function(a){var b=Blockly.TypedLang.valueToCode(a,"A",Blockly.TypedLang.ORDER_CONCAT_STRING)||"?";a=Blockly.TypedLang.valueToCode(a,"B",Blockly.TypedLang.ORDER_CONCAT_STRING)||"?";return[b+" ^ "+a,Blockly.TypedLang.ORDER_CONCAT_STRING]};Blockly.TypedLang.string_of_int_typed=function(a){return["string_of_int "+(Blockly.TypedLang.valueToCode(a,"PARAM",Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?"),Blockly.TypedLang.ORDER_FUNCTION_CALL]};
Blockly.TypedLang.lists_create_with_typed=function(a){for(var b=Array(a.itemCount_),c=0;c<a.itemCount_;c++)b[c]=Blockly.TypedLang.valueToCode(a,"ADD"+c,Blockly.TypedLang.ORDER_SEMI)||"?";return["["+b.join("; ")+"]",Blockly.TypedLang.ORDER_ATOMIC]};Blockly.TypedLang.list_empty_typed=function(a){return["[]",Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.list_cons_typed=function(a){var b=Blockly.TypedLang.valueToCode(a,"FIRST",Blockly.TypedLang.ORDER_CONS)||"?";a=Blockly.TypedLang.valueToCode(a,"CONS",Blockly.TypedLang.ORDER_CONS)||"?";return[b+" :: "+a,Blockly.TypedLang.ORDER_CONS]};Blockly.TypedLang.pair_create_typed=function(a){var b=Blockly.TypedLang.valueToCode(a,"FIRST",Blockly.TypedLang.ORDER_COMMA)||"?";a=Blockly.TypedLang.valueToCode(a,"SECOND",Blockly.TypedLang.ORDER_COMMA)||"?";return["("+b+", "+a+")",Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.pair_first_typed=function(a){return["fst "+(Blockly.TypedLang.valueToCode(a,"FIRST",Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?"),Blockly.TypedLang.ORDER_FUNCTION_CALL]};Blockly.TypedLang.pair_second_typed=function(a){return["snd "+(Blockly.TypedLang.valueToCode(a,"SECOND",Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?"),Blockly.TypedLang.ORDER_FUNCTION_CALL]};
Blockly.TypedLang.function_app_typed=function(a){for(var b=a.getField("VAR").getVariableName(),c=[],d=0;d<a.paramCount_;d++){var e=Blockly.TypedLang.valueToCode(a,"PARAM"+d,Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?";c.push(e)}if(0==c.length)return[b,Blockly.TypedLang.ORDER_ATOMIC];b+=" "+c.join(" ");return[b,Blockly.TypedLang.ORDER_FUNCTION_CALL]};
Blockly.TypedLang.lambda_typed=function(a){var b=a.typedValue.VAR.getVariableName();a=Blockly.TypedLang.valueToCode(a,"RETURN",Blockly.TypedLang.ORDER_ARROW)||"?";return["fun "+b+" -> "+a,Blockly.TypedLang.ORDER_EXPR]};Blockly.TypedLang.lambda_app_typed=function(a){var b=Blockly.TypedLang.valueToCode(a,"FUN",Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?";a=Blockly.TypedLang.valueToCode(a,"ARG",Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?";return[b+" "+a,Blockly.TypedLang.ORDER_FUNCTION_CALL]};
Blockly.TypedLang.match_typed=function(a){if(0==a.itemCount_)return["",Blockly.TypedLang.ORDER_ATOMIC];for(var b="match "+(Blockly.TypedLang.valueToCode(a,"INPUT",Blockly.TypedLang.ORDER_EXPR)||"?")+" with",c=0;c<a.itemCount_;c++){var d=Blockly.TypedLang.valueToCode(a,"PATTERN"+c,Blockly.TypedLang.ORDER_EXPR)||"?",e=Blockly.TypedLang.valueToCode(a,"OUTPUT"+c,Blockly.TypedLang.ORDER_EXPR)||"?";b+="\n | "+d+" -> "+e}return[b,Blockly.TypedLang.ORDER_EXPR]};
Blockly.TypedLang.variables_get_typed=function(a){return[a.typedReference.VAR.getVariableName(),Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.let_typed=function(a){for(var b=[],c=0;c<a.argumentCount_;c++)b.push(a.typedValue["ARG"+c].getVariableName());c=a.typedValue.VAR.getVariableName();var d=0==b.length?"":" "+b.join(" "),e=Blockly.TypedLang.valueToCode(a,"EXP1",Blockly.TypedLang.ORDER_NONE)||"?";b="let ";a.isRecursive()&&(b+="rec ");b+=c+d+" = "+e;if(a.getIsStatement())return b+"\n";a=Blockly.TypedLang.valueToCode(a,"EXP2",Blockly.TypedLang.ORDER_IN)||"?";return[b+(" in "+a),Blockly.TypedLang.ORDER_EXPR]};
Blockly.TypedLang.letrec_typed=function(a){return Blockly.TypedLang.let_typed.call(this,a)};Blockly.TypedLang.letstatement_typed=function(a){return Blockly.TypedLang.let_typed.call(this,a)};Blockly.TypedLang.dummy_statement_typed=function(a){return Blockly.TypedLang.valueToCode(a,"VALUE",Blockly.TypedLang.ORDER_ATOMIC)||"?"};
Blockly.TypedLang.defined_recordtype_typed=function(a){if(0==a.itemCount_)return"";for(var b="type "+a.getField("DATANAME").getVariableName()+" = {",c=0;c<a.itemCount_;c++){var d=a.getField("FIELD"+c);b+=d.getVariableName();b+=" : ";d=Blockly.TypedLang.valueToCode(a,"FIELD_INP"+c,Blockly.TypedLang.ORDER_SEMI)||"?";b+=d;c!=a.itemCount_-1&&(b+="; ")}return b+"}\n"};
Blockly.TypedLang.recordTypeUtil_=function(a){if(0==a.length)return"";for(var b="{",c=0;c<a.length;c++){var d=a[c],e=d[1];b+=d[0];b+=" = ";b+=e;c!=a.length-1&&(b+="; ")}return b+"}"};Blockly.TypedLang.create_record_typed=function(a){for(var b=[],c=0;c<a.fieldCount_;c++){var d=a.getField("FIELD"+c).getVariableName(),e=Blockly.TypedLang.valueToCode(a,"FIELD_INP"+c,Blockly.TypedLang.ORDER_SEMI)||"?";b.push([d,e])}return[Blockly.TypedLang.recordTypeUtil_(b),Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.defined_datatype_typed=function(a){if(0==a.itemCount_)return"";for(var b="type "+a.getField("DATANAME").getText()+" =",c=0;c<a.itemCount_;c++){var d=Blockly.TypedLang.valueToCode(a,"CTR_INP"+c,Blockly.TypedLang.ORDER_SEMI)||"?",e=a.getField("CTR"+c);b+="\n | "+e.getVariableName();d&&(b+=" of "+d)}return b+"\n"};
Blockly.TypedLang.create_construct_typed=function(a){for(var b=[],c=0,d;d=a.inputList[c];c++)d.name&&d.name.match(/PARAM(\d+)/)&&(d=Blockly.TypedLang.valueToCode(a,d.name,Blockly.TypedLang.ORDER_ATOMIC)||"?",b.push(d));a=a.getField("CONSTRUCTOR").getVariableName();0!=b.length&&(a+=" ("+b.join(", ")+")");return[a,Blockly.TypedLang.ORDER_ATOMIC]};Blockly.TypedLang.int_type_typed=function(a){return["int",Blockly.TypedLang.ORDER_ATOMIC]};Blockly.TypedLang.float_type_typed=function(a){return["float",Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.bool_type_typed=function(a){return["bool",Blockly.TypedLang.ORDER_ATOMIC]};Blockly.TypedLang.string_type_typed=function(a){return["string",Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.tupleTypeUtil_=function(a,b){for(var c="",d=0,e;e=b[d];d++)e=Blockly.TypedLang.valueToCode(a,e,Blockly.TypedLang.ORDER_MULTIPLICATION)||"?",c+=e,d!=b.length-1&&(c+=" * ");d=a.getParent();d=!!d&&("defined_datatype_typed"===d.type||"defined_recordtype_typed"===d.type);e="";d||(e+="(");e+=c;d||(e+=")");return e};Blockly.TypedLang.pair_type_constructor_typed=function(a,b){return[Blockly.TypedLang.tupleTypeUtil_(a,["LEFT","RIGHT"]),Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.triple_type_constructor_typed=function(a){return[Blockly.TypedLang.tupleTypeUtil_(a,["ITEM0","ITEM1","ITEM2"]),Blockly.TypedLang.ORDER_ATOMIC]};Blockly.TypedLang.alist_type_constructor_typed=function(a){return[(Blockly.TypedLang.valueToCode(a,"ITEM",Blockly.TypedLang.ORDER_FUNCTION_CALL)||"?")+" list",Blockly.TypedLang.ORDER_FUNCTION_CALL]};Blockly.TypedLang.empty_construct_pattern_typed=function(a){return["[]",Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.cons_construct_pattern_typed=function(a){var b=a.getField("FIRST");a=a.getField("CONS");return[b.getText()+" :: "+a.getText(),Blockly.TypedLang.ORDER_CONS]};Blockly.TypedLang.cons_construct_pattern_value_typed=function(a){var b=a.typedValue.FIRST.getVariableName();a=a.typedValue.CONS.getVariableName();return[b+" :: "+a,Blockly.TypedLang.ORDER_CONS]};
Blockly.TypedLang.pair_pattern_typed=function(a){var b=a.getField("LEFT");a=a.getField("RIGHT");return["("+b.getText()+", "+a.getText()+")",Blockly.TypedLang.ORDER_ATOMIC]};Blockly.TypedLang.pair_pattern_value_typed=function(a){var b=a.typedValue.LEFT.getVariableName();a=a.typedValue.RIGHT.getVariableName();return["("+b+", "+a+")",Blockly.TypedLang.ORDER_ATOMIC]};
Blockly.TypedLang.record_pattern_typed=function(a){for(var b=[],c=0;c<a.fieldCount_;c++){var d=a.getField("FIELD"+c).getVariableName(),e=a.getField("TEXT"+c).getText();b.push([d,e])}return[Blockly.TypedLang.recordTypeUtil_(b),Blockly.TypedLang.ORDER_ATOMIC]};Blockly.TypedLang.record_pattern_value_typed=function(a){for(var b=[],c=0;c<a.fieldCount_;c++){var d=a.getField("FIELD"+c).getVariableName(),e=a.getField("TEXT"+c).getVariableName();b.push([d,e])}return[Blockly.TypedLang.recordTypeUtil_(b),Blockly.TypedLang.ORDER_ATOMIC]};