ll

    0熱度

    1回答

    我目前正在爲C-編譯一個編譯器。我目前正在研究解析器,出於某種原因,我似乎無法解決EXPRESSION生產中第一次碰撞(終端ID)的問題。下面,是我現在語法的一個子集,是否有人能指出我如何解決衝突(或轉換爲等價的LL(1)可解析語法)的正確方向。 EXPRESSION -> id VAR eq EXPRESSION | SIMPLEEXPRESSION VAR -> lbracket EXPR

    0熱度

    1回答

    對於不LL(1)或LR(1)一個人如何可以嘗試找出是否某些數量n存在使得語法可LL(n)或LR(n)語言? 通過查看LR(0)項目的規範集合來檢查語法是否爲LR(0)。然後,假設它不是LR(0),可以通過引入lookahead符號來檢查它是否爲LR(1)。我的簡單推理告訴我,爲了檢查它是否爲LR(2),您可能必須使前瞻包含接下來的兩個符號而不是一個。對於LR(3),您必須考慮三個符號等。 即使這種

    0熱度

    1回答

    我的任務是計算FIRST和FOLLOW集以下語法: P ::= S CS . S ::= (int , int) CS ::= C CS | epsilon C ::= left int | right int | low C 我得到了以下第一組: FIRST(S) = {'('} FIRST(C) = {left,right,low} FIRST(CS) = {left,right

    1熱度

    1回答

    我讀了我的筆記之一,準備博士入學考試。大寫字母不是終端,小寫字母是終端。 我們有兩個語法像: G1: S-->bSa | aSb | ba G2: S-->XYa X-->a | Yb Y--> c | epsilon 我記的說: G1不是LL(1)語法,但G2是LL(1) Grammar.I知道了一些關於LL(1),但我覺得這個例子對我來說並不明顯。任何人都可以爲我簡化

    2熱度

    1回答

    假設LL語法 STATEMENT ::= ε | R R :: = print (variable) 的一大塊,我試圖找到第一(聲明) FIRST(STATEMENT) = FIRST(ε) + FIRST(R) FIRST(R) = { print (variable) } 我的問題是。 FIRST(R)是否正確?或以下: FIRST(R) = {print}

    0熱度

    1回答

    P → PL | L L → N; | M; | C N → print E M → print "W" W → TW | ε C → if E {P} | if E {P} else {P} E → (EOE) | V (note: this has a variable O) O → + | - | * V → 0 | 1 | 2 | 3 (note: this has a t

    0熱度

    1回答

    我相信讀它的每個人都熟悉其他模糊不清的問題。所以我會跳過解釋。 我在一本編譯器書(dragon book)上找到了代表IF和ELSE的不含糊語法。這裏是。 stmt->matched_stmt | open_stmt matched_stmt->if exp then matched_stmt else matched_stmt | other open_stmt->if exp then s

    0熱度

    2回答

    我想寫一個語法分析器,目前有一個LL語法(在Antlr中)下面的產品,我試圖解析一個或多個(數字或字符串)是分離的由一個「#」即是正確的聯想。我該如何修改這些作品,以便它可以解析由「#」分隔的一個或多個字符串,而不僅僅是一個?對於這個語法語言 A ::= B | Number | String B ::= C "->" A C ::= Number | Str

    2熱度

    1回答

    如何消除以下類型的左遞歸?我似乎無法在這個特定的規則上應用一般規則。 A -> A | a | b 通過使用刪除規則你: A -> aA' | bA' A' -> A' | epsilon 仍然有左遞歸。 這是說什麼關於語法是/不是LL(1)? 謝謝。

    0熱度

    1回答

    我對這本教科書很難接受,而且我的教授認爲回答問題對已經知道進入課堂的材料的學生是不公平的(從這個人獲得的反饋是一個數據挖掘過程本身)。無論如何,我的問題圍繞着CFG(正式語言/函數式編程類)的派生。 Given a context free grammar that looks like: S-> a|B B-> b|C C-> c 找到最左邊的推導。是簡單的嗎?因爲S-> a是S->