printf and print

Base fiddle with DOM-based print and printf functions

by esbullington

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/sprintf/1.0.1/sprintf.min.js"></script>
<div id="printf"></div>
<div id="print"></div>

JavaScript

// Little printf making use of 
// https://github.com/alexei/sprintf.js
function printf(s, arr) {
    var t = vsprintf(s, arr);
    console.log(t);
    var el = document.getElementById("printf");
    var span = document.createElement("span");
    span.innerText = t;
    el.appendChild(span);
}

function print(s) {
    console.log(s);
    var el = document.getElementById("print");
    var span = document.createElement("span");
    span.innerText = s;
    el.appendChild(span);
}

function parseExpression(program) {
  program = skipSpace(program);
  var match, expr;
  if (match = /^"([^"]*)"/.exec(program))
    expr = {type: "value", value: match[1]};
  else if (match = /^\d+\b/.exec(program))
    expr = {type: "value", value: Number(match[0])};
  else if (match = /^[^\s(),"]+/.exec(program))
    expr = {type: "word", name: match[0]};
  else
    throw new SyntaxError("Unexpected syntax: " + program);

  return expr;
}

function skipSpace(string) {
  var first = string.search(/\S/);
  if (first == -1) return "";
  return string.slice(first);
}

var stmt = 'define(x, 8)'
      
var expr = parseExpression(stmt);
console.log(expr);