From 81b5f5d8c0f5b01d63b10d56925fddce7a11200d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Cha=CC=81varri?= Date: Sat, 30 Sep 2017 20:07:30 +0200 Subject: [PATCH] Add debug printer --- lib/js/src/compiler.js | 41 ++++++++++++++++++++++++++++++++--------- src/compiler.re | 11 ++++++++++- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/lib/js/src/compiler.js b/lib/js/src/compiler.js index 04727cf..19f3fc7 100644 --- a/lib/js/src/compiler.js +++ b/lib/js/src/compiler.js @@ -1,11 +1,10 @@ // Generated by BUCKLESCRIPT VERSION 1.9.3, PLEASE EDIT WITH CARE 'use strict'; -var List = require("bs-platform/lib/js/list.js"); -var Block = require("bs-platform/lib/js/block.js"); -var $$String = require("bs-platform/lib/js/string.js"); -var Caml_string = require("bs-platform/lib/js/caml_string.js"); -var Js_primitive = require("bs-platform/lib/js/js_primitive.js"); +var List = require("bs-platform/lib/js/list.js"); +var Block = require("bs-platform/lib/js/block.js"); +var $$String = require("bs-platform/lib/js/string.js"); +var Caml_string = require("bs-platform/lib/js/caml_string.js"); function explode(s) { var _i = s.length - 1 | 0; @@ -269,14 +268,38 @@ function tokenizer(input) { }; } -console.log(Js_primitive.undefined_to_opt(JSON.stringify(tokenizer("(add 2 (subtract 4 2))")))); +function printToken(token) { + if (typeof token === "number") { + if (token) { + return "CloseParen"; + } else { + return "OpenParen"; + } + } else { + switch (token.tag | 0) { + case 0 : + return "Number " + token[0]; + case 1 : + return "String " + token[0]; + case 2 : + return "Name " + token[0]; + + } + } +} + +List.iter((function (k) { + console.log(printToken(k)); + return /* () */0; + }), tokenizer("(add 2 (subtract 4 2))")); var machine = /* record */[ /* current : None */0, /* parsed : [] */0 ]; -exports.machine = machine; -exports.explode = explode; -exports.tokenizer = tokenizer; +exports.machine = machine; +exports.explode = explode; +exports.tokenizer = tokenizer; +exports.printToken = printToken; /* Not a pure module */ diff --git a/src/compiler.re b/src/compiler.re index c1a0ddc..f4eeef2 100755 --- a/src/compiler.re +++ b/src/compiler.re @@ -56,4 +56,13 @@ let tokenizer input => { tok (explode input) machine.current machine.parsed }; -Js.log @@ Js.Json.stringifyAny (tokenizer "(add 2 (subtract 4 2))"); \ No newline at end of file +let printToken token => + switch token { + | OpenParen => "OpenParen" + | CloseParen => "CloseParen" + | Number s => "Number " ^ s + | String s => "String " ^ s + | Name s => "Name " ^ s + }; + +List.iter (fun k => Js.log (printToken k)) (tokenizer "(add 2 (subtract 4 2))"); \ No newline at end of file