中缀到带括号的后缀,其中'operands'不是单个标记
Infix to Postfix with parentheses where 'operands' are not single tokens
我必须编写一个程序,该程序模仿终端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的方式几乎是否则。
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- g++ 说函数不存在,即使包含正确的标头
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 在CMake中使用find_package时,是否会显式包含标头
- 错误"Could not find Boost"(缺少:上下文标头)
- 如何在标头中声明(或定义)函数的问题
- 如何避免在仅标头库中C++类/变量重定义
- 矢量下标超出SFML游戏中的范围
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- C++算法标头中,为什么要使用 "!(val < *first)" ?
- C++标头错误 C2238 意外标记";"
- c++ 是否保证标头初始化的静态 const 成员跨编译单元和库共享单个实例?
- 将仅标头库的包含包装在单个 cpp 文件中
- 中缀到带括号的后缀,其中'operands'不是单个标记
- 包含其他标头的单个标头
- 无法在跨多个 DLL 的标头中定义单个对象
- 何时可以使用具有单个标头的多个源文件
- 如何将cv::mat标头和数据部分转换为单个字节数组