是否可以使用Prolog DCG來解析「if-then-else」語句?如果是這樣,那麼我怎麼解析這樣的陳述,因爲我必須匹配特定的「if」「then」「else」字符串。如果這是不可能的,我的選擇是什麼?序言:如何使用DCG解析器來解析if - then - else語句
0
A
回答
0
DCG非常適合。但是作爲Prolog的準系統,你必須做出一些選擇來利用這些力量並實施任何實用的東西。例如,如果可能,我將DCG直接應用於文本來源,而無需使用預先標記的標記。如果這是合適的,取決於實際的任務。我們假設這裏沒問題。然後我們的DCG可以在SWI-Prolog中使用可用的幫助程序庫實現:
:- [library(http/dcg_basics)].
conditional(if_then_else(Cond, Then, Else)) -->
blanks, "if",
blanks, bool_expression(Cond),
blanks, "then",
blanks, statement(Then),
blanks, "else",
blanks, statement(Else).
很簡單,不是嗎?
這other answer顯示如何解析(和評估)的表達式,佔優先。您可以使用布爾運算符輕鬆擴展它,只需給它們正確的優先級即可。聲明將允許分配,並將有條件地遞歸。
你必須要注意的空白 // 0的使用,是一個可能的「空匹配的生產 可能會引入一些效率低下如果出現「並排」的一些其他生產用相同的屬性。
當bool_expression // 1 //聲明1已經確定,解析器可以調用:
...,
phrase(conditional(C), " if 1 < 2 then a = 1 else a = 0 "),
...
和C將包含語法樹...
相關問題
- 1. 使用jq解析if-then-else問題
- 2. 解析的if/else/if語句
- 3. If/else/elseif語句解析不正確
- 4. 使用java解析器編寫else if語句
- 5. 如何在解析器中避免大量if-else語句
- 6. PLY yacc解析IF-ELSE IF-ELSE嵌套語句
- 7. Haskell:if-then-else解析錯誤
- 8. 使用if/then語句解析C++中的argv []選項
- 9. VHDL程序IF-THEN-ELSE-if語句
- 10. PROLOG - DCG解析
- 11. Pascal:理解if/then語句
- 12. 使用DCG解析變量
- 13. 解析JSON使用Python和if語句
- 14. 如何解決這個IF-ELSE-THEN語句在MySQL觸發
- 15. MGrammar用於解析IF語句
- 16. If/then/else語句批量
- 17. MySQL IF THEN ELSE語句
- 18. SqlAlchemy:case語句(case - if - then -else)
- 19. 如何解析if語句野牛
- 20. PHP解析語句錯誤if語句
- 21. 如果elsif else語句解析
- 22. 如何解析多語言的句子?
- 23. Prolog DCG用於解析轉義序列
- 24. 編寫序言解析器
- 25. 解析NSString。如何使用if&else語句檢查特定的字符串?
- 26. 如何在Oracle的where子句中使用IF THEN ELSE語句?
- 27. 如何解析的if-else支架
- 28. 編程語言解析器的來源?
- 29. DOT語言解析器
- 30. 添加if/else到python解析器
謝謝!我一定會試試這個! – user1059303 2012-01-17 23:11:51