闲来无事,在屋里多看了一眼《编译原理》(2V),有练练手的冲动——采用LR(1)技术,写了一个C语言的语法归约器!之所以用LR(1)是因为gcc,ucc,tcc和lcc跟商量好似的,清一色的用的LL归约技术,书上也是讲的跟天花一样漂亮,那么就说明它已经十分成熟了,如果再使用LL技术实在是炸不出价值来,源码一抓一大把,看看就够了,重写必要性不大!另外,书中的LR技术讲的项集又是大的没谱,工作量太大;如果使用工具yacc生成,又不知道它咋搞的猫腻,所以就没有踩它们的脚印,自己整套方法high起来^!^!至于后期要不要增加编译的其他部分,再说。现在用它来拉拉风!顺便解释下C语言真正机密——归约!
int vali; char valc; short vals; long vall; unsigned int valui; signed int valsi; /*其余float double double float
unsigned char, signed char, unsigned short, signed short unsigned long, signed long都一样的归约过程,不多余举例*/归约树
curr: int next: vali type-specifier declaration-specifiers curr: ID next: ; declaration-specifiers direct-declarator declaration-specifiers declarator declaration-specifiers init-declarator declaration-specifiers init-declarator-list curr: ; next: char declaration declaration-list //归约char valc; curr: char next: valc declaration-list type-specifier declaration-list declaration-specifiers curr: ID next: ; declaration-list declaration-specifiers direct-declarator declaration-list declaration-specifiers declarator declaration-list declaration-specifiers init-declarator declaration-list declaration-specifiers init-declarator-list curr: ; next: short declaration-list declaration declaration-list //归约short vals; curr: short next: vals declaration-list type-specifier declaration-list declaration-specifiers curr: ID next: ; declaration-list declaration-specifiers direct-declarator declaration-list declaration-specifiers declarator declaration-list declaration-specifiers init-declarator declaration-list declaration-specifiers init-declarator-list curr: ; next: long declaration-list declaration declaration-list //归约long vall; curr: long next: vall declaration-list type-specifier declaration-list declaration-specifiers curr: ID next: ; declaration-list declaration-specifiers direct-declarator declaration-list declaration-specifiers declarator declaration-list declaration-specifiers init-declarator declaration-list declaration-specifiers init-declarator-list curr: ; next: unsigned declaration-list declaration declaration-list //归约unsigned int valui; curr: unsigned next: int declaration-list type-specifier curr: int next: valui declaration-list type-specifier type-specifier declaration-list type-specifier declaration-specifiers declaration-list declaration-specifiers curr: ID next: ; declaration-list declaration-specifiers direct-declarator declaration-list declaration-specifiers declarator declaration-list declaration-specifiers init-declarator declaration-list declaration-specifiers init-declarator-list curr: ; next: signed declaration-list declaration declaration-list //归约signed int valsi; curr: signed next: int declaration-list type-specifier curr: int next: valsi declaration-list type-specifier type-specifier declaration-list type-specifier declaration-specifiers declaration-list declaration-specifiers curr: ID next: ; declaration-list declaration-specifiers direct-declarator declaration-list declaration-specifiers declarator declaration-list declaration-specifiers init-declarator declaration-list declaration-specifiers init-declarator-list curr: ; next: NULL declaration-list declaration declaration-list translation-unit //完成
struct AA;
union BB;
enum CC;
struct girl {
int ga, gb, gc;
};
struct boy {
struct girl bl;
};
struct woman {
union inner {
struct girl gg;
struct boy bb;
}sex;
};
union type{
int vali;
char ch;
long vall;
};
enum tag{
FIRST,
FOLLOW,
LAST,
TEST
};归约树curr: struct next: AA
curr: ID next: ;
struct-specifier
type-specifier
declaration-specifiers
curr: ; next: union
declaration
declaration-list
//归约union BB;
curr: union next: BB
curr: ID next: ;
declaration-list union-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ; next: enum
declaration-list declaration
declaration-list
//归约enum CC;
curr: enum next: CC
curr: ID next: ;
declaration-list enum-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ; next: struct
declaration-list declaration
declaration-list
/*归约struct girl {
int ga, gb, gc;
};*/
curr: struct next: girl
curr: ID next: {
curr: { next: int
curr: int next: ga
declaration-list struct ID { type-specifier
declaration-list struct ID { specifier-qualifier-list
curr: ID next: ,
declaration-list struct ID { specifier-qualifier-list direct-declarator
declaration-list struct ID { specifier-qualifier-list declarator
declaration-list struct ID { specifier-qualifier-list struct-declarator-list
curr: , next: gb
curr: ID next: ,
declaration-list struct ID { specifier-qualifier-list struct-declarator-list , direct-declarator
declaration-list struct ID { specifier-qualifier-list struct-declarator-list , declarator
declaration-list struct ID { specifier-qualifier-list struct-declarator-list
curr: , next: gc
curr: ID next: ;
declaration-list struct ID { specifier-qualifier-list struct-declarator-list , direct-declarator
declaration-list struct ID { specifier-qualifier-list struct-declarator-list , declarator
declaration-list struct ID { specifier-qualifier-list struct-declarator-list
curr: ; next: }
declaration-list struct ID { struct-declaration
declaration-list struct ID { struct-declaration-list
curr: } next: ;
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ; next: struct
declaration-list declaration
declaration-list
/*归约struct boy {
struct girl bl;
};*/
curr: struct next: boy
curr: ID next: {
curr: { next: struct
curr: struct next: girl
curr: bl next: ID
declaration-list struct ID { struct-specifier
declaration-list struct ID { type-specifier
declaration-list struct ID { specifier-qualifier-list
curr: ID next: ;
declaration-list struct ID { specifier-qualifier-list direct-declarator
declaration-list struct ID { specifier-qualifier-list declarator
declaration-list struct ID { specifier-qualifier-list struct-declarator-list
curr: ; next: }
declaration-list struct ID { struct-declaration
declaration-list struct ID { struct-declaration-list
curr: } next: ;
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ; next: struct
declaration-list declaration
declaration-list
/*归约struct woman {
union inner {
struct girl gg;
struct boy bb;
}sex;
};*/
curr: struct next: woman
curr: ID next: {
curr: { next: union
curr: union next: inner
curr: ID next: {
curr: { next: struct
curr: struct next: girl
curr: gg next: ID
declaration-list struct ID { union ID { struct-specifier
declaration-list struct ID { union ID { type-specifier
declaration-list struct ID { union ID { specifier-qualifier-list
curr: ID next: ;
declaration-list struct ID { union ID { specifier-qualifier-list direct-declarator
declaration-list struct ID { union ID { specifier-qualifier-list declarator
declaration-list struct ID { union ID { specifier-qualifier-list struct-declarator-list
curr: ; next: struct
declaration-list struct ID { union ID { struct-declaration
declaration-list struct ID { union ID { struct-declaration-list
curr: struct next: boy
curr: bb next: ID
declaration-list struct ID { union ID { struct-declaration-list struct-specifier
declaration-list struct ID { union ID { struct-declaration-list type-specifier
declaration-list struct ID { union ID { struct-declaration-list specifier-qualifier-list
curr: ID next: ;
declaration-list struct ID { union ID { struct-declaration-list specifier-qualifier-list direct-declarator
declaration-list struct ID { union ID { struct-declaration-list specifier-qualifier-list declarator
declaration-list struct ID { union ID { struct-declaration-list specifier-qualifier-list struct-declarator-list
curr: ; next: }
declaration-list struct ID { union ID { struct-declaration-list struct-declaration
declaration-list struct ID { union ID { struct-declaration-list
curr: } next: sex
declaration-list struct ID { union-specifier
declaration-list struct ID { type-specifier
declaration-list struct ID { specifier-qualifier-list
curr: ID next: ;
declaration-list struct ID { specifier-qualifier-list direct-declarator
declaration-list struct ID { specifier-qualifier-list declarator
declaration-list struct ID { specifier-qualifier-list struct-declarator-list
curr: ; next: }
declaration-list struct ID { struct-declaration
declaration-list struct ID { struct-declaration-list
curr: } next: ;
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ; next: union
declaration-list declaration
declaration-list
/*归约union type{
int vali;
char ch;
long vall;
};*/
curr: union next: type
curr: ID next: {
curr: { next: int
curr: int next: vali
declaration-list union ID { type-specifier
declaration-list union ID { specifier-qualifier-list
curr: ID next: ;
declaration-list union ID { specifier-qualifier-list direct-declarator
declaration-list union ID { specifier-qualifier-list declarator
declaration-list union ID { specifier-qualifier-list struct-declarator-list
curr: ; next: char
declaration-list union ID { struct-declaration
declaration-list union ID { struct-declaration-list
curr: char next: ch
declaration-list union ID { struct-declaration-list type-specifier
declaration-list union ID { struct-declaration-list specifier-qualifier-list
curr: ID next: ;
declaration-list union ID { struct-declaration-list specifier-qualifier-list direct-declarator
declaration-list union ID { struct-declaration-list specifier-qualifier-list declarator
declaration-list union ID { struct-declaration-list specifier-qualifier-list struct-declarator-list
curr: ; next: long
declaration-list union ID { struct-declaration-list struct-declaration
declaration-list union ID { struct-declaration-list
curr: long next: vall
declaration-list union ID { struct-declaration-list type-specifier
declaration-list union ID { struct-declaration-list specifier-qualifier-list
curr: ID next: ;
declaration-list union ID { struct-declaration-list specifier-qualifier-list direct-declarator
declaration-list union ID { struct-declaration-list specifier-qualifier-list declarator
declaration-list union ID { struct-declaration-list specifier-qualifier-list struct-declarator-list
curr: ; next: }
declaration-list union ID { struct-declaration-list struct-declaration
declaration-list union ID { struct-declaration-list
curr: } next: ;
declaration-list union-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ; next: enum
declaration-list declaration
declaration-list
/*归约enum tag{
FIRST,
FOLLOW,
LAST,
TEST
};*/
curr: enum next: tag
curr: ID next: {
curr: { next: FIRST
curr: ID next: ,
declaration-list enum ID { enumeration-constant
declaration-list enum ID { enumerator
declaration-list enum ID { enumerator-list
curr: , next: FOLLOW
curr: ID next: ,
declaration-list enum ID { enumerator-list , enumeration-constant
declaration-list enum ID { enumerator-list , enumerator
declaration-list enum ID { enumerator-list
curr: , next: LAST
curr: ID next: ,
declaration-list enum ID { enumerator-list , enumeration-constant
declaration-list enum ID { enumerator-list , enumerator
declaration-list enum ID { enumerator-list
curr: , next: TEST
curr: ID next: }
declaration-list enum ID { enumerator-list , enumeration-constant
declaration-list enum ID { enumerator-list , enumerator
declaration-list enum ID { enumerator-list
curr: } next: ;
declaration-list enum-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ; next: NULL
declaration-list declaration
declaration-list
translation-unit
struct a {
int b;
struct {
char ch;
int id;
} me;
struct a *next;
} student[10] = {
1, {1, 2}, 0,
1, {1, 2}, 0,
1, {1, 2}, 0,
1, {1, 2}, 0,
};
struct a b[4] = {
.b = 0,
.me = {.ch = a,
.id = 0,},
.c
.d
.e = 1,};
union c{
int i;
char ch;
} age_sex[5] = {1, 2, 3, 4, 5};
enum {
WOMEN = 1,
MAN,
CHILD
};curr: struct next: a
curr: ID next: {
curr: { next: int
curr: int next: b
struct ID { type-specifier
struct ID { specifier-qualifier-list
curr: ID next: ;
struct ID { specifier-qualifier-list direct-declarator
struct ID { specifier-qualifier-list declarator
struct ID { specifier-qualifier-list struct-declarator-list
curr: ; next: struct
struct ID { struct-declaration
struct ID { struct-declaration-list
curr: struct next: {
curr: { next: char
curr: char next: ch
struct ID { struct-declaration-list struct { type-specifier
struct ID { struct-declaration-list struct { specifier-qualifier-list
curr: ID next: ;
struct ID { struct-declaration-list struct { specifier-qualifier-list direct-declarator
struct ID { struct-declaration-list struct { specifier-qualifier-list declarator
struct ID { struct-declaration-list struct { specifier-qualifier-list struct-declarator-list
curr: ; next: int
struct ID { struct-declaration-list struct { struct-declaration
struct ID { struct-declaration-list struct { struct-declaration-list
curr: int next: id
struct ID { struct-declaration-list struct { struct-declaration-list type-specifier
struct ID { struct-declaration-list struct { struct-declaration-list specifier-qualifier-list
curr: ID next: ;
struct ID { struct-declaration-list struct { struct-declaration-list specifier-qualifier-list direct-declarator
struct ID { struct-declaration-list struct { struct-declaration-list specifier-qualifier-list declarator
struct ID { struct-declaration-list struct { struct-declaration-list specifier-qualifier-list struct-declarator-list
curr: ; next: }
struct ID { struct-declaration-list struct { struct-declaration-list struct-declaration
struct ID { struct-declaration-list struct { struct-declaration-list
curr: } next: me
struct ID { struct-declaration-list struct-specifier
struct ID { struct-declaration-list type-specifier
struct ID { struct-declaration-list specifier-qualifier-list
curr: ID next: ;
struct ID { struct-declaration-list specifier-qualifier-list direct-declarator
struct ID { struct-declaration-list specifier-qualifier-list declarator
struct ID { struct-declaration-list specifier-qualifier-list struct-declarator-list
curr: ; next: struct
struct ID { struct-declaration-list struct-declaration
struct ID { struct-declaration-list
curr: struct next: a
curr: ID next: *
struct ID { struct-declaration-list struct-specifier
struct ID { struct-declaration-list type-specifier
struct ID { struct-declaration-list specifier-qualifier-list
curr: * next: next
struct ID { struct-declaration-list specifier-qualifier-list pointer
curr: ID next: ;
struct ID { struct-declaration-list specifier-qualifier-list pointer direct-declarator
struct ID { struct-declaration-list specifier-qualifier-list declarator
struct ID { struct-declaration-list specifier-qualifier-list struct-declarator-list
curr: ; next: }
struct ID { struct-declaration-list struct-declaration
struct ID { struct-declaration-list
curr: } next: student
struct-specifier
type-specifier
declaration-specifiers
curr: ID next: [
declaration-specifiers direct-declarator
curr: [ next: 10
curr: 10 next: ]
declaration-specifiers direct-declarator [ primary-expression
declaration-specifiers direct-declarator [ postfix-expression
declaration-specifiers direct-declarator [ unary-expression
declaration-specifiers direct-declarator [ cast-expression
declaration-specifiers direct-declarator [ multiplicative-expression
declaration-specifiers direct-declarator [ additive-expression
declaration-specifiers direct-declarator [ shift-expression
declaration-specifiers direct-declarator [ relational-expression
declaration-specifiers direct-declarator [ equality-expression
declaration-specifiers direct-declarator [ AND-expression
declaration-specifiers direct-declarator [ exclusive-OR-expression
declaration-specifiers direct-declarator [ inclusive-OR-expression
declaration-specifiers direct-declarator [ logical-AND-expression
declaration-specifiers direct-declarator [ logical-OR-expression
declaration-specifiers direct-declarator [ conditional-expression
declaration-specifiers direct-declarator [ assignment-expression
curr: ] next: =
declaration-specifiers direct-declarator
declaration-specifiers declarator
curr: = next: {
curr: { next: 1
curr: 1 next: ,
declaration-specifiers declarator = { primary-expression
declaration-specifiers declarator = { postfix-expression
declaration-specifiers declarator = { unary-expression
declaration-specifiers declarator = { cast-expression
declaration-specifiers declarator = { multiplicative-expression
declaration-specifiers declarator = { additive-expression
declaration-specifiers declarator = { shift-expression
declaration-specifiers declarator = { relational-expression
declaration-specifiers declarator = { equality-expression
declaration-specifiers declarator = { AND-expression
declaration-specifiers declarator = { exclusive-OR-expression
declaration-specifiers declarator = { inclusive-OR-expression
declaration-specifiers declarator = { logical-AND-expression
declaration-specifiers declarator = { logical-OR-expression
declaration-specifiers declarator = { conditional-expression
declaration-specifiers declarator = { assignment-expression
declaration-specifiers declarator = { initializer
declaration-specifiers declarator = { initializer-list
curr: , next: {
curr: { next: 1
curr: 1 next: ,
declaration-specifiers declarator = { initializer-list , { primary-expression
declaration-specifiers declarator = { initializer-list , { postfix-expression
declaration-specifiers declarator = { initializer-list , { unary-expression
declaration-specifiers declarator = { initializer-list , { cast-expression
declaration-specifiers declarator = { initializer-list , { multiplicative-expression
declaration-specifiers declarator = { initializer-list , { additive-expression
declaration-specifiers declarator = { initializer-list , { shift-expression
declaration-specifiers declarator = { initializer-list , { relational-expression
declaration-specifiers declarator = { initializer-list , { equality-expression
declaration-specifiers declarator = { initializer-list , { AND-expression
declaration-specifiers declarator = { initializer-list , { exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { logical-AND-expression
declaration-specifiers declarator = { initializer-list , { logical-OR-expression
declaration-specifiers declarator = { initializer-list , { conditional-expression
declaration-specifiers declarator = { initializer-list , { assignment-expression
declaration-specifiers declarator = { initializer-list , { initializer
declaration-specifiers declarator = { initializer-list , { initializer-list
curr: , next: 2
curr: 2 next: }
declaration-specifiers declarator = { initializer-list , { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , initializer
declaration-specifiers declarator = { initializer-list , { initializer-list
curr: } next: ,
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: 0
curr: 0 next: ,
declaration-specifiers declarator = { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: 1
curr: 1 next: ,
declaration-specifiers declarator = { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: {
curr: { next: 1
curr: 1 next: ,
declaration-specifiers declarator = { initializer-list , { primary-expression
declaration-specifiers declarator = { initializer-list , { postfix-expression
declaration-specifiers declarator = { initializer-list , { unary-expression
declaration-specifiers declarator = { initializer-list , { cast-expression
declaration-specifiers declarator = { initializer-list , { multiplicative-expression
declaration-specifiers declarator = { initializer-list , { additive-expression
declaration-specifiers declarator = { initializer-list , { shift-expression
declaration-specifiers declarator = { initializer-list , { relational-expression
declaration-specifiers declarator = { initializer-list , { equality-expression
declaration-specifiers declarator = { initializer-list , { AND-expression
declaration-specifiers declarator = { initializer-list , { exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { logical-AND-expression
declaration-specifiers declarator = { initializer-list , { logical-OR-expression
declaration-specifiers declarator = { initializer-list , { conditional-expression
declaration-specifiers declarator = { initializer-list , { assignment-expression
declaration-specifiers declarator = { initializer-list , { initializer
declaration-specifiers declarator = { initializer-list , { initializer-list
curr: , next: 2
curr: 2 next: }
declaration-specifiers declarator = { initializer-list , { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , initializer
declaration-specifiers declarator = { initializer-list , { initializer-list
curr: } next: ,
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: 0
curr: 0 next: ,
declaration-specifiers declarator = { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: 1
curr: 1 next: ,
declaration-specifiers declarator = { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: {
curr: { next: 1
curr: 1 next: ,
declaration-specifiers declarator = { initializer-list , { primary-expression
declaration-specifiers declarator = { initializer-list , { postfix-expression
declaration-specifiers declarator = { initializer-list , { unary-expression
declaration-specifiers declarator = { initializer-list , { cast-expression
declaration-specifiers declarator = { initializer-list , { multiplicative-expression
declaration-specifiers declarator = { initializer-list , { additive-expression
declaration-specifiers declarator = { initializer-list , { shift-expression
declaration-specifiers declarator = { initializer-list , { relational-expression
declaration-specifiers declarator = { initializer-list , { equality-expression
declaration-specifiers declarator = { initializer-list , { AND-expression
declaration-specifiers declarator = { initializer-list , { exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { logical-AND-expression
declaration-specifiers declarator = { initializer-list , { logical-OR-expression
declaration-specifiers declarator = { initializer-list , { conditional-expression
declaration-specifiers declarator = { initializer-list , { assignment-expression
declaration-specifiers declarator = { initializer-list , { initializer
declaration-specifiers declarator = { initializer-list , { initializer-list
curr: , next: 2
curr: 2 next: }
declaration-specifiers declarator = { initializer-list , { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , initializer
declaration-specifiers declarator = { initializer-list , { initializer-list
curr: } next: ,
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: 0
curr: 0 next: ,
declaration-specifiers declarator = { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: 1
curr: 1 next: ,
declaration-specifiers declarator = { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: {
curr: { next: 1
curr: 1 next: ,
declaration-specifiers declarator = { initializer-list , { primary-expression
declaration-specifiers declarator = { initializer-list , { postfix-expression
declaration-specifiers declarator = { initializer-list , { unary-expression
declaration-specifiers declarator = { initializer-list , { cast-expression
declaration-specifiers declarator = { initializer-list , { multiplicative-expression
declaration-specifiers declarator = { initializer-list , { additive-expression
declaration-specifiers declarator = { initializer-list , { shift-expression
declaration-specifiers declarator = { initializer-list , { relational-expression
declaration-specifiers declarator = { initializer-list , { equality-expression
declaration-specifiers declarator = { initializer-list , { AND-expression
declaration-specifiers declarator = { initializer-list , { exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { logical-AND-expression
declaration-specifiers declarator = { initializer-list , { logical-OR-expression
declaration-specifiers declarator = { initializer-list , { conditional-expression
declaration-specifiers declarator = { initializer-list , { assignment-expression
declaration-specifiers declarator = { initializer-list , { initializer
declaration-specifiers declarator = { initializer-list , { initializer-list
curr: , next: 2
curr: 2 next: }
declaration-specifiers declarator = { initializer-list , { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , { initializer-list , initializer
declaration-specifiers declarator = { initializer-list , { initializer-list
curr: } next: ,
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: 0
curr: 0 next: ,
declaration-specifiers declarator = { initializer-list , primary-expression
declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-specifiers declarator = { initializer-list , unary-expression
declaration-specifiers declarator = { initializer-list , cast-expression
declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-specifiers declarator = { initializer-list , additive-expression
declaration-specifiers declarator = { initializer-list , shift-expression
declaration-specifiers declarator = { initializer-list , relational-expression
declaration-specifiers declarator = { initializer-list , equality-expression
declaration-specifiers declarator = { initializer-list , AND-expression
declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-specifiers declarator = { initializer-list , initializer
declaration-specifiers declarator = { initializer-list
curr: , next: }
curr: } next: ;
declaration-specifiers declarator = initializer
declaration-specifiers init-declarator
declaration-specifiers init-declarator-list
curr: ; next: struct
declaration
declaration-list
curr: struct next: a
curr: b next: ID
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ID next: [
declaration-list declaration-specifiers direct-declarator
curr: [ next: 4
curr: 4 next: ]
declaration-list declaration-specifiers direct-declarator [ primary-expression
declaration-list declaration-specifiers direct-declarator [ postfix-expression
declaration-list declaration-specifiers direct-declarator [ unary-expression
declaration-list declaration-specifiers direct-declarator [ cast-expression
declaration-list declaration-specifiers direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers direct-declarator [ additive-expression
declaration-list declaration-specifiers direct-declarator [ shift-expression
declaration-list declaration-specifiers direct-declarator [ relational-expression
declaration-list declaration-specifiers direct-declarator [ equality-expression
declaration-list declaration-specifiers direct-declarator [ AND-expression
declaration-list declaration-specifiers direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers direct-declarator [ conditional-expression
declaration-list declaration-specifiers direct-declarator [ assignment-expression
curr: ] next: =
declaration-list declaration-specifiers direct-declarator
declaration-list declaration-specifiers declarator
curr: = next: {
curr: { next: .
curr: . next: b
curr: ID next: =
declaration-list declaration-specifiers declarator = { designator
declaration-list declaration-specifiers declarator = { designator-list
curr: = next: 0
declaration-list declaration-specifiers declarator = { designation
curr: 0 next: ,
declaration-list declaration-specifiers declarator = { designation primary-expression
declaration-list declaration-specifiers declarator = { designation postfix-expression
declaration-list declaration-specifiers declarator = { designation unary-expression
declaration-list declaration-specifiers declarator = { designation cast-expression
declaration-list declaration-specifiers declarator = { designation multiplicative-expression
declaration-list declaration-specifiers declarator = { designation additive-expression
declaration-list declaration-specifiers declarator = { designation shift-expression
declaration-list declaration-specifiers declarator = { designation relational-expression
declaration-list declaration-specifiers declarator = { designation equality-expression
declaration-list declaration-specifiers declarator = { designation AND-expression
declaration-list declaration-specifiers declarator = { designation exclusive-OR-expression
declaration-list declaration-specifiers declarator = { designation inclusive-OR-expression
declaration-list declaration-specifiers declarator = { designation logical-AND-expression
declaration-list declaration-specifiers declarator = { designation logical-OR-expression
declaration-list declaration-specifiers declarator = { designation conditional-expression
declaration-list declaration-specifiers declarator = { designation assignment-expression
declaration-list declaration-specifiers declarator = { designation initializer
declaration-list declaration-specifiers declarator = { initializer-list
curr: , next: .
curr: . next: me
curr: ID next: =
declaration-list declaration-specifiers declarator = { initializer-list , designator
declaration-list declaration-specifiers declarator = { initializer-list , designator-list
curr: = next: {
declaration-list declaration-specifiers declarator = { initializer-list , designation
curr: { next: .
curr: . next: ch
curr: ID next: =
declaration-list declaration-specifiers declarator = { initializer-list , designation { designator
declaration-list declaration-specifiers declarator = { initializer-list , designation { designator-list
curr: = next: a
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation
curr: ID next: ,
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation primary-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation postfix-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation unary-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation cast-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation multiplicative-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation additive-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation shift-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation relational-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation equality-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation exclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation inclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation logical-AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation logical-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation conditional-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation assignment-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { designation initializer
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list
curr: , next: .
curr: . next: id
curr: ID next: =
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designator
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designator-list
curr: = next: 0
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation
curr: 0 next: ,
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation primary-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation postfix-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation unary-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation cast-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation multiplicative-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation additive-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation shift-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation relational-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation equality-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation exclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation inclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation logical-AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation logical-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation conditional-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation assignment-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list , designation initializer
declaration-list declaration-specifiers declarator = { initializer-list , designation { initializer-list
curr: , next: }
curr: } next: ,
declaration-list declaration-specifiers declarator = { initializer-list , designation initializer
declaration-list declaration-specifiers declarator = { initializer-list
curr: , next: .
curr: . next: c
curr: ID next: .
declaration-list declaration-specifiers declarator = { initializer-list , designator
declaration-list declaration-specifiers declarator = { initializer-list , designator-list
curr: . next: d
curr: ID next: .
declaration-list declaration-specifiers declarator = { initializer-list , designator-list designator
declaration-list declaration-specifiers declarator = { initializer-list , designator-list
curr: . next: e
curr: ID next: =
declaration-list declaration-specifiers declarator = { initializer-list , designator-list designator
declaration-list declaration-specifiers declarator = { initializer-list , designator-list
curr: = next: 1
declaration-list declaration-specifiers declarator = { initializer-list , designation
curr: 1 next: ,
declaration-list declaration-specifiers declarator = { initializer-list , designation primary-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation postfix-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation unary-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation cast-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation multiplicative-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation additive-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation shift-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation relational-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation equality-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation exclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation inclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation logical-AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation logical-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation conditional-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation assignment-expression
declaration-list declaration-specifiers declarator = { initializer-list , designation initializer
declaration-list declaration-specifiers declarator = { initializer-list
curr: , next: }
curr: } next: ;
declaration-list declaration-specifiers declarator = initializer
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list
curr: ; next: union
declaration-list declaration
declaration-list
curr: union next: c
curr: ID next: {
curr: { next: int
curr: int next: i
declaration-list union ID { type-specifier
declaration-list union ID { specifier-qualifier-list
curr: ID next: ;
declaration-list union ID { specifier-qualifier-list direct-declarator
declaration-list union ID { specifier-qualifier-list declarator
declaration-list union ID { specifier-qualifier-list struct-declarator-list
curr: ; next: char
declaration-list union ID { struct-declaration
declaration-list union ID { struct-declaration-list
curr: char next: ch
declaration-list union ID { struct-declaration-list type-specifier
declaration-list union ID { struct-declaration-list specifier-qualifier-list
curr: ID next: ;
declaration-list union ID { struct-declaration-list specifier-qualifier-list direct-declarator
declaration-list union ID { struct-declaration-list specifier-qualifier-list declarator
declaration-list union ID { struct-declaration-list specifier-qualifier-list struct-declarator-list
curr: ; next: }
declaration-list union ID { struct-declaration-list struct-declaration
declaration-list union ID { struct-declaration-list
curr: } next: age_sex
declaration-list union-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ID next: [
declaration-list declaration-specifiers direct-declarator
curr: [ next: 5
curr: 5 next: ]
declaration-list declaration-specifiers direct-declarator [ primary-expression
declaration-list declaration-specifiers direct-declarator [ postfix-expression
declaration-list declaration-specifiers direct-declarator [ unary-expression
declaration-list declaration-specifiers direct-declarator [ cast-expression
declaration-list declaration-specifiers direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers direct-declarator [ additive-expression
declaration-list declaration-specifiers direct-declarator [ shift-expression
declaration-list declaration-specifiers direct-declarator [ relational-expression
declaration-list declaration-specifiers direct-declarator [ equality-expression
declaration-list declaration-specifiers direct-declarator [ AND-expression
declaration-list declaration-specifiers direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers direct-declarator [ conditional-expression
declaration-list declaration-specifiers direct-declarator [ assignment-expression
curr: ] next: =
declaration-list declaration-specifiers direct-declarator
declaration-list declaration-specifiers declarator
curr: = next: {
curr: { next: 1
curr: 1 next: ,
declaration-list declaration-specifiers declarator = { primary-expression
declaration-list declaration-specifiers declarator = { postfix-expression
declaration-list declaration-specifiers declarator = { unary-expression
declaration-list declaration-specifiers declarator = { cast-expression
declaration-list declaration-specifiers declarator = { multiplicative-expression
declaration-list declaration-specifiers declarator = { additive-expression
declaration-list declaration-specifiers declarator = { shift-expression
declaration-list declaration-specifiers declarator = { relational-expression
declaration-list declaration-specifiers declarator = { equality-expression
declaration-list declaration-specifiers declarator = { AND-expression
declaration-list declaration-specifiers declarator = { exclusive-OR-expression
declaration-list declaration-specifiers declarator = { inclusive-OR-expression
declaration-list declaration-specifiers declarator = { logical-AND-expression
declaration-list declaration-specifiers declarator = { logical-OR-expression
declaration-list declaration-specifiers declarator = { conditional-expression
declaration-list declaration-specifiers declarator = { assignment-expression
declaration-list declaration-specifiers declarator = { initializer
declaration-list declaration-specifiers declarator = { initializer-list
curr: , next: 2
curr: 2 next: ,
declaration-list declaration-specifiers declarator = { initializer-list , primary-expression
declaration-list declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-list declaration-specifiers declarator = { initializer-list , unary-expression
declaration-list declaration-specifiers declarator = { initializer-list , cast-expression
declaration-list declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-list declaration-specifiers declarator = { initializer-list , additive-expression
declaration-list declaration-specifiers declarator = { initializer-list , shift-expression
declaration-list declaration-specifiers declarator = { initializer-list , relational-expression
declaration-list declaration-specifiers declarator = { initializer-list , equality-expression
declaration-list declaration-specifiers declarator = { initializer-list , AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-list declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-list declaration-specifiers declarator = { initializer-list , initializer
declaration-list declaration-specifiers declarator = { initializer-list
curr: , next: 3
curr: 3 next: ,
declaration-list declaration-specifiers declarator = { initializer-list , primary-expression
declaration-list declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-list declaration-specifiers declarator = { initializer-list , unary-expression
declaration-list declaration-specifiers declarator = { initializer-list , cast-expression
declaration-list declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-list declaration-specifiers declarator = { initializer-list , additive-expression
declaration-list declaration-specifiers declarator = { initializer-list , shift-expression
declaration-list declaration-specifiers declarator = { initializer-list , relational-expression
declaration-list declaration-specifiers declarator = { initializer-list , equality-expression
declaration-list declaration-specifiers declarator = { initializer-list , AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-list declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-list declaration-specifiers declarator = { initializer-list , initializer
declaration-list declaration-specifiers declarator = { initializer-list
curr: , next: 4
curr: 4 next: ,
declaration-list declaration-specifiers declarator = { initializer-list , primary-expression
declaration-list declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-list declaration-specifiers declarator = { initializer-list , unary-expression
declaration-list declaration-specifiers declarator = { initializer-list , cast-expression
declaration-list declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-list declaration-specifiers declarator = { initializer-list , additive-expression
declaration-list declaration-specifiers declarator = { initializer-list , shift-expression
declaration-list declaration-specifiers declarator = { initializer-list , relational-expression
declaration-list declaration-specifiers declarator = { initializer-list , equality-expression
declaration-list declaration-specifiers declarator = { initializer-list , AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-list declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-list declaration-specifiers declarator = { initializer-list , initializer
declaration-list declaration-specifiers declarator = { initializer-list
curr: , next: 5
curr: 5 next: }
declaration-list declaration-specifiers declarator = { initializer-list , primary-expression
declaration-list declaration-specifiers declarator = { initializer-list , postfix-expression
declaration-list declaration-specifiers declarator = { initializer-list , unary-expression
declaration-list declaration-specifiers declarator = { initializer-list , cast-expression
declaration-list declaration-specifiers declarator = { initializer-list , multiplicative-expression
declaration-list declaration-specifiers declarator = { initializer-list , additive-expression
declaration-list declaration-specifiers declarator = { initializer-list , shift-expression
declaration-list declaration-specifiers declarator = { initializer-list , relational-expression
declaration-list declaration-specifiers declarator = { initializer-list , equality-expression
declaration-list declaration-specifiers declarator = { initializer-list , AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , exclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , inclusive-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , logical-AND-expression
declaration-list declaration-specifiers declarator = { initializer-list , logical-OR-expression
declaration-list declaration-specifiers declarator = { initializer-list , conditional-expression
declaration-list declaration-specifiers declarator = { initializer-list , assignment-expression
declaration-list declaration-specifiers declarator = { initializer-list , initializer
declaration-list declaration-specifiers declarator = { initializer-list
curr: } next: ;
declaration-list declaration-specifiers declarator = initializer
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list
curr: ; next: enum
declaration-list declaration
declaration-list
curr: enum next: {
curr: { next: WOMEN
curr: ID next: =
declaration-list enum { enumeration-constant
curr: = next: 1
curr: 1 next: ,
declaration-list enum { enumeration-constant = primary-expression
declaration-list enum { enumeration-constant = postfix-expression
declaration-list enum { enumeration-constant = unary-expression
declaration-list enum { enumeration-constant = cast-expression
declaration-list enum { enumeration-constant = multiplicative-expression
declaration-list enum { enumeration-constant = additive-expression
declaration-list enum { enumeration-constant = shift-expression
declaration-list enum { enumeration-constant = relational-expression
declaration-list enum { enumeration-constant = equality-expression
declaration-list enum { enumeration-constant = AND-expression
declaration-list enum { enumeration-constant = exclusive-OR-expression
declaration-list enum { enumeration-constant = inclusive-OR-expression
declaration-list enum { enumeration-constant = logical-AND-expression
declaration-list enum { enumeration-constant = logical-OR-expression
declaration-list enum { enumeration-constant = conditional-expression
declaration-list enum { enumeration-constant = constant-expression
declaration-list enum { enumerator
declaration-list enum { enumerator-list
curr: , next: MAN
curr: ID next: ,
declaration-list enum { enumerator-list , enumeration-constant
declaration-list enum { enumerator-list , enumerator
declaration-list enum { enumerator-list
curr: , next: CHILD
curr: ID next: }
declaration-list enum { enumerator-list , enumeration-constant
declaration-list enum { enumerator-list , enumerator
declaration-list enum { enumerator-list
curr: } next: ;
declaration-list enum-specifier
declaration-list type-specifier
declaration-list declaration-specifiers
curr: ; next: NULL
declaration-list declaration
declaration-list
translation-unit 原文地址:http://blog.csdn.net/cwcmcw/article/details/39378607