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.

compilerTest.js 918B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const test = require('tape')
  2. const helpers = require('./helpers')
  3. const AST = require('../src/ast')
  4. test('compiles numbers', t => {
  5. t.plan(1)
  6. const result = helpers.compile('5')
  7. t.equal(result, '5')
  8. })
  9. test('compiles strings', t => {
  10. t.plan(1)
  11. const result = helpers.compile('"hello world"')
  12. t.equal(result, 'hello world')
  13. })
  14. test('compiles core function applications', t => {
  15. t.plan(4)
  16. let result = helpers.compile('(+ 10 8)')
  17. t.equal(result, '18')
  18. result = helpers.compile('(- 7 3)')
  19. t.equal(result, '4')
  20. result = helpers.compile('(* 9 3)')
  21. t.equal(result, '27')
  22. result = helpers.compile('(/ 10 2)')
  23. t.equal(result, '5')
  24. })
  25. test('compiles lambda expressions in the function position', t => {
  26. t.plan(2)
  27. let result = helpers.compile('((lambda (x) (+ x 1)) 2)')
  28. t.equal(result, '3')
  29. result = helpers.compile('((lambda (x y) (+ x y)) 2 3)')
  30. t.equal(result, '5')
  31. })