Bu pratik prensiplerden çok “prensipte” bir sorudur. Yacc'ın yapımları azalttığı düzen ve tanımlanan lexer'dan yeni tokenler okunuyor. Ben simgeler dizisinden aşağıdaki olsaydı bildirilir:Yacc'da azaltma sırası tanımlandı mı?
INTEGER_BEGIN
INTEGER_VALUE
LESS_THAN
INTEGER_BEGIN
INTEGER_VALUE
neye yapımları bir dizi göz önüne alındığında, tek şeye INTEGER BEGIN INTEGER_VALUE
azaltır önce Yacc, onun semantik içinde, lexer gelen LESS_THAN
belirteci okuyabilir:
expr : expr LESS_THAN expr
| integer
integer : INTEGER_BEGIN INTEGER_VALUE
Bunlar anlamsal eylemlerle tanımlanmışsa, bu değişiklik için kurallar uygulanıyor mu?
Bunun olup olmadığını öğrenmenin bir yolu var mı? –
http://www.gnu.org/software/bison/manual/html_node/Default-Reductions.html, varsayılan azaltmaların anlamlarının tam bir açıklamasını içerir ve belirttiğiniz gibi, lexer'ın gecikmeli bir şekilde çağrılmasına neden olur. –
Bazı bizon sürümlerinde, varsayılan bir azaltma olup olmadığınızı görmek için eylemde 'if (yychar == YYEMPTY)' seçeneğini işaretleyebilirsiniz (böylece hiç bir görünüm okunmamıştır), ancak bu çok taşınabilir değildir. –