BNF 语法识别 C 关键字的合法组合

问题描述 投票:0回答:1

假设我有一个 C 关键字列表,

int char long float double signed unsigned short const volatile

语法应该接受这些组合:

volatile unsigned long int
long unsigned volatile int

等等

但拒绝这样的事情:

unsigned singed short long 
c bnf
1个回答
0
投票

声明说明符列表中 C 类型说明符的合法组合的语法是:

OODS AtomicTypeSpecifier OODS
OODS EnumSpecifier OODS
OODS StructOrUnionSpecifier OODS
OODS TypeDefName OODS
OODS _Bool OODS
OODS _Complex OODS double OODS
OODS _Complex OODS double OODS long OODS
OODS _Complex OODS float OODS
OODS _Complex OODS long OODS double OODS
OODS char OODS
OODS char OODS signed OODS
OODS char OODS unsigned OODS
OODS double OODS
OODS double OODS _Complex OODS
OODS double OODS _Complex OODS long OODS
OODS double OODS long OODS
OODS double OODS long OODS _Complex OODS
OODS float OODS
OODS float OODS _Complex OODS
OODS int OODS
OODS int OODS long OODS
OODS int OODS long OODS long OODS
OODS int OODS long OODS long OODS signed OODS
OODS int OODS long OODS long OODS unsigned OODS
OODS int OODS long OODS signed OODS
OODS int OODS long OODS signed OODS long OODS
OODS int OODS long OODS unsigned OODS
OODS int OODS long OODS unsigned OODS long OODS
OODS int OODS short OODS
OODS int OODS short OODS signed OODS
OODS int OODS short OODS unsigned OODS
OODS int OODS signed OODS
OODS int OODS signed OODS long OODS
OODS int OODS signed OODS long OODS long OODS
OODS int OODS signed OODS short OODS
OODS int OODS unsigned OODS
OODS int OODS unsigned OODS long OODS
OODS int OODS unsigned OODS long OODS long OODS
OODS int OODS unsigned OODS short OODS
OODS long OODS
OODS long OODS _Complex OODS double OODS
OODS long OODS double OODS
OODS long OODS double OODS _Complex OODS
OODS long OODS int OODS
OODS long OODS int OODS long OODS
OODS long OODS int OODS long OODS signed OODS
OODS long OODS int OODS long OODS unsigned OODS
OODS long OODS int OODS signed OODS
OODS long OODS int OODS signed OODS long OODS
OODS long OODS int OODS unsigned OODS
OODS long OODS int OODS unsigned OODS long OODS
OODS long OODS long OODS
OODS long OODS long OODS int OODS
OODS long OODS long OODS int OODS signed OODS
OODS long OODS long OODS int OODS unsigned OODS
OODS long OODS long OODS signed OODS
OODS long OODS long OODS signed OODS int OODS
OODS long OODS long OODS unsigned OODS
OODS long OODS long OODS unsigned OODS int OODS
OODS long OODS signed OODS
OODS long OODS signed OODS int OODS
OODS long OODS signed OODS int OODS long OODS
OODS long OODS signed OODS long OODS
OODS long OODS signed OODS long OODS int OODS
OODS long OODS unsigned OODS
OODS long OODS unsigned OODS int OODS
OODS long OODS unsigned OODS int OODS long OODS
OODS long OODS unsigned OODS long OODS
OODS long OODS unsigned OODS long OODS int OODS
OODS short OODS
OODS short OODS int OODS
OODS short OODS int OODS signed OODS
OODS short OODS int OODS unsigned OODS
OODS short OODS signed OODS
OODS short OODS signed OODS int OODS
OODS short OODS unsigned OODS
OODS short OODS unsigned OODS int OODS
OODS signed OODS
OODS signed OODS char OODS
OODS signed OODS int OODS
OODS signed OODS int OODS long OODS
OODS signed OODS int OODS long OODS long OODS
OODS signed OODS int OODS short OODS
OODS signed OODS long OODS
OODS signed OODS long OODS int OODS
OODS signed OODS long OODS int OODS long OODS
OODS signed OODS long OODS long OODS
OODS signed OODS long OODS long OODS int OODS
OODS signed OODS short OODS
OODS signed OODS short OODS int OODS
OODS unsigned OODS
OODS unsigned OODS char OODS
OODS unsigned OODS int OODS
OODS unsigned OODS int OODS long OODS
OODS unsigned OODS int OODS long OODS long OODS
OODS unsigned OODS int OODS short OODS
OODS unsigned OODS long OODS
OODS unsigned OODS long OODS int OODS
OODS unsigned OODS long OODS int OODS long OODS
OODS unsigned OODS long OODS long OODS
OODS unsigned OODS long OODS long OODS int OODS
OODS unsigned OODS short OODS
OODS unsigned OODS short OODS int OODS
OODS void OODS

备注:

  • 这些线是 OR 运算的(通过
    |
    运算符连接)。
  • OODS
    是可选的其他声明说明符(零个或多个存储类说明符、限定符等)。
  • AtomicTypeSpecifier
    EnumSpecifier
    StructOrUnionSpecifier
    TypeDefName
    是普通 C 语法中明显的标记。
© www.soinside.com 2019 - 2024. All rights reserved.