2016-11-23 67 views
0

我必須檢查簡單布爾表達式的語法,如 (X = 100和Y < 100),我寫了語法並試圖檢查這是否正確,因此我正在使用此聯機工具http://smlweb.cpsc.ucalgary.ca/start.html。它是說語法錯了。未能生成語法

有人可以指出這個問題嗎?提前致謝。

boolean  -> bool_term | boolean OR bool_term 
bool_term  -> bool_factor | bool_term AND bool_factor 
bool_factor -> bool_primary | NOT bool_primary 
bool_primary -> predicate | (boolean) 
predicate  -> expr comp_op expr 
expr   -> string | number. 
comp_op  -> = | > 
+0

歡迎的StackOverflow!如果我的答案適合您,請考慮將其標記爲已接受。如果沒有,請對此發表評論。 –

回答

1

它主要是關於服務的愚蠢語法。例如,字符=>不受支持,無法轉義它們。

這個語法的工作原理:

BOOLEAN  -> BOOLTERM | BOOLEAN or BOOLTERM . 
BOOLTERM  -> BOOLFACTOR | BOOLTERM and BOOLFACTOR . 
BOOLFACTOR -> BOOLPRIMARY | not BOOLPRIMARY . 
BOOLPRIMARY -> PREDICATE | (BOOLEAN) . 
PREDICATE  -> EXPR COMPOP EXPR . 
EXPR   -> string | number . 
COMPOP  -> eq | gt .