繁体   English   中英

带括号的后缀的前缀,其中“操作数”不是单个标记

[英]Infix to Postfix with parentheses where 'operands' are not single tokens

我必须编写一个模仿终端bash外壳的程序,您可以在其中使用连接器将命令放在一起。 输入示例为:

(echo "hello world" && ls -a) || (echo "hello world again" && ls -l)

可以将该表达式视为中缀表达式,其中:

A = echo“你好世界”

B = ls -a

C =回声“你好,世界再次”

D = ls -l

因此表达式可以看成是:

(A && B) || (C && D)

连接器&&和|| 没有优势。

后缀转换的中缀已被广泛讨论,但是在这种情况下,“操作数”不是像数字一样的单个标记。 他们是一个字符串。

我很难找到一种解析命令标记的好方法,因此以后可以将它们视为一个。 我不知道我是否必须逐行扫描每个字符,还是可以用空格分隔输入行。

有人有什么想法吗? 我只是不想沿着永无止境的case语句开始,并弄清楚我的方法不明智。

每个项目仍是一个令牌。 您只需要编写一个知道如何将字符串作为单个标记读取的词法分析器即可。 用引号引起来时,这很容易。 如果不是,则可能会更困难-您(可能)需要决定字符串中可以包含的所有字符,或(等同地)不能包含的字符。 然后,当您开始读取未加引号的字符串时,将继续操作,直到遇到无法包含在字符串中的内容。

除了词法分析外,转换为后记将非常类似于否则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM