相关疑难解决方法(0)

_Atomic类型说明符和限定符之间的C11语法歧义

我正在尝试根据N1570编写C11的lex/yacc语法.我的大部分语法都是从信息性语法摘要中逐字复制的,但是出现了一些yacc冲突.我设法解决了所有这些问题,除了一个:当'_Atomic'用作类型说明符和用作类型限定符时,似乎存在一些模糊性.

在说明符形式中,_Atomic紧跟着括号,所以我假设它与C的很少使用的语法有关,它允许声明符在括号中,从而允许括号立即跟随限定符.但我的语法已经知道如何区分typedef名称和其他标识符,所以yacc应该知道差异,不应该吗?

我不能为我的生活想到一个实际上是模棱两可的案例.

我怀疑它有帮助,但这是我使用yacc的-v标志时获得的相关状态输出."ATOMIC"显然是我的"_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)
Run Code Online (Sandbox Code Playgroud)

c grammar yacc c11

11
推荐指数
2
解决办法
1766
查看次数

标签 统计

c ×1

c11 ×1

grammar ×1

yacc ×1