C语法归约之数组和指针(1)

上一篇,开始了语法归约,给出变量声明定义初始化归约过程,和c99文法图,请查阅这里,相关文法图在这里依然要使用

1、数组归约

1.1、示例代码

int a[10];
int a[2][3];
int a[2][3][4];

struct AA boy[100];
struct AA boy[100][100];
union BB girl[10];

1.2、归约过程

curr: int  next: a
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
declaration-specifiers init-declarator
declaration-specifiers init-declarator-list 

curr: ;  next: int
declaration
declaration-list 

curr: int  next: a
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: ID  next: [
declaration-list declaration-specifiers direct-declarator 

curr: [  next: 2  

curr: 2  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 

curr: [  next: 3  

curr: 3  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
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: int
declaration-list declaration
declaration-list 

curr: int  next: a
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: ID  next: [
declaration-list declaration-specifiers direct-declarator 

curr: [  next: 2  

curr: 2  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 

curr: [  next: 3  

curr: 3  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 

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
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: struct
declaration-list declaration
declaration-list 

curr: struct  next: AA  

curr: boy  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: 100  

curr: 100  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
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: struct
declaration-list declaration
declaration-list 

curr: struct  next: AA  

curr: boy  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: 100  

curr: 100  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 

curr: [  next: 100  

curr: 100  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
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: union
declaration-list declaration
declaration-list 

curr: union  next: BB  

curr: girl  next: ID
declaration-list union-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: ID  next: [
declaration-list declaration-specifiers direct-declarator 

curr: [  next: 10  

curr: 10  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
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: NULL
declaration-list declaration
declaration-list
translation-unit 

1.3、总结说明

无论数组是多少维度,每个维度的归约过程都是一样一样的!没有区别。由于(expression),id, string, 常量会归约到primary-expression。因此,从文法上讲,数组的定义中可以出现表达式和变量。但是后期编译要为数组分配空间,而变量需要计算才能知道大小,因此是不能在数组定义时候使用变量的!

2、指针归约

2.1、示例代码

static int *ip;
signed char *str;
char **str;
void *vp;
int *a;
int ****a;
struct AA *boy;
struct AA **boy;
struct AA ****boy;
union BB *girl;
union BB **girl;

2.2、归约过程

curr: static  next: int
storage-class-specifier 

curr: int  next: *
storage-class-specifier type-specifier
storage-class-specifier declaration-specifiers
declaration-specifiers 

curr: *  next: ip
declaration-specifiers pointer 

curr: ID  next: ;
declaration-specifiers pointer direct-declarator
declaration-specifiers declarator
declaration-specifiers init-declarator
declaration-specifiers init-declarator-list 

curr: ;  next: signed
declaration
declaration-list 

curr: signed  next: char
declaration-list type-specifier 

curr: char  next: *
declaration-list type-specifier type-specifier
declaration-list type-specifier declaration-specifiers
declaration-list declaration-specifiers 

curr: *  next: str
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: char
declaration-list declaration
declaration-list 

curr: char  next: *
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: *  

curr: *  next: str
declaration-list declaration-specifiers * pointer
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: void
declaration-list declaration
declaration-list 

curr: void  next: *
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: vp
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: int
declaration-list declaration
declaration-list 

curr: int  next: *
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: a
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: int
declaration-list declaration
declaration-list 

curr: int  next: *
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: *  

curr: *  next: *  

curr: *  next: *  

curr: *  next: a
declaration-list declaration-specifiers * * * pointer
declaration-list declaration-specifiers * * pointer
declaration-list declaration-specifiers * pointer
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: struct
declaration-list declaration
declaration-list 

curr: struct  next: AA  

curr: ID  next: *
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: boy
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: struct
declaration-list declaration
declaration-list 

curr: struct  next: AA  

curr: ID  next: *
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: *  

curr: *  next: boy
declaration-list declaration-specifiers * pointer
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: struct
declaration-list declaration
declaration-list 

curr: struct  next: AA  

curr: ID  next: *
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: *  

curr: *  next: *  

curr: *  next: *  

curr: *  next: boy
declaration-list declaration-specifiers * * * pointer
declaration-list declaration-specifiers * * pointer
declaration-list declaration-specifiers * pointer
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: union
declaration-list declaration
declaration-list 

curr: union  next: BB  

curr: ID  next: *
declaration-list union-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: girl
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: union
declaration-list declaration
declaration-list 

curr: union  next: BB  

curr: ID  next: *
declaration-list union-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: *  

curr: *  next: girl
declaration-list declaration-specifiers * pointer
declaration-list declaration-specifiers pointer 

curr: ID  next: ;
declaration-list declaration-specifiers pointer 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 

2.3、总结说明

指针定义前面挂多少个星都无妨,只要你愿意挂千万,文法照样解析。只是使用产生式poiner->*pointer迭代次数多点而已!

3、指针和数组的一起归约

3.1、示例代码

int *a[11];
int (**a)[5];
int (*a)[5][4];
int *a[11][22];
char **a[2];
char ***a[2];
struct AA *boy[11];
struct AA **boy[11][22];
struct AA (*boy)[11];
struct AA (**boy)[11];
union BB *girl[10][22];
union BB **girl[10];

3.2、归约过程

curr: int  next: *
type-specifier
declaration-specifiers 

curr: *  next: a
declaration-specifiers pointer 

curr: ID  next: [
declaration-specifiers pointer direct-declarator 

curr: [  next: 11  

curr: 11  next: ]
declaration-specifiers pointer direct-declarator [ primary-expression
declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-specifiers pointer direct-declarator [ unary-expression
declaration-specifiers pointer direct-declarator [ cast-expression
declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-specifiers pointer direct-declarator [ additive-expression
declaration-specifiers pointer direct-declarator [ shift-expression
declaration-specifiers pointer direct-declarator [ relational-expression
declaration-specifiers pointer direct-declarator [ equality-expression
declaration-specifiers pointer direct-declarator [ AND-expression
declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: ;
declaration-specifiers pointer direct-declarator
declaration-specifiers declarator
declaration-specifiers init-declarator
declaration-specifiers init-declarator-list 

curr: ;  next: int
declaration
declaration-list 

curr: int  next: (
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: (  next: *  

curr: *  next: *  

curr: *  next: a
declaration-list declaration-specifiers ( * pointer
declaration-list declaration-specifiers ( pointer 

curr: ID  next: )
declaration-list declaration-specifiers ( pointer direct-declarator
declaration-list declaration-specifiers ( declarator 

curr: )  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
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: int
declaration-list declaration
declaration-list 

curr: int  next: (
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: (  next: *  

curr: *  next: a
declaration-list declaration-specifiers ( pointer 

curr: ID  next: )
declaration-list declaration-specifiers ( pointer direct-declarator
declaration-list declaration-specifiers ( declarator 

curr: )  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 

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
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: int
declaration-list declaration
declaration-list 

curr: int  next: *
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: a
declaration-list declaration-specifiers pointer 

curr: ID  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 11  

curr: 11  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 22  

curr: 22  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: char
declaration-list declaration
declaration-list 

curr: char  next: *
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: *  

curr: *  next: a
declaration-list declaration-specifiers * pointer
declaration-list declaration-specifiers pointer 

curr: ID  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 2  

curr: 2  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: char
declaration-list declaration
declaration-list 

curr: char  next: *
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: *  

curr: *  next: *  

curr: *  next: a
declaration-list declaration-specifiers * * pointer
declaration-list declaration-specifiers * pointer
declaration-list declaration-specifiers pointer 

curr: ID  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 2  

curr: 2  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: struct
declaration-list declaration
declaration-list 

curr: struct  next: AA  

curr: ID  next: *
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: boy
declaration-list declaration-specifiers pointer 

curr: ID  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 11  

curr: 11  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: struct
declaration-list declaration
declaration-list 

curr: struct  next: AA  

curr: ID  next: *
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: *  

curr: *  next: boy
declaration-list declaration-specifiers * pointer
declaration-list declaration-specifiers pointer 

curr: ID  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 11  

curr: 11  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 22  

curr: 22  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: struct
declaration-list declaration
declaration-list 

curr: struct  next: AA  

curr: ID  next: (
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: (  next: *  

curr: *  next: boy
declaration-list declaration-specifiers ( pointer 

curr: ID  next: )
declaration-list declaration-specifiers ( pointer direct-declarator
declaration-list declaration-specifiers ( declarator 

curr: )  next: [
declaration-list declaration-specifiers direct-declarator 

curr: [  next: 11  

curr: 11  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
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: struct
declaration-list declaration
declaration-list 

curr: struct  next: AA  

curr: ID  next: (
declaration-list struct-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: (  next: *  

curr: *  next: *  

curr: *  next: boy
declaration-list declaration-specifiers ( * pointer
declaration-list declaration-specifiers ( pointer 

curr: ID  next: )
declaration-list declaration-specifiers ( pointer direct-declarator
declaration-list declaration-specifiers ( declarator 

curr: )  next: [
declaration-list declaration-specifiers direct-declarator 

curr: [  next: 11  

curr: 11  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
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: union
declaration-list declaration
declaration-list 

curr: union  next: BB  

curr: ID  next: *
declaration-list union-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: girl
declaration-list declaration-specifiers pointer 

curr: ID  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 10  

curr: 10  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 22  

curr: 22  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: ;
declaration-list declaration-specifiers pointer direct-declarator
declaration-list declaration-specifiers declarator
declaration-list declaration-specifiers init-declarator
declaration-list declaration-specifiers init-declarator-list 

curr: ;  next: union
declaration-list declaration
declaration-list 

curr: union  next: BB  

curr: ID  next: *
declaration-list union-specifier
declaration-list type-specifier
declaration-list declaration-specifiers 

curr: *  next: *  

curr: *  next: girl
declaration-list declaration-specifiers * pointer
declaration-list declaration-specifiers pointer 

curr: ID  next: [
declaration-list declaration-specifiers pointer direct-declarator 

curr: [  next: 10  

curr: 10  next: ]
declaration-list declaration-specifiers pointer direct-declarator [ primary-expression
declaration-list declaration-specifiers pointer direct-declarator [ postfix-expression
declaration-list declaration-specifiers pointer direct-declarator [ unary-expression
declaration-list declaration-specifiers pointer direct-declarator [ cast-expression
declaration-list declaration-specifiers pointer direct-declarator [ multiplicative-expression
declaration-list declaration-specifiers pointer direct-declarator [ additive-expression
declaration-list declaration-specifiers pointer direct-declarator [ shift-expression
declaration-list declaration-specifiers pointer direct-declarator [ relational-expression
declaration-list declaration-specifiers pointer direct-declarator [ equality-expression
declaration-list declaration-specifiers pointer direct-declarator [ AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ exclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ inclusive-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-AND-expression
declaration-list declaration-specifiers pointer direct-declarator [ logical-OR-expression
declaration-list declaration-specifiers pointer direct-declarator [ conditional-expression
declaration-list declaration-specifiers pointer direct-declarator [ assignment-expression 

curr: ]  next: ;
declaration-list declaration-specifiers pointer 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 

3.3、总结说明

(*a)*a 都归约到direct-declarator。它的区分在归约过程上,以及后期类型解析上!

下文:函数

时间: 2024-12-19 22:53:09

C语法归约之数组和指针(1)的相关文章

C语法归约之变量声明和定义(0)

0前言 闲来无事,在屋里多看了一眼<编译原理>(2V),有练练手的冲动--采用LR(1)技术,写了一个C语言的语法归约器!之所以用LR(1)是因为gcc,ucc,tcc和lcc跟商量好似的,清一色的用的LL归约技术,书上也是讲的跟天花一样漂亮,那么就说明它已经十分成熟了,如果再使用LL技术实在是炸不出价值来,源码一抓一大把,看看就够了,重写必要性不大!另外,书中的LR技术讲的项集又是大的没谱,工作量太大:如果使用工具yacc生成,又不知道它咋搞的猫腻,所以就没有踩它们的脚印,自己整套方法hig

深入理解 [指针函数] 、[函数指针]、[指针的指针]、[指向指针数组的指针]

指针函数 1.指针函数是指带指针的函数,即本质是一个函数.当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中. 函数返回类型是某一类型的指针: 格式: 类型标识符  *函数名(参数表) int *match(void *key_x,void *key_y); 解析:首先来说它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针

C语法归约之函数(2)

上篇给出了数组和指针的归约过程,此篇要进一步开辟新阵地--函数!主要用到文法树中的类型和抽象类型以及语句中的compound-stm; 语句和表达式的归约过程将在后期陆续给出,这里函数定义只是简单的一对花括号. 函数声明和定义归约 示例代码 本代码部分来自与C99标准中的范例 int f(void); int f(char *str, ...); int *fip(); int (*pfi)(); int (*apfi[3])(int *x, int *y); int (*fpfi(int (*

《征服 C 指针》摘录3:数组 与 指针

一.数组 和 指针 的微妙关系 数组 是指将固定个数.相同类型的变量排列起来的对象. 正如之前说明的那样,给指针加 N,指针前进“当前指针指向的变量类型的长度 X N”. 因此,给指向数组的某个元素的指针加 N 后,指针会指向 N 个之后的元素. #include <stdio.h> int main(void) { int array[5]; int *p; int i; /* 给数组 array 的各元素设定值 */ for (i = 0; i < 5; i++) { array[i

C语言核心之数组和指针详解

寒假要开始猛刷<剑指offer>,先回顾一下C语言基础做个热身. 指针 相信大家对下面的代码不陌生: 1 int i=2; 2 int *p; 3 p=&i; 这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而是变量的地址.如上代码,指针p中保存的是整型变量i的地址信息. 接下来看如何定义一个指针,既然指针也是一个变量,那么它的定义也和其它变量一样定义:如: int *p: .'*' 是间接寻址或间接引用运算符.上例中我们还

数组的指针

首先来思考下?到底能不能用for来遍历遍历数组? 其实可以是可以但是,不是真正意义上的遍历, for循环遍历,只适合索引数组,因为,我们都是先得到数组的下标,然后再利用下标去访问数组的元素,但是,从逻辑上来说,下标是数组的一部分,一定是先有元素,才得到元素的下标! 我们习惯使用foreach来遍历数组,因为foreach本质的原因是可以直接找到数组的指针! 在数组的指针当中大概有一下的常用的函数:key current next reset key语法是:key(数组名) 作用:获取该数组当前元

指针的指针&amp;指向指针数组的指针

一.指针的指针    指针的指针看上去有些令人费解.它们的声明有两个星号.例如:        char ** cp;    如果有三个星号,那就是指针的指针的指针,四个星号就是指针的指针的指针的指针,依次类推.当你熟悉了简单的例子以后,就可以应付复杂的情况了.当然,实际程序中,一般也只用到  二级指针,三个星号不常见,更别说四个星号了.    指针的指针需要用到指针的地址.        char c='A';        char *p=&c;        char **cp=&p

C语言数组与指针

一维数组与指针 int a[10]; int *pa; 一维数组的数组名代表的就是该数组第一个元素的地址,所以复制语句pa=&a[0]等价于pa=a.对数组元素a[i]的引用等价于*(a+i).在计算数组元素a[i]的值时,C语言实际上先将*(a+1)后再进行求值,所以用指针编写的程序比用数组下标编写的程序执行速度快. 数组名和指针之间有一个不同之处,指针是一个变量,pa=a和pa++都是合法的.但数组名不是变量,因此,类似于a=pa和a++形式的语句是非法的. 当把数组名传递给一个函数时,实际

第一章 数组与指针概念剖析

数组与指针生来就是双胞胎,多数人就是从数组的学习开始指针的旅程的.在学习的过程中,很自然就会经常听到或见到关于数组与指针的各种各样的看法,下面我节选一些在各种论坛和文章里经常见到的文字: “一维数组是一级指针” “二维数组是二级指针” “数组名是一个常量指针” “数组名是一个指针常量” ........................ 这些文字看起来非常熟悉吧?类似的文字还有许多.不过非常遗憾,这些文字都是错误的,实际上数组名永远都不是指针!这个结论也许会让你震惊,但它的确是事实.但是,在论述这