recursive-descent

    0熱度

    1回答

    解析方法的正確分類是什麼?我在不同的網站和講座上看到了不同的分類。 這裏有一些。 我發現這個上blog 這是從教程點Top Down 和 Bottom Up 現在這一個從GATE講師名爲Ravindra 我完全糊塗了什麼會的解析方法正確分類。請在描述分類的答案中包含一棵樹狀結構圖。 請發表評論您已投票問題或回答。

    0熱度

    2回答

    我寫布爾表達式的遞歸下降解析器的布爾表達式,例如: (1 * 0) (0 + ~1) (0 * (1 + c) 其中1爲「真」,0是「假」,+是'或',*是'和',〜是'不是','c'只是一些變量名(可以是任何單個字母)。我計劃使用括號而不是實施某種操作順序。 我現在的分析器可以識別表達 Expression ::= 1 | 0 | Character

    1熱度

    1回答

    有人可以用簡單的術語解釋我的遞歸下降解析器是什麼? 我被困在試圖得到它。這在wikipedia中解釋得非常模糊。 遞歸下降解析器是一種自頂向下的解析器,構建爲一組遞歸過程,每個過程都實現語法的生成規則。 那麼,我能理解它嗎?解析器是一個按預定義順序逐一執行命令的程序,每次執行命令時都具有相同的含義,但它會根據輸入以某種方式調整輸出,這意味着每次輸入時調整可能會不同被改變。 而我仍然不明白爲什麼在這

    0熱度

    1回答

    我在使用ANTLR 4和IntelliJ的第一步。我正在嘗試爲數學表達式創建一個簡單的遞歸爬山解析器。我得到一個錯誤 line 1:0 mismatched input '3' expecting {VARIABLE; REALNUM, INTNUM} 好像詞法分析器不能正確轉3到令牌,解析器使用,但我不能找到問題存在。 詞法: lexer grammar testLexer; PLUS:

    0熱度

    1回答

    當我輸入類似3(5)的東西時,我的代碼失敗。 如何修改我的代碼,以便它在中間表達式中解決然後相乘? double parseTerm() { double x = parseFactor(); while(true) { if (shift('*')){ x *= parseFactor(); // multiply } el

    1熱度

    1回答

    我似乎無法找到PEG本身的解析表達式語法(PEG)。 如何解析解析表達式語法? 注意這個問題不是關於如何從PEG構建一個遞歸正確的解析器,而是解析一個PEG。

    1熱度

    1回答

    我如何描述與類型別名這個遞歸語法: type FieldValue = Seq[String] :+: String :+: Int :+: Long :+: CNil type FieldLeaf = FieldValue :+: SubField :+: CNil type SubField = Seq[Field] type Field = (String, FieldLeaf)

    0熱度

    1回答

    我已經開始在C++中編寫多態遞歸下降解析器。但是我遇到了一個問題。這些課程都設置這樣的: class Node { public: std::vector<Node*> children; }; class NodeBinary : public Node { public: Node* left; Node* right; }; class Node

    2熱度

    3回答

    我想要解答這個問題的更多幫助,Evaluating a math expression given in string form。用戶@Boann用一個非常有趣的算法回答了這個問題,他也指出可以改變以接受變量。我已經設法改變它,並讓它起作用,但不知道他是如何分離編譯和評估。這裏是我的代碼: import java.util.HashMap; import java.util.Map; pub

    2熱度

    1回答

    我試圖在給定條件下查找所有可能的表達式組合。 例如,考慮以下條件。 ((b > 5) | (c > 4)) & ((c < 6) | (b < 2))) 我需要一個像 [(b > 5) , (c < 6)] [(b > 5) , (b < 2)] [(c > 4) , (c < 6)] [(c > 4) , (b < 2)] 的邏輯是一樣(a|b)&(c|d) -> a&c,a&d,