2016-10-26 79 views
0

我想爲創建LL語法分析器(詞法分析)的目的編寫命題邏輯的語法。命題邏輯語法的正確性

我嘗試以下語法:

F = F and F 
F = F or F 
F = F => F 
F = F <=> F 
F = not F 
F = (F) 
D = a 

,但我發現它是模糊的。我嘗試了以下措施以消除模糊性:

F = F and A 
F = A 
A = F or B 
A = B 
B = F => C 
B = C 
C = F <=> C 
C=D 
D = not F 
D = (F) 
D = a 

此語法是否正確?我是否成功消除了歧義?

+0

關於術語的小詭計 - 自從我研究編譯器以來有一段時間了,但如果我沒有記錯的話,詞法分析通常主要是指標記化步驟(不是使用語法進行解析)。 – EJoshuaS

+0

標記化? nooooooooo –

+0

這是可能的我誤解了這一點,因爲我說這是一段時間,因爲我研究這些東西。 – EJoshuaS

回答

0

語法仍然不明確。這裏有兩個推導的 不和:

推導1:

F 
F and A 
A and A 
B and B 
C and C 
not F and a 
not A and a 
not B and a 
not C and a 
not D and a 
not a and a 

推導2:

F  
A 
B 
C 
D 
not F 
not F and A 
not A and A 
not B and B 
not C and C 
not D and D 
not a and a 

你需要把你周圍的推導,例如括號 F =(F和A)

如果您不想使用括號的另一種可能性是使用prefix notation