A templating language that looks like Lisp and compiles to HTML
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

helpers.js 702B

1234567891011121314151617181920212223242526272829303132
  1. const Compiler = require('../src/compiler')
  2. const Env = require('../src/env')
  3. const Evaluator = require('../src/evaluator')
  4. const Lexer = require('../src/lexer')
  5. const Parser = require('../src/parser')
  6. const scan = source => {
  7. const lexer = new Lexer()
  8. return lexer.scan(source)
  9. }
  10. const parse = source => {
  11. const parser = new Parser()
  12. return parser.parse(scan(source))
  13. }
  14. const evaluate = source => {
  15. const evaluator = new Evaluator()
  16. return evaluator.eval(parse(source), new Env())
  17. }
  18. const compile = source => {
  19. const compiler = new Compiler()
  20. return compiler.compile(evaluate(source))
  21. }
  22. module.exports = {
  23. compile: compile,
  24. evaluate: evaluate,
  25. parse: parse,
  26. scan: scan,
  27. }