Как токенизировать строку

167
25 июля 2018, 11:50

Решил по надобности понять устройство языков программирования, как всегда начал с лексеров но у меня появилась проблема, я не могу понять как токенизировать строку ведь она может быть произвольной. Мой код:

function tryTokenize(token) { 
      if (token == "put") { 
        return { 
          "IO": "PUT" 
        }; 
      } else if (token == "(") { 
        return { 
          "ROUND_BRACKET_START": "(" 
        }; 
      } else if (token == ")") { 
        return { 
          "ROUND_BRACKET_END": ")" 
        }; 
      } else if (token == "\"") { 
        return { 
          "QUOTE": "\"" 
        }; 
      } 
     
      return false; 
    } 
     
    function lexer(source) { 
      var results = []; 
      var currentStr = ""; 
      var currentToken 
      for (var i = 0; i < source.length; i++) { 
        currentStr += source[i]; 
        currentToken = tryTokenize(currentStr); 
        if (currentToken !== false) { 
        	 
          results.push(currentToken); 
          currentStr = ""; 
        } 
      } 
    	return results; 
    } 
    var source = "put(\"Hello\")"; 
     
     
    console.log(lexer(source));

вывод

[
  {
    "IO": "PUT"
  },
  {
    "ROUND_BRACKET_START": "("
  },
  {
    "QUOTE": "\""
  }
]

требуется

[
  {
    "IO": "PUT"
  },
  {
    "ROUND_BRACKET_START": "("
  },
  {
    "STRING": "Hello"
  },
  {
    "ROUND_BRACKET_END": ")"
  }
]
READ ALSO
Таймер на Node JS

Таймер на Node JS

Помогите, пожалуйстаПишу бота, есть команда, после ввода которой через 30 секунд должно выполняться действие, помогите написать таймер на Node JS

175
noConflict() не срабатывает

noConflict() не срабатывает

Очень интересная история получается у меня два шаблона страницы к нему подключен следующий код,

155
Как определить, что все ресурсы были показаны пользователю в браузере?

Как определить, что все ресурсы были показаны пользователю в браузере?

У меня проблема в CEFВсе картинки, шрифты, скрипты находятся всегда в локальном хранилище, но из-за низкой производительности некоторых систем...

158