188 lines
9.4 KiB
JavaScript
188 lines
9.4 KiB
JavaScript
goog.provide('sci.impl.interpreter');
|
|
sci.impl.interpreter.eval_form_STAR_ = (function sci$impl$interpreter$eval_form_STAR_(ctx,form){
|
|
var eval_file = new cljs.core.Keyword("clojure.core","eval-file","clojure.core/eval-file",801420726).cljs$core$IFn$_invoke$arity$1(cljs.core.meta(form));
|
|
if(cljs.core.truth_(eval_file)){
|
|
sci.impl.vars.push_thread_bindings(cljs.core.PersistentArrayMap.createAsIfByAssoc([sci.impl.utils.current_file,eval_file]));
|
|
} else {
|
|
}
|
|
|
|
try{if(cljs.core.seq_QMARK_(form)){
|
|
if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Symbol(null,"do","do",1686842252,null),cljs.core.first(form))){
|
|
var m__46658__auto__ = cljs.core.meta(form);
|
|
var loc__46659__auto__ = (cljs.core.truth_((function (){var and__5023__auto__ = true;
|
|
if(and__5023__auto__){
|
|
var and__5023__auto____$1 = m__46658__auto__;
|
|
if(cljs.core.truth_(and__5023__auto____$1)){
|
|
return new cljs.core.Keyword(null,"line","line",212345235).cljs$core$IFn$_invoke$arity$1(m__46658__auto__);
|
|
} else {
|
|
return and__5023__auto____$1;
|
|
}
|
|
} else {
|
|
return and__5023__auto__;
|
|
}
|
|
})())?new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"column","column",2078222095).cljs$core$IFn$_invoke$arity$1(m__46658__auto__),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"line","line",212345235).cljs$core$IFn$_invoke$arity$1(m__46658__auto__)], null):null);
|
|
if(cljs.core.truth_(loc__46659__auto__)){
|
|
(sci.impl.utils._STAR_top_level_location_STAR_ = loc__46659__auto__);
|
|
} else {
|
|
}
|
|
|
|
try{var exprs = cljs.core.rest(form);
|
|
var ret = null;
|
|
while(true){
|
|
if(cljs.core.seq(exprs)){
|
|
var G__48619 = cljs.core.rest(exprs);
|
|
var G__48620 = (function (){var G__48560 = ctx;
|
|
var G__48561 = cljs.core.first(exprs);
|
|
return (sci.impl.interpreter.eval_form_STAR_.cljs$core$IFn$_invoke$arity$2 ? sci.impl.interpreter.eval_form_STAR_.cljs$core$IFn$_invoke$arity$2(G__48560,G__48561) : sci.impl.interpreter.eval_form_STAR_.call(null,G__48560,G__48561));
|
|
})();
|
|
exprs = G__48619;
|
|
ret = G__48620;
|
|
continue;
|
|
} else {
|
|
return ret;
|
|
}
|
|
break;
|
|
}
|
|
}finally {if(cljs.core.truth_(loc__46659__auto__)){
|
|
(sci.impl.utils._STAR_top_level_location_STAR_ = null);
|
|
} else {
|
|
}
|
|
}} else {
|
|
var upper_sym = cljs.core.gensym.cljs$core$IFn$_invoke$arity$0();
|
|
var cb = cljs.core.volatile_BANG_(cljs.core.PersistentArrayMap.createAsIfByAssoc([upper_sym,new cljs.core.PersistentArrayMap(null, 1, [(0),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"syms","syms",-1575891762),cljs.core.PersistentArrayMap.EMPTY], null)], null)]));
|
|
var ctx__$1 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(ctx,new cljs.core.Keyword(null,"parents","parents",-2027538891),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [upper_sym,(0)], null),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"closure-bindings","closure-bindings",112932037),cb], 0));
|
|
var _ = (sci.ctx_store._STAR_ctx_STAR_ = ctx__$1);
|
|
var analyzed = sci.impl.analyzer.analyze.cljs$core$IFn$_invoke$arity$3(ctx__$1,form,true);
|
|
var binding_array_size = cljs.core.count(cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(cb),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [upper_sym,(0),new cljs.core.Keyword(null,"syms","syms",-1575891762)], null)));
|
|
var bindings = cljs.core.object_array.cljs$core$IFn$_invoke$arity$1(binding_array_size);
|
|
if((analyzed instanceof sci.impl.types.EvalForm)){
|
|
var G__48569 = ctx__$1;
|
|
var G__48570 = analyzed.sci$impl$types$IBox$getVal$arity$1(null);
|
|
return (sci.impl.interpreter.eval_form_STAR_.cljs$core$IFn$_invoke$arity$2 ? sci.impl.interpreter.eval_form_STAR_.cljs$core$IFn$_invoke$arity$2(G__48569,G__48570) : sci.impl.interpreter.eval_form_STAR_.call(null,G__48569,G__48570));
|
|
} else {
|
|
try{return sci.impl.types.eval(analyzed,ctx__$1,bindings);
|
|
}catch (e48573){if((e48573 instanceof Error)){
|
|
var e = e48573;
|
|
return sci.impl.utils.rethrow_with_location_of_node.cljs$core$IFn$_invoke$arity$4(ctx__$1,bindings,e,analyzed);
|
|
} else {
|
|
throw e48573;
|
|
|
|
}
|
|
}}
|
|
}
|
|
} else {
|
|
var upper_sym = cljs.core.gensym.cljs$core$IFn$_invoke$arity$0();
|
|
var cb = cljs.core.volatile_BANG_(cljs.core.PersistentArrayMap.createAsIfByAssoc([upper_sym,new cljs.core.PersistentArrayMap(null, 1, [(0),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"syms","syms",-1575891762),cljs.core.PersistentArrayMap.EMPTY], null)], null)]));
|
|
var ctx__$1 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(ctx,new cljs.core.Keyword(null,"parents","parents",-2027538891),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [upper_sym,(0)], null),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"closure-bindings","closure-bindings",112932037),cb], 0));
|
|
var analyzed = sci.impl.analyzer.analyze.cljs$core$IFn$_invoke$arity$2(ctx__$1,form);
|
|
var binding_array_size = cljs.core.count(cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(cb),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [upper_sym,(0),new cljs.core.Keyword(null,"syms","syms",-1575891762)], null)));
|
|
var bindings = cljs.core.object_array.cljs$core$IFn$_invoke$arity$1(binding_array_size);
|
|
try{return sci.impl.types.eval(analyzed,ctx__$1,bindings);
|
|
}catch (e48582){if((e48582 instanceof Error)){
|
|
var e = e48582;
|
|
return sci.impl.utils.rethrow_with_location_of_node.cljs$core$IFn$_invoke$arity$4(ctx__$1,bindings,e,analyzed);
|
|
} else {
|
|
throw e48582;
|
|
|
|
}
|
|
}}
|
|
}finally {if(cljs.core.truth_(eval_file)){
|
|
sci.impl.vars.pop_thread_bindings();
|
|
} else {
|
|
}
|
|
}});
|
|
sci.impl.interpreter.eval_form = (function sci$impl$interpreter$eval_form(ctx,form){
|
|
var _STAR_ctx_STAR__orig_val__48587 = sci.ctx_store._STAR_ctx_STAR_;
|
|
var _STAR_ctx_STAR__temp_val__48588 = ctx;
|
|
(sci.ctx_store._STAR_ctx_STAR_ = _STAR_ctx_STAR__temp_val__48588);
|
|
|
|
try{return sci.impl.interpreter.eval_form_STAR_(ctx,form);
|
|
}finally {(sci.ctx_store._STAR_ctx_STAR_ = _STAR_ctx_STAR__orig_val__48587);
|
|
}});
|
|
cljs.core.vreset_BANG_(sci.impl.utils.eval_form_state,sci.impl.interpreter.eval_form);
|
|
sci.impl.interpreter.eval_string_STAR_ = (function sci$impl$interpreter$eval_string_STAR_(var_args){
|
|
var G__48595 = arguments.length;
|
|
switch (G__48595) {
|
|
case 2:
|
|
return sci.impl.interpreter.eval_string_STAR_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
|
|
|
break;
|
|
case 3:
|
|
return sci.impl.interpreter.eval_string_STAR_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
|
|
|
|
break;
|
|
default:
|
|
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
|
|
}
|
|
});
|
|
|
|
(sci.impl.interpreter.eval_string_STAR_.cljs$core$IFn$_invoke$arity$2 = (function (ctx,s){
|
|
return sci.impl.interpreter.eval_string_STAR_.cljs$core$IFn$_invoke$arity$3(ctx,s,null);
|
|
}));
|
|
|
|
(sci.impl.interpreter.eval_string_STAR_.cljs$core$IFn$_invoke$arity$3 = (function (ctx,s,opts){
|
|
sci.impl.vars.push_thread_bindings(cljs.core.PersistentArrayMap.createAsIfByAssoc([sci.impl.utils.current_ns,(function (){var or__5025__auto__ = (cljs.core.truth_(opts)?new cljs.core.Keyword(null,"ns","ns",441598760).cljs$core$IFn$_invoke$arity$1(opts):null);
|
|
if(cljs.core.truth_(or__5025__auto__)){
|
|
return or__5025__auto__;
|
|
} else {
|
|
return cljs.core.deref(sci.impl.utils.current_ns);
|
|
}
|
|
})(),sci.impl.parser.data_readers,cljs.core.deref(sci.impl.parser.data_readers)]));
|
|
|
|
try{var reader = cljs.tools.reader.reader_types.indexing_push_back_reader.cljs$core$IFn$_invoke$arity$1(cljs.tools.reader.reader_types.string_push_back_reader.cljs$core$IFn$_invoke$arity$1(s));
|
|
var eval_string_PLUS__QMARK_ = (cljs.core.truth_(opts)?new cljs.core.Keyword("sci.impl","eval-string+","sci.impl/eval-string+",-178784582).cljs$core$IFn$_invoke$arity$1(opts):null);
|
|
var ret = null;
|
|
while(true){
|
|
var expr = sci.impl.parser.parse_next.cljs$core$IFn$_invoke$arity$2(ctx,reader);
|
|
if(cljs.core.keyword_identical_QMARK_(new cljs.core.Keyword("sci.impl.parser.edamame","eof","sci.impl.parser.edamame/eof",-917261517),expr)){
|
|
if(cljs.core.truth_(eval_string_PLUS__QMARK_)){
|
|
return new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"val","val",128701612),ret,new cljs.core.Keyword(null,"ns","ns",441598760),cljs.core.deref(sci.impl.utils.current_ns)], null);
|
|
} else {
|
|
return ret;
|
|
}
|
|
} else {
|
|
var ret__$1 = sci.impl.interpreter.eval_form(ctx,expr);
|
|
var G__48623 = ret__$1;
|
|
ret = G__48623;
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
}finally {sci.impl.vars.pop_thread_bindings();
|
|
}}));
|
|
|
|
(sci.impl.interpreter.eval_string_STAR_.cljs$lang$maxFixedArity = 3);
|
|
|
|
sci.impl.interpreter.eval_string = (function sci$impl$interpreter$eval_string(var_args){
|
|
var G__48612 = arguments.length;
|
|
switch (G__48612) {
|
|
case 1:
|
|
return sci.impl.interpreter.eval_string.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
|
|
|
break;
|
|
case 2:
|
|
return sci.impl.interpreter.eval_string.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
|
|
|
break;
|
|
default:
|
|
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
|
|
}
|
|
});
|
|
|
|
(sci.impl.interpreter.eval_string.cljs$core$IFn$_invoke$arity$1 = (function (s){
|
|
return sci.impl.interpreter.eval_string.cljs$core$IFn$_invoke$arity$2(s,null);
|
|
}));
|
|
|
|
(sci.impl.interpreter.eval_string.cljs$core$IFn$_invoke$arity$2 = (function (s,opts){
|
|
var init_ctx = sci.impl.opts.init(opts);
|
|
var ret = sci.impl.interpreter.eval_string_STAR_.cljs$core$IFn$_invoke$arity$2(init_ctx,s);
|
|
return ret;
|
|
}));
|
|
|
|
(sci.impl.interpreter.eval_string.cljs$lang$maxFixedArity = 2);
|
|
|
|
|
|
//# sourceMappingURL=sci.impl.interpreter.js.map
|