版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

45 строки
1018 B

  1. const { calculateTokenCharactersRange } = require('../helpers')
  2. const { TOKEN_ATTRIBUTE_KEY } = require('../constants/token-types')
  3. const { ATTRIBUTES_CONTEXT } = require('../constants/tokenizer-contexts')
  4. function keyEnd (state, tokens) {
  5. const range = calculateTokenCharactersRange(state, { keepBuffer: false })
  6. tokens.push({
  7. type: TOKEN_ATTRIBUTE_KEY,
  8. content: state.accumulatedContent,
  9. startPosition: range.startPosition,
  10. endPosition: range.endPosition
  11. })
  12. state.accumulatedContent = ''
  13. state.decisionBuffer = ''
  14. state.currentContext = ATTRIBUTES_CONTEXT
  15. }
  16. function isKeyBreak (chars) {
  17. return (
  18. chars === '='
  19. || chars === ' '
  20. || chars === '\n'
  21. || chars === '\t'
  22. || chars === '/'
  23. || chars === '>'
  24. )
  25. }
  26. function parseSyntax (chars, state, tokens) {
  27. if (isKeyBreak(chars)) {
  28. return keyEnd(state, tokens)
  29. }
  30. state.accumulatedContent += state.decisionBuffer
  31. state.decisionBuffer = ''
  32. state.caretPosition++
  33. }
  34. module.exports = {
  35. parseSyntax
  36. }