diff --git a/generator/log.ml b/generator/log.ml index 60993ec1837aead3b92140011e96cf93f563aa91..a6a20992989445a03406e5d9a5945ca2f1b8112e 100644 --- a/generator/log.ml +++ b/generator/log.ml @@ -164,7 +164,7 @@ struct let ctx_processing id = let rec aux = function | [] -> "" - | x :: xs -> "\n" ^ pad ^ "ctx_push(ctx, \"" ^ x ^ "\", " ^ x ^ ", \"value\");" ^ aux xs + | x :: xs -> "\n" ^ pad ^ "ctx = ctx_push(ctx, \"" ^ x ^ "\", " ^ x ^ ", \"value\");" ^ aux xs in id |> to_format |> Format.sprintf |> global_replace (regexp "var ") "" |> split (regexp ", ") |> List.map (fun x -> List.hd (split (regexp " = ") x)) |> aux @@ -176,7 +176,9 @@ struct Buffer.add_string buf str; Buffer.add_string buf ("\n" ^ pad ^ "var ctx = ctx_empty();"); (* Logging needs changing so we can use args actual name instead of t *) - List.map (fun x -> Buffer.add_string buf ("\n" ^ pad ^ "ctx_push(ctx, \"t\", " ^ x ^ ", \"expr\");") ) argslist; + List.map (fun x -> Buffer.add_string buf ("\n" ^ pad ^ "ctx = ctx_push(ctx, \"" ^ x ^ "\", " ^ x ^ ", \"term\");") ) argslist; + (* Find way to trickle actual function name in log call? *) + Buffer.add_string buf ("\n" ^ pad ^ "log(" ^ string_of_int (i + 1) ^ ", ctx, \"function\");"); aux i ((tks, str) :: xs) | ReturnStrip -> let strsplit = split (regexp "return") str in diff --git a/generator/tests/log_source.js b/generator/tests/log_source.js index ced5c44b1e979454f94a41d4713a74b3dbfea686..e6b188c420afa7a96cabe8259593f1dd366a5c10 100644 --- a/generator/tests/log_source.js +++ b/generator/tests/log_source.js @@ -30,19 +30,19 @@ var eval_ = function (expr) { return (function () { switch (expr.type) { case "Const": var n = expr.value; - ctx_push(ctx, "n", n, "value"); + ctx = ctx_push(ctx, "n", n, "value"); log(26 , ctx, "Const"); return n; case "Add": var ls = expr.left, rs = expr.right; - ctx_push(ctx, "ls", ls, "value"); - ctx_push(ctx, "rs", rs, "value"); + ctx = ctx_push(ctx, "ls", ls, "value"); + ctx = ctx_push(ctx, "rs", rs, "value"); log(28 , ctx, "Add"); return call_wrap(29, ls, eval_) + call_wrap(29, rs, eval_); case "Sub": var ls = expr.left, rs = expr.right; - ctx_push(ctx, "ls", ls, "value"); - ctx_push(ctx, "rs", rs, "value"); + ctx = ctx_push(ctx, "ls", ls, "value"); + ctx = ctx_push(ctx, "rs", rs, "value"); log(30 , ctx, "Sub"); return (function() { log_custom({line: 31, type: "enter"}); @@ -52,19 +52,19 @@ var eval_ = function (expr) { }()); case "Mul": var ls = expr.left, rs = expr.right; - ctx_push(ctx, "ls", ls, "value"); - ctx_push(ctx, "rs", rs, "value"); + ctx = ctx_push(ctx, "ls", ls, "value"); + ctx = ctx_push(ctx, "rs", rs, "value"); log(32 , ctx, "Mul"); return call_wrap(33, line, eval_) * call_wrap(33, rs, eval_); case "Div": var ls = expr.left, rs = expr.right; - ctx_push(ctx, "ls", ls, "value"); - ctx_push(ctx, "rs", rs, "value"); + ctx = ctx_push(ctx, "ls", ls, "value"); + ctx = ctx_push(ctx, "rs", rs, "value"); log(34 , ctx, "Div"); return call_wrap(35, ls, eval_) / call_wrap(35, rs, eval_); case "Pop": var s = expr.stack; - ctx_push(ctx, "s", s, "value"); + ctx = ctx_push(ctx, "s", s, "value"); log(36 , ctx, "Pop"); return Stack.pop(call_wrap(37, s, evals)); } @@ -82,8 +82,8 @@ var evals = function (sexpr) { case "Emp": return {type: "Stack.N"}; case "Push": var v = sexpr.value, s = sexpr.stack; - ctx_push(ctx, "v", v, "value"); - ctx_push(ctx, "s", s, "value"); + ctx = ctx_push(ctx, "v", v, "value"); + ctx = ctx_push(ctx, "s", s, "value"); log(48 , ctx, "Push"); return Stack.push(call_wrap(49, v, eval_), call_wrap(49, s, evals)); diff --git a/navig.html b/navig.html index e41a3de93ce3ec87ddb9be35f2faa935ce420ff6..1763eabf197f25f6277ae8721447f881b27542bd 100644 --- a/navig.html +++ b/navig.html @@ -35,7 +35,8 @@ <script src="sparray.js"></script> <script type = "text/javascript" src="source.js"></script> <script src="interp.js"></script> -<script src="generator/tests/log_source.js"></script> +<script src="generator/tests/calc.log.js"></script> +<!--<script src="generator/tests/log_source.js"></script>--> <style> .source_div {