Различение операндов и операторов в токенизированной строке в C ++ - PullRequest
0 голосов
/ 08 марта 2019

Как мне написать код такой, чтобы

if(token is a operand)
    do this
if(token is a operator)
   do this

Для операндов можно использовать функцию stoi(), но как мне обработать операторы?

Кроме того, как я могу токенизировать строку без пробелов?

1 Ответ

0 голосов
/ 08 марта 2019

Обычный способ - сделать односимвольную заглядывание -

  • Если это цифра, то разобрать следующую строку как операнд.
  • Если это начальный символодного из ваших операторов, затем проанализируйте следующую строку как оператор.

Существуют различные способы токенизации операндов и операторов, не полагаясь конкретно на пробелы.Например, для операндов вы можете продолжать читать символы до тех пор, пока они являются цифрами / шестнадцатеричными или ., а небольшой локальный конечный автомат отслеживает ход (например, уже видели .).

Для операторов, если общее число операторов не слишком велико, вы можете просто прочитать необходимое количество символов (при условии, что они доступны из входного потока) и выполнить сравнение строк.

...