簡體   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