[英]Evaluating Logical expression in string format with operators as predefined variables in Embedded C++
(Operand 1) (Operator) (Operator 2)
示例:
Var_A AND Var_B
我想用interpreter來解決這個問題,但是我對interpreter不太熟悉,只是聽說這種情況下可以使用interpreter。
請提出相同的邏輯解決方案。
您的解決方案將是編寫一個掃描器和解析器來構建一棵樹。
獲得想法的最佳解決方案是使用Flex和Yacc進行一些測試。 這些工具允許您進行掃描 (Flex) 並將掃描的字符串轉換為解析器 (Yacc) 可以使用上下文無關語法 (CFG) 將其轉換為對方程進行編碼的節點樹。 (這與編譯器的完成方式非常相似)
如果您的輸入是這樣的,這允許您執行以下操作:
var1 + var2
您掃描此字符串以查找令牌,它們是: var1<variable> +<operator> var2<variable>
您將這些標記轉換為樹的節點:
node #1
op: +
operatorType: enumvalue for +
| |
| |
| |
\/ \/
node #2 node# #3
name: var1 name: var2
type: var type: var
您現在可以遍歷樹並使用樹中對象的成員來確定它是什么以及如何使用它。
現在棘手的部分是你將如何在受限的嵌入式設備中實現它。 如果您的設備有足夠的 RAM 來包含足夠大的用於此樹結構的數據緩沖區,則可以做到這一點。 我的解決方案是為我的樹 object 節點分配一個緩沖區,並為變量名稱分配一個緩沖區,這將允許在沒有碎片的情況下使用 static 數量的 memory。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.