JSFiddle - React, Tailwind, and code Playground

by Martin Malý

HTML

<script src="https://rawgit.com/maly/514a405790450c9998fa140da9664c8d/raw/907d6b6aa3556d335cb3a7985a2d2a3af6deb962/TokenStream.js"></script>
<script src="https://rawgit.com/maly/514a405790450c9998fa140da9664c8d/raw/907d6b6aa3556d335cb3a7985a2d2a3af6deb962/InputStream.js"></script>
<script src="https://rawgit.com/maly/514a405790450c9998fa140da9664c8d/raw/907d6b6aa3556d335cb3a7985a2d2a3af6deb962/parse.js"></script>
<div id="output">

</div>

CSS

div#output {
    font-family: monospace;
    white-space: pre-wrap;
}

JavaScript

var code='# toto je komentář'+"\n";

code += 'println("Hello World!");'+"\n";

code += 'println(2 + 3 * 4);'+"\n";

code += '# funkce jsou uvozeny slovem `lambda` nebo znakem `λ`'+"\n";
code += 'fib = lambda (n) if n < 2 then n else fib(n - 1) + fib(n - 2);'+"\n";

code += 'println(fib(15));'+"\n";

code += 'print-range = λ(a, b)             # `λ` je synonymum pro `lambda`'+"\n";
code += '                if a <= b then {  # `then` je volitelné, jak je vidět níž'+"\n";
code += '                  print(a);'+"\n";
code += '                  if a + 1 <= b {'+"\n";
code += '                    print(", ");'+"\n";
code += '                    print-range(a + 1, b);'+"\n";
code += '                  } else println("");        # newline'+"\n";
code += '                };'+"\n";
code += 'print-range(1, 5);'+"\n";
code += ''+"\n";

var ast = parse(TokenStream(InputStream(code)));

var output = document.getElementById("output");
output.innerHTML = (JSON.stringify(ast, null, 2));