0

鑑於以下輸入:LALR(1)語法如何區分變量和函數調用?

int x = y; 

int x = y(); 

有沒有辦法爲LALR(1)語法,以避免移進/歸約衝突?轉移/減少衝突決定減少y或繼續(

(這是假設變量名可以是任何一組字母數字字符,和函數調用是任何組由括號下列字母數字字符。)

回答

1

它不是一個移位減少衝突,除非它是可以用於一個標識符緊接着一個(而不是一個函數調用。這通常不是這種情況,儘管在C語言派生語言中,存在區分演員表達式(type)(value)和加法函數調用(function)(argument)的問題。

如果你的語法不表現出特別是C wierdness,則LALR (1)文法可移位和基於所述(1)令牌先行減少之間決定:如果超前記號是(,然後它會移動標識符;否則,它可以減少。

+0

謝謝,我對1代表了什麼錯誤的印象。 – sdasdadas