1
我給出了一種上下文無關語法,它定義了給定情況下有效的算術表達式的含義。問題在於把它寫在haskell和Prolog中。這是CFG。Prolog中的算術表達式
Expr ::= lit(i)
| add(Expr, Expr)
| sub(Expr, Expr)
在Haskell中它相當簡單。我只是使用數據類型,將其稱爲Expr,然後離開我。這是我寫的:
data Expr = Lit Integer |
Add Expr Expr |
Sub Expr Expr
但我相當堅持寫在Prolog。此外,運行expr(E)(其中E是一個算術表達式),如果它確實是一個由CFG定義有效的表達式,則它應計算爲true。到目前爲止,我寫了這個,但我不認爲這是正確的。所以幫我弄清楚。
expr(lit(i), i).
expr(add(expr(), expr()), Res).
expr(sub(expr(), expr()), Res).
這是** **不是一個CFG!終端符號在哪裏? – false 2014-12-03 10:26:42
讓我們假設它是一個非正式的,象徵性的CFG,如果它很重要的話。 – 2014-12-03 10:28:58
終端符號喊我點燃(i)。 – 2014-12-03 10:31:18