Niejednoznaczność gramatyczna C11 między specyfikatorem typu _Atomic a kwalifikatorem

Próbuję napisać gramatykę lex / yacc dla C11 opartą na N1570. Większość mojej gramatyki jest kopiowana dosłownie z podsumowanie składni informacyjnej, ale pojawiły się pewne konflikty yacc. Udało mi się rozwiązać wszystkie z nich, z wyjątkiem jednego: wydaje się, że istnieje pewna niejasność między kiedy '_Atomic' jest używany jako specyfikator typu i kiedy jest używany jako kwalifikator typu.

W formularzu specyfikacyjnym następuje natychmiast po nawiasach _Atomic, więc zakładam, że ma to coś wspólnego z mało używaną składnią C, która pozwala deklaratorom znajdować się w nawiasach, dzięki czemu nawiasy mogą natychmiast podążać za kwalifikatorem. Ale moja gramatyka już wie, jak odróżnić nazwy typedef od innych identyfikatorów, więc yacc powinien znać różnicę, prawda?

Nie mogę przez całe życie myśleć o sprawie, która w rzeczywistości byłaby niejednoznaczna.

Wątpię, żeby to pomogło, ale oto odpowiednie wyjście stanu, które otrzymuję, gdy używam flagi -v yacc. „ATOMIC” to oczywiście moja nazwa tokena „_Atomic”

state 23

  152 atomic_type_specifier: ATOMIC . '(' type_name ')'
  156 type_qualifier: ATOMIC .

    '('  shift, and go to state 49

    '('       [reduce using rule 156 (type_qualifier)]
    $default  reduce using rule 156 (type_qualifier)

questionAnswers(2)

yourAnswerToTheQuestion