A templating language that looks like Lisp and compiles to HTML
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

parser.js 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const test = require('tape')
  2. const Lexer = require('../src/lexer')
  3. const Node = require('../src/node')
  4. const Parser = require('../src/parser')
  5. const tt = require('../src/tokenTypes')
  6. test('parses token stream into a tree', t => {
  7. t.plan(1)
  8. const lexer = new Lexer()
  9. let tokenStream = lexer.scan(`
  10. (div :class "foobar"
  11. (p :class "bazquux"))
  12. `)
  13. let parser = new Parser(tokenStream)
  14. let tree = parser.parse()
  15. t.deepEqual(
  16. tree,
  17. [
  18. new Node({
  19. type: 'functionCall',
  20. functionName: 'div',
  21. args: [
  22. new Node({
  23. attributeName: 'class',
  24. attributeValue: new Node({type: 'string', content: 'foobar'}),
  25. })
  26. ],
  27. subtree: [
  28. new Node({
  29. type: 'functionCall',
  30. functionName: 'p',
  31. args: [
  32. new Node({
  33. attributeName: 'class',
  34. attributeValue: new Node({type: 'string', content: 'bazquux'}),
  35. })
  36. ],
  37. subtree: [],
  38. })
  39. ]
  40. })
  41. ]
  42. )
  43. })