Я пытаюсь реализовать алгоритм маневровой станции, но мне нужна помощь в определении как лучше всего разделить строку на ее токены.
Если вы заметили, первым шагом алгоритма является «чтение токена». Это не совсем нетривиальная вещь. Токены могут состоять из чисел, операторов и скобок.
Если вы делаете что-то вроде:
(5+1)
Простой string.split() даст мне массив токенов { "(", "5", "+", "1", ")" }.
Однако это становится более сложным, если у вас есть числа с несколькими цифрами, например:
((2048*124) + 42)
Теперь наивный string.split() не поможет. Многозначные числа - это проблема.
Я знаю, что мог бы написать лексер, но есть ли способ сделать это без написания полноценного лексера?
Я реализую это в JavaScript, и мне бы хотелось, если это возможно, не идти по пути лексера. Я буду использовать операторы «*», «+», «-» и «/» вместе с целыми числами.