Решил по надобности понять устройство языков программирования, как всегда начал с лексеров но у меня появилась проблема, я не могу понять как токенизировать строку ведь она может быть произвольной. Мой код:
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": ")"
}
]
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Помогите, пожалуйстаПишу бота, есть команда, после ввода которой через 30 секунд должно выполняться действие, помогите написать таймер на Node JS
Очень интересная история получается у меня два шаблона страницы к нему подключен следующий код,
У меня проблема в CEFВсе картинки, шрифты, скрипты находятся всегда в локальном хранилище, но из-за низкой производительности некоторых систем...