2011-05-18 125 views
0

我正在爲布爾計算器語言編寫語法。用這種語言編寫的程序最多隻包含一個語句,其結果將是布爾值。布爾計算器語言的語法

(A + B >= C) AND (D == 4) 

我來了這麼遠低於給出的語法:

E => T COP T | EXPR BOP EXPR 
T => VAR | EXPR 
VAR => A | B | C | D 
EXPR => AEXPR | CEXPR 
AEXPR => "(" VAR AOP VAR ")" 
CEXPR => VAR COP AEXPR | AEXPR COP AEXPR 
AOP => + | - | * |/| % 
BOP => AND | OR 
COP => == | != | < | > | <= | >= 

這裏要考慮的最主要的是

這種語言的一個例子聲明如下沒有兩個VAR可以以二進制操作BOP加入,並且語句必須返回布爾值。

我想知道上面的語法是否滿足這個標準,或者我錯過了什麼?

任何幫助將被列出。

感謝

回答

1

這裏要考慮的主要問題是,沒有兩個增值分銷商可以在一個二元操作防噴器被加入,而且語句必須返回一個布爾值。

上述規定在以下情況下會失敗:

E = EXPR BOP EXPR 
EXPR = AEXPR 

=> E = AEXPR BOP AEXPR 

我在這裏假設(VAR AOP VAR)產生一個VAR

E = T COP T | EXPR BOP EXPR; 
T = VAR | AEXPR; 
VAR = "A" | "B" | "C" | "D"; 
AEXPR = "(" VAR AOP VAR ")" | "(" VAR AOP AEXPR ")"; 
EXPR = VAR COP AEXPR | AEXPR COP AEXPR; 
AOP = "+" | "-" | "*" | "/" | "%"; 
BOP = "AND" | "OR"; 
COP = "==" | "!=" | "<" | ">" | "<=" | ">="; 

您所需的語法更爲規範的形式下面給出