Ambiguidade de gramática C11 entre _ especificador de tipo atômico e qualificador

Eu estou tentando escrever uma gramática lex / yacc para C11 baseado fora do N1570. A maior parte da minha gramática é copiada textualmente do resumo de sintaxe informativo, mas alguns conflitos yacc surgiram. Consegui resolver todos eles, exceto um: parece haver alguma ambiguidade entre quando '_Atomic' é usado como um especificador de tipo e quando é usado como um qualificador de tipo.

No formulário especificador, _Atomic é seguido imediatamente por parênteses, então estou assumindo que tem algo a ver com a sintaxe pouco usada de C, que permite que os declaradores estejam entre parênteses, permitindo assim que os parênteses sigam imediatamente um qualificador. Mas minha gramática já sabe como diferenciar nomes de typedef de outros identificadores, então yacc deveria saber a diferença, não deveria?

Eu não posso para a vida de mim pensar em um caso em que seria realmente ambíguo.

Eu duvido que ajude, mas aqui está a saída de estado relevante que recebo quando uso o sinalizador -v do yacc. "ATOMIC" é obviamente o meu nome simbólico para "_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