中缀到带括号的后缀,其中'operands'不是单个标记

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

本文关键字:operands 单个标 其中 后缀 中缀      更新时间:2023-10-16

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

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

可以将此表达方式视为infix表达式,其中:

a = echo" hello world"

b = ls -a

c = echo" hello world再次"

d = ls -l

因此表达式可以看作:

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

连接器&&和||没有预定。

后缀转换的插图已被广泛介绍,但是在这种情况下,"操作数"不是单个令牌。他们是字符串。

我很难找出一种很好的方法来解析命令令牌,以便以后可以将它们视为一个。我不知道我是否必须在线路中单独扫描每个字符,还是可以按白空间将输入线拆分。

有人有任何想法吗?我只是不想开始永无止境的案例语句的道路,并且弄清楚我的方法并不聪明。

每个项目仍然是一个令牌。您只需要写一个知道如何将字符串读为单个令牌的Lexer即可。引用弦时,这很容易。如果不是这样,它可能会更加困难 - 您(可能(需要决定所有可以在字符串中的字符,或者(等效地(那些不能。然后,当您开始阅读未引用的字符串时,您将继续直到遇到无法成为字符串的东西。

除了Lexing之外,转换为Postscript的方式几乎是否则。