如何通过用户输入扫描并将其切成C 的块
How to scan through user input and cut it into chunks in c++?
我正在制作一个程序来评估条件命题(〜或and->< ->)。当用户输入命题变量和真实价值(true,false)和命题;该程序将通过输入并返回整个主张的真实价值。
- for ex:如果我设置 p = true ,q = true ,r = false : P或Q和R 。
-
无论如何我都可以将其切入 q和r ,然后处理并将其放回结果(即 false false ),然后处理下一个位( p或 false )??。而且它必须继续切割碎屑(以正确的优先顺序),然后将它们放回原处,直到我离开的是一个是the或false 。
-
,我应该用来保存用户输入(数组,字符串)???
-
任何帮助将不胜感激!谢谢。
-
这样的任务通常分为两个阶段:词汇分析和句法分析。
词汇分析将输入分解为令牌的流。在您的情况下,令牌将是操作员~
,or
,and
,->
,<->
,变量和值true
,false
。您没有提及它们,但我想您也想在您的语言中包含括号作为令牌。您的语言很简单,您可以自己编写词汇分析仪,但是诸如Flex或Ragel之类的工具可能会帮助您。
synyactic分析是您逗弄输入的句法结构并执行所需的任何动作(在您的情况下评估介词)。句法分析比词汇分析更为复杂。您可以为此任务编写A 递归下降解析器,也可以使用解析器生成器为您编写代码。传统的工具称为野牛,但有点笨拙。我喜欢另一个称为柠檬解析器发生器的简单工具,尽管它比C 更为方向。
相关文章:
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- C++:在不中断共享的情况下通过引用传递共享 PTR?
- C++复杂情况的比较器通过参数问题
- Valgrind 大小为 8 且地址 0x5b7e520 的读取无效,在大小为 16 的块内为 0 字节 free'd
- 当我使用 void 函数的返回值(通过强制转换函数指针)时,究竟会发生什么?
- 为什么我的双变量通过添加 c++ 显示 nan?
- 为什么 C++ 地址中的矢量无法通过原始指针访问
- 如何删除文件中的数字,通过 c++ fstream 的
- 如何在C++中创建特定大小的消息以通过UDP套接字发送?
- 我们可以在不使用head指针的情况下通过使用head的简单变量而不是head的指针来实现链表吗
- 为什么模板类的成员需要通过其模板类的参数进行参数化
- 我该如何循环遍历我的数组(缓冲区——包含一个文本文件),并将其打印成30字节的块
- 即使全局颜色发生变化,我应该如何让我的块保持其颜色?
- 在不同的块中C++变量
- 代码::具有 SFML 2,4 的块中未定义的引用
- GNU Radio中基于条件的输出的块类型
- 在 Valgrind 输出中仍然可以访问 std 线程向量的块
- 为什么我的IO_Service :: run_one()的实现会导致不确定的块并触发错误#125
- 在 API 中将一个张量的块复制到另一个张量C++
- 如何通过用户输入扫描并将其切成C 的块