glr

    3熱度

    1回答

    當GLR解析器以兩種或兩種以上的方式將某些文本縮減到相同的非終端時,它會合並解析子樹。 Rekers爲此使用'符號節點'。 我這不是每個非終端都可能導致合併。事先知道非終端永遠不會合並將大大簡化分析樹的構建。 例如在Elkhound Technical Report中,作者實現了GL語法分析器的C++語法。他這樣描述的: 語法目前有37換檔/減少衝突,47減少/減少衝突,8曖昧非終結。 如何爲給定

    2熱度

    2回答

    我正在寫GLR的樂趣(再次,因爲我瞭解了自我的最後一次嘗試以來的一些事情)。解析器正在工作,我正在執行消歧規則。我正在以似乎有效的方式處理優先事項。現在我對結合性有點不知所措。 說我有這樣的語法: E <- E '+' E (rule 1) E <- E '-' E (rule 2) E <- '0' (rule 3) E <- '1' (rule 4) 如果規則1)和2)具有相同的

    1熱度

    2回答

    我有以下的野牛語法片段: binary_op: BINARY_OP { ... } | '|' %prec BINARY_OP { ... } ; non_keyword_expr: non_keyword_expr binary_op non_keyword

    0熱度

    1回答

    我想從快樂生成一個GLR解析器,但是一旦文件生成就會出錯。 下面是一個例子,ABC.y,所以很顯然我試圖: { module Main where } %name ps1 s1 %tokentype { ABC } %error { parseError } %token a { A } b { B } c { C } %% s1: a a a b

    0熱度

    1回答

    根據wikipedias GLR description,他們「處理非確定性和模棱兩可的語法」。 我可以想像一個模棱兩可的語法,如dangling else problem,但什麼是不確定性的非確定性CF語法?

    0熱度

    1回答

    我是新來的野牛,並且不幸的是需要爲可能具有變量名稱中的運算符的語言編寫語法分析程序。例如,取決於上下文中,表述 FOO = BAR-BAZ 可以被解釋爲任一: 可變"FOO"被分配可變"BAR"減去變量"BAZ"的值,OR 的值 變量"FOO"被賦值變量"BAR-BAZ" 幸運的語言需要變量聲明的時間提前,所以我能確定給定的字符串是否是通過函數有效的變量,我實現: bool isVariabl

    4熱度

    2回答

    我嘗試幾種不同的解析器生成聲稱能夠生成GLR解析器即那些能處理不明確的文法(野牛,的DParser等)。這是我說的類型的一個非常簡單的二義性文法: START: A | B; A: C | D; B: C | D; C: T1 | T2; D: T3 | T4; T1: 't1'; T2: 't2'; T3: 't3'; T4: 't4'; 我可以生成解析器就好了,但我得到「未

    -1熱度

    1回答

    我有一個大的語法編寫爲DParser並使用Python綁定。當我第一次運行解析器和生成的DParser其內部表,我得到了一些類似這樣的警告: warning: trying to write code to binary file warning: trying to write code to binary file warning: trying to write code to bina

    1熱度

    1回答

    EBNF這樣 Goal = Stmt Stmt = "if" "expr" "then" Stmt ("else" Stmt)? Stmt = "S" 我應該將其改爲 Goal = Stmt X = "else" Stmt Stmt = "if" "expr" "then" Stmt | "if" "expr" "then" Stmt X Stmt = "S" 或者 Goal =

    0熱度

    1回答

    在1.5.4節中使用任意謂詞控制解析: 野牛手冊指定您可以通過檢查規則中的選項這種格式的括號中的謂語: parent_rule: %?{ test_predicate_flag } child_rule_1 | %?{ !test_predicate_flag } child_rule_2; 的問題是,我得到上面的格式此語法​​錯誤在我的語法文件: error: invalid