繁体   English   中英

c++ - 如何扫描用户输入并将其切成块?

[英]How to scan through user input and cut it into chunks in c++?

我正在制作一个程序来评估条件命题(~ 或和 -> <->)。 当用户输入命题变量真值(真,假)命题 程序将遍历输入并返回整个命题的真值。

  • 例如:如果我设置p = true , q = true , r = false并输入: p 或 q 和 r
  • 无论如何,我可以先将它切成q 和 r ,然后处理并将其放回 result (这是false ),然后处理下一位( p 或false )??。 并且它必须不断切割位(以正确的优先顺序)并将它们放回去直到我离开是一个true 或 false

    • 我应该用什么来保存用户输入(数组、字符串)???

    • 任何帮助,将不胜感激 ! 谢谢。

像这样的任务通常分为两个阶段,词法分析和句法分析。

词法分析将输入拆分为标记流。 在您的情况下,标记将是运算符~orand-><-> 、变量和值truefalse 你没有提到它们,但我想你也想在你的语言中包含括号作为标记。 您的语言非常简单,您可以自己编写词法分析器,但flexragel等工具可能会对您有所帮助。

句法分析是您梳理输入的句法结构并执行您需要的任何操作(评估您的案例中的介词)的地方。 句法分析比词法分析更复杂。 您可以为此任务编写递归下降解析器,也可以使用解析器生成器为您编写代码。 用于此的传统工具称为bison ,但它有点笨重。 我喜欢另一个叫做柠檬解析器生成器的简单工具,尽管它比 C++ 更面向 C。

暂无
暂无

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

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