【发布时间】:2019-07-17 06:47:37
【问题描述】:
我正在编写一个程序来评估条件命题(~ or and -> )。当用户输入命题变量和真值(真、假),以及命题;程序将遍历输入并返回整个命题的真值。
- 例如:如果我设置 p = true, q = true, r = false 并输入: p 或 q 和 r。
-
是不是我可以先把它分成q和r,然后处理并放回result(即false),然后处理下一位( p 或 false) ??。而且它必须不断地剪掉一些位(按照正确的优先顺序)并将它们放回去直到我离开是一个单一的true or false。
我应该用什么来保存用户输入(数组、字符串)???
任何帮助将不胜感激!谢谢。
【问题讨论】:
-
您将用户输入保存在一个字符串中(应该很明显,这就是用户输入的内容)。但是当您 parse 该字符串时,您可能希望将输入转换为其他数据结构。表示输入的语法结构(包括优先级)的数据结构称为抽象语法树(AST),因此您可能需要研究它。不确定是否需要完整的 AST 这么简单,但这是您在编写代码时会决定的。您可能还想研究可以帮助您解决此问题的许多可用解析工具中的任何一种。
-
我认为我们不需要 AST 概念来解决这个问题,因为它太复杂了,而且它只是我离散结构课程的入门实验室。我将查找并研究更多有关解析工具的信息。顺便谢谢你的建议!!
标签: c++ user-input truthtable