Pok-10-wyk-Slajd69
Akcja domyślna – parser: gramatyka i akcje
W przedstawionym analizatorze składniowym akcja domyślna $$=$1 występuje 3-krotnie i za każdym razem została jawnie wyspecyfikowana.
Pierwsze wystąpienie w produkcji T –> F jest opcjonalne, F musi już tutaj być typu double (w YACCu nie ma polimorficznych nieterminali).
Inaczej wygląda sytuacja w produkcji F –> int_num . Tutaj przypisanie $$=$1 musi być jawne tak, aby poprawnie zaszła konwersja typów (int –> double ) – w przeciwnym razie wartość w unii będzie błędnie interpretowana jako liczba zmiennoprzecinkowa.
Ostatnie wystąpienie akcji domyślnej jest również opcjonalne. W produkcji F –> dbl_num atrybut jest już wpisany przez skaner w docelowym formacie.
Gramatykę można oczywiście przepisać tak, aby wyeliminować nieterminal F. Wtedy int_num i dbl_num będę wywodzone bezpośrednio z T.
Nie zmienia to jednak faktu, że konieczna będzie jawna konwersja w produkcji T –> int_num (int_num jest typu int ) do typu T (czyli double ) za pomocą akcji $$=$1.