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));