Мне нужно написать программу, которая имитирует оболочку терминала, где вы можете соединять команды, используя соединители.Примером ввода может быть:
(echo "hello world" && ls -a) || (echo "hello world again" && ls -l)
Это выражение можно рассматривать как инфиксное выражение, где:
A = echo "hello world"
B = ls-a
C = эхо «Привет, мир снова»
D = ls -l
Таким образом, выражение можно увидеть как:
(A && B) || (C && D)
Разъемы && и ||не имеет приоритета.
Преобразование из инфикса в постфикс широко освещалось, но «операнды» в этом случае не являются единичными токенами, как число.Они строка.
Мне трудно найти хороший подход для разбора командных токенов, чтобы потом я мог обращаться с ними как с одним.Я не знаю, должен ли я сканировать каждый символ отдельно в строке, или я могу разделить строку ввода пробелом.
У кого-нибудь есть идеи?Я просто не хочу идти по пути бесконечных падежных операторов и понять, что мой метод не очень умен.