这是语法归约最后一部分了,后面文法当中还有个外部归约。它已经在前面以及这里都提及到了,也就是把全局声明定义和函数定义整合的过程,最后归约成一颗完整的树。根结点就是translation-unit,因此不再单独示例!
void foo()
{
start:
	for(i = 1; i < NR; ++i) { 
		if(i % 13 == 0)
			goto start;
	}
}
void foo()
{
	a = b + c;
	return;
}
void foo()
{
	if(a < 0)
		a = -a;
	else
		a = 1;
	if(a > 0)
		a = 1;
	else if(a < 0)
		a = -1;
	else
		a = 0;
	switch(a) {
		case 1:
			break;
		case 2:
			{
				a *= a;
				break;
			}
		default:
			{
				a = a + 2;
				break;
			}
	}
}
void foo()
{
	for(i = 0; i < NR; ++i) { 
		i += 2;
	}
	for(;;) {
		++i;
		if(i == 10)
			break;
	}
	while(1) {
		if(i == 10)
			break;
		if(i == 5)
			continue;
		++i;
	}
	do {
		++i;
	}while(i < 10);
}
int foo()
{
	return 1;
}
curr[1]: void  next[73]: foo  
type-specifier 
declaration-specifiers 
curr[73]: ID  next[67]: (  
declaration-specifiers direct-declarator 
curr[67]: (  next[68]: )  
curr[68]: )  next[65]: {  
declaration-specifiers direct-declarator 
declaration-specifiers declarator 
curr[65]: {  next[73]: start  
curr[73]: ID  next[52]: :  
curr[52]: :  next[22]: for  
curr[22]: for  next[67]: (  
curr[67]: (  next[73]: i  
curr[73]: ID  next[53]: =  
declaration-specifiers declarator { ID : for ( primary-expression 
declaration-specifiers declarator { ID : for ( postfix-expression 
declaration-specifiers declarator { ID : for ( unary-expression 
curr[53]: =  next[74]: 1  
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator 
curr[74]: 1  next[72]: ;  
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator primary-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator postfix-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator unary-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator cast-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator multiplicative-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator additive-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator shift-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator relational-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator equality-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator AND-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator exclusive-OR-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator inclusive-OR-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator logical-AND-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator logical-OR-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator conditional-expression 
declaration-specifiers declarator { ID : for ( unary-expression assignment-operator assignment-expression 
declaration-specifiers declarator { ID : for ( assignment-expression 
declaration-specifiers declarator { ID : for ( expression 
curr[72]: ;  next[73]: i  
curr[73]: ID  next[40]: <  
declaration-specifiers declarator { ID : for ( expression ; primary-expression 
declaration-specifiers declarator { ID : for ( expression ; postfix-expression 
declaration-specifiers declarator { ID : for ( expression ; unary-expression 
declaration-specifiers declarator { ID : for ( expression ; cast-expression 
declaration-specifiers declarator { ID : for ( expression ; multiplicative-expression 
declaration-specifiers declarator { ID : for ( expression ; additive-expression 
declaration-specifiers declarator { ID : for ( expression ; shift-expression 
declaration-specifiers declarator { ID : for ( expression ; relational-expression 
curr[40]: <  next[73]: NR  
curr[73]: ID  next[72]: ;  
declaration-specifiers declarator { ID : for ( expression ; relational-expression < primary-expression 
declaration-specifiers declarator { ID : for ( expression ; relational-expression < postfix-expression 
declaration-specifiers declarator { ID : for ( expression ; relational-expression < unary-expression 
declaration-specifiers declarator { ID : for ( expression ; relational-expression < cast-expression 
declaration-specifiers declarator { ID : for ( expression ; relational-expression < multiplicative-expression 
declaration-specifiers declarator { ID : for ( expression ; relational-expression < additive-expression 
declaration-specifiers declarator { ID : for ( expression ; relational-expression < shift-expression 
declaration-specifiers declarator { ID : for ( expression ; relational-expression 
declaration-specifiers declarator { ID : for ( expression ; equality-expression 
declaration-specifiers declarator { ID : for ( expression ; AND-expression 
declaration-specifiers declarator { ID : for ( expression ; exclusive-OR-expression 
declaration-specifiers declarator { ID : for ( expression ; inclusive-OR-expression 
declaration-specifiers declarator { ID : for ( expression ; logical-AND-expression 
declaration-specifiers declarator { ID : for ( expression ; logical-OR-expression 
declaration-specifiers declarator { ID : for ( expression ; conditional-expression 
declaration-specifiers declarator { ID : for ( expression ; assignment-expression 
declaration-specifiers declarator { ID : for ( expression ; expression 
curr[72]: ;  next[28]: ++  
curr[28]: ++  next[73]: i  
curr[73]: ID  next[68]: )  
declaration-specifiers declarator { ID : for ( expression ; expression ; ++ primary-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; ++ postfix-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; ++ unary-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; unary-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; cast-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; multiplicative-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; additive-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; shift-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; relational-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; equality-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; AND-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; exclusive-OR-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; inclusive-OR-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; logical-AND-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; logical-OR-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; conditional-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; assignment-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression 
curr[68]: )  next[65]: {  
curr[65]: {  next[23]: if  
curr[23]: if  next[67]: (  
curr[67]: (  next[73]: i  
curr[73]: ID  next[35]: %  
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( primary-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( postfix-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( unary-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( cast-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( multiplicative-expression 
curr[35]: %  next[74]: 13  
curr[74]: 13  next[44]: ==  
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( multiplicative-expression % primary-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( multiplicative-expression % postfix-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( multiplicative-expression % unary-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( multiplicative-expression % cast-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( multiplicative-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( additive-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( shift-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( relational-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression 
curr[44]: ==  next[74]: 0  
curr[74]: 0  next[68]: )  
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression == primary-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression == postfix-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression == unary-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression == cast-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression == multiplicative-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression == additive-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression == shift-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression == relational-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( equality-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( AND-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( exclusive-OR-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( inclusive-OR-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( logical-AND-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( logical-OR-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( conditional-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( assignment-expression 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( expression 
curr[68]: )  next[14]: goto  
curr[14]: goto  next[73]: start  
curr[73]: ID  next[72]: ;  
curr[72]: ;  next[66]: }  
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( expression ) jump-statement 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { if ( expression ) statement 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { selection-statement 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { statement 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { block-item 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) { block-item-list 
curr[66]: }  next[66]: }  
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) compound-statement 
declaration-specifiers declarator { ID : for ( expression ; expression ; expression ) statement 
declaration-specifiers declarator { ID : iteration-statement 
declaration-specifiers declarator { ID : statement 
declaration-specifiers declarator { labeled-statement 
declaration-specifiers declarator { statement 
declaration-specifiers declarator { block-item 
declaration-specifiers declarator { block-item-list 
curr[66]: }  next[1]: void  
declaration-specifiers declarator compound-statement 
function-definition 
function-definition-list 
curr[1]: void  next[73]: foo  
function-definition-list type-specifier 
function-definition-list declaration-specifiers 
curr[73]: ID  next[67]: (  
function-definition-list declaration-specifiers direct-declarator 
curr[67]: (  next[68]: )  
curr[68]: )  next[65]: {  
function-definition-list declaration-specifiers direct-declarator 
function-definition-list declaration-specifiers declarator 
curr[65]: {  next[73]: a  
curr[73]: ID  next[53]: =  
function-definition-list declaration-specifiers declarator { primary-expression 
function-definition-list declaration-specifiers declarator { postfix-expression 
function-definition-list declaration-specifiers declarator { unary-expression 
curr[53]: =  next[73]: b  
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator 
curr[73]: ID  next[36]: +  
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator primary-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator postfix-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator additive-expression 
curr[36]: +  next[73]: c  
curr[73]: ID  next[72]: ;  
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator additive-expression + primary-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator additive-expression + postfix-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator additive-expression + unary-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator additive-expression + cast-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator additive-expression + multiplicative-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { assignment-expression 
function-definition-list declaration-specifiers declarator { expression 
curr[72]: ;  next[17]: return  
function-definition-list declaration-specifiers declarator { expression-statement 
function-definition-list declaration-specifiers declarator { statement 
function-definition-list declaration-specifiers declarator { block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[17]: return  next[72]: ;  
curr[72]: ;  next[66]: }  
function-definition-list declaration-specifiers declarator { block-item-list jump-statement 
function-definition-list declaration-specifiers declarator { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[66]: }  next[1]: void  
function-definition-list declaration-specifiers declarator compound-statement 
function-definition-list function-definition 
function-definition-list 
curr[1]: void  next[73]: foo  
function-definition-list type-specifier 
function-definition-list declaration-specifiers 
curr[73]: ID  next[67]: (  
function-definition-list declaration-specifiers direct-declarator 
curr[67]: (  next[68]: )  
curr[68]: )  next[65]: {  
function-definition-list declaration-specifiers direct-declarator 
function-definition-list declaration-specifiers declarator 
curr[65]: {  next[23]: if  
curr[23]: if  next[67]: (  
curr[67]: (  next[73]: a  
curr[73]: ID  next[40]: <  
function-definition-list declaration-specifiers declarator { if ( primary-expression 
function-definition-list declaration-specifiers declarator { if ( postfix-expression 
function-definition-list declaration-specifiers declarator { if ( unary-expression 
function-definition-list declaration-specifiers declarator { if ( cast-expression 
function-definition-list declaration-specifiers declarator { if ( multiplicative-expression 
function-definition-list declaration-specifiers declarator { if ( additive-expression 
function-definition-list declaration-specifiers declarator { if ( shift-expression 
function-definition-list declaration-specifiers declarator { if ( relational-expression 
curr[40]: <  next[74]: 0  
curr[74]: 0  next[68]: )  
function-definition-list declaration-specifiers declarator { if ( relational-expression < primary-expression 
function-definition-list declaration-specifiers declarator { if ( relational-expression < postfix-expression 
function-definition-list declaration-specifiers declarator { if ( relational-expression < unary-expression 
function-definition-list declaration-specifiers declarator { if ( relational-expression < cast-expression 
function-definition-list declaration-specifiers declarator { if ( relational-expression < multiplicative-expression 
function-definition-list declaration-specifiers declarator { if ( relational-expression < additive-expression 
function-definition-list declaration-specifiers declarator { if ( relational-expression < shift-expression 
function-definition-list declaration-specifiers declarator { if ( relational-expression 
function-definition-list declaration-specifiers declarator { if ( equality-expression 
function-definition-list declaration-specifiers declarator { if ( AND-expression 
function-definition-list declaration-specifiers declarator { if ( exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { if ( inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { if ( logical-AND-expression 
function-definition-list declaration-specifiers declarator { if ( logical-OR-expression 
function-definition-list declaration-specifiers declarator { if ( conditional-expression 
function-definition-list declaration-specifiers declarator { if ( assignment-expression 
function-definition-list declaration-specifiers declarator { if ( expression 
curr[68]: )  next[73]: a  
curr[73]: ID  next[53]: =  
function-definition-list declaration-specifiers declarator { if ( expression ) primary-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) postfix-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression 
curr[53]: =  next[37]: -  
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator 
curr[37]: -  next[73]: a  
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator unary-operator 
curr[73]: ID  next[72]: ;  
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator unary-operator primary-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator unary-operator postfix-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator unary-operator unary-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator unary-operator cast-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) assignment-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) expression 
curr[72]: ;  next[24]: else  
function-definition-list declaration-specifiers declarator { if ( expression ) expression-statement 
function-definition-list declaration-specifiers declarator { if ( expression ) statement 
curr[24]: else  next[73]: a  
curr[73]: ID  next[53]: =  
function-definition-list declaration-specifiers declarator { if ( expression ) statement else primary-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else postfix-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression 
curr[53]: =  next[74]: 1  
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator 
curr[74]: 1  next[72]: ;  
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator primary-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator postfix-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else assignment-expression 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else expression 
curr[72]: ;  next[23]: if  
function-definition-list declaration-specifiers declarator { if ( expression ) statement else expression-statement 
function-definition-list declaration-specifiers declarator { if ( expression ) statement else statement 
function-definition-list declaration-specifiers declarator { selection-statement 
function-definition-list declaration-specifiers declarator { statement 
function-definition-list declaration-specifiers declarator { block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[23]: if  next[67]: (  
curr[67]: (  next[73]: a  
curr[73]: ID  next[41]: >  
function-definition-list declaration-specifiers declarator { block-item-list if ( primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( relational-expression 
curr[41]: >  next[74]: 0  
curr[74]: 0  next[68]: )  
function-definition-list declaration-specifiers declarator { block-item-list if ( relational-expression > primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( relational-expression > postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( relational-expression > unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( relational-expression > cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( relational-expression > multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( relational-expression > additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( relational-expression > shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression 
curr[68]: )  next[73]: a  
curr[73]: ID  next[53]: =  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression 
curr[53]: =  next[74]: 1  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator 
curr[74]: 1  next[72]: ;  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) expression 
curr[72]: ;  next[24]: else  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) expression-statement 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement 
curr[24]: else  next[23]: if  
curr[23]: if  next[67]: (  
curr[67]: (  next[73]: a  
curr[73]: ID  next[40]: <  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( relational-expression 
curr[40]: <  next[74]: 0  
curr[74]: 0  next[68]: )  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( relational-expression < primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( relational-expression < postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( relational-expression < unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( relational-expression < cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( relational-expression < multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( relational-expression < additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( relational-expression < shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression 
curr[68]: )  next[73]: a  
curr[73]: ID  next[53]: =  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression 
curr[53]: =  next[37]: -  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator 
curr[37]: -  next[74]: 1  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator unary-operator 
curr[74]: 1  next[72]: ;  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator unary-operator primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator unary-operator postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator unary-operator unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator unary-operator cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) expression 
curr[72]: ;  next[24]: else  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) expression-statement 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement 
curr[24]: else  next[73]: a  
curr[73]: ID  next[53]: =  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression 
curr[53]: =  next[74]: 0  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator 
curr[74]: 0  next[72]: ;  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else expression 
curr[72]: ;  next[25]: switch  
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else expression-statement 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else if ( expression ) statement else statement 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else selection-statement 
function-definition-list declaration-specifiers declarator { block-item-list if ( expression ) statement else statement 
function-definition-list declaration-specifiers declarator { block-item-list selection-statement 
function-definition-list declaration-specifiers declarator { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[25]: switch  next[67]: (  
curr[67]: (  next[73]: a  
curr[73]: ID  next[68]: )  
function-definition-list declaration-specifiers declarator { block-item-list switch ( primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression 
curr[68]: )  next[65]: {  
curr[65]: {  next[18]: case  
curr[18]: case  next[74]: 1  
curr[74]: 1  next[52]: :  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case constant-expression 
curr[52]: :  next[16]: break  
curr[16]: break  next[72]: ;  
curr[72]: ;  next[18]: case  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case constant-expression : jump-statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case constant-expression : statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list 
curr[18]: case  next[74]: 2  
curr[74]: 2  next[52]: :  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression 
curr[52]: :  next[65]: {  
curr[65]: {  next[73]: a  
curr[73]: ID  next[56]: *=  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression 
curr[56]: *=  next[73]: a  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator 
curr[73]: ID  next[72]: ;  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { expression 
curr[72]: ;  next[16]: break  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { expression-statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { block-item 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { block-item-list 
curr[16]: break  next[72]: ;  
curr[72]: ;  next[66]: }  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { block-item-list jump-statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : { block-item-list 
curr[66]: }  next[19]: default  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : compound-statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case constant-expression : statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list case-labeled-statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list 
curr[19]: default  next[52]: :  
curr[52]: :  next[65]: {  
curr[65]: {  next[73]: a  
curr[73]: ID  next[53]: =  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression 
curr[53]: =  next[73]: a  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator 
curr[73]: ID  next[36]: +  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator additive-expression 
curr[36]: +  next[74]: 2  
curr[74]: 2  next[72]: ;  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator additive-expression + primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator additive-expression + postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator additive-expression + unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator additive-expression + cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator additive-expression + multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { expression 
curr[72]: ;  next[16]: break  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { expression-statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { block-item 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { block-item-list 
curr[16]: break  next[72]: ;  
curr[72]: ;  next[66]: }  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { block-item-list jump-statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : { block-item-list 
curr[66]: }  next[66]: }  
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : compound-statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-labeled-statement-list default : statement 
function-definition-list declaration-specifiers declarator { block-item-list switch ( expression ) { case-block 
curr[66]: }  next[66]: }  
function-definition-list declaration-specifiers declarator { block-item-list selection-statement 
function-definition-list declaration-specifiers declarator { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[66]: }  next[1]: void  
function-definition-list declaration-specifiers declarator compound-statement 
function-definition-list function-definition 
function-definition-list 
curr[1]: void  next[73]: foo  
function-definition-list type-specifier 
function-definition-list declaration-specifiers 
curr[73]: ID  next[67]: (  
function-definition-list declaration-specifiers direct-declarator 
curr[67]: (  next[68]: )  
curr[68]: )  next[65]: {  
function-definition-list declaration-specifiers direct-declarator 
function-definition-list declaration-specifiers declarator 
curr[65]: {  next[22]: for  
curr[22]: for  next[67]: (  
curr[67]: (  next[73]: i  
curr[73]: ID  next[53]: =  
function-definition-list declaration-specifiers declarator { for ( primary-expression 
function-definition-list declaration-specifiers declarator { for ( postfix-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression 
curr[53]: =  next[74]: 0  
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator 
curr[74]: 0  next[72]: ;  
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator primary-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator postfix-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { for ( unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { for ( assignment-expression 
function-definition-list declaration-specifiers declarator { for ( expression 
curr[72]: ;  next[73]: i  
curr[73]: ID  next[40]: <  
function-definition-list declaration-specifiers declarator { for ( expression ; primary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; postfix-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; unary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; cast-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; multiplicative-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; additive-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; shift-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; relational-expression 
curr[40]: <  next[73]: NR  
curr[73]: ID  next[72]: ;  
function-definition-list declaration-specifiers declarator { for ( expression ; relational-expression < primary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; relational-expression < postfix-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; relational-expression < unary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; relational-expression < cast-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; relational-expression < multiplicative-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; relational-expression < additive-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; relational-expression < shift-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; relational-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; equality-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; AND-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; logical-AND-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; logical-OR-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; conditional-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; assignment-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression 
curr[72]: ;  next[28]: ++  
curr[28]: ++  next[73]: i  
curr[73]: ID  next[68]: )  
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; ++ primary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; ++ postfix-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; ++ unary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; unary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; cast-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; multiplicative-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; additive-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; shift-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; relational-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; equality-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; AND-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; logical-AND-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; logical-OR-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; conditional-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; assignment-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression 
curr[68]: )  next[65]: {  
curr[65]: {  next[73]: i  
curr[73]: ID  next[54]: +=  
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { primary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { postfix-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression 
curr[54]: +=  next[74]: 2  
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator 
curr[74]: 2  next[72]: ;  
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator primary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator postfix-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator unary-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator cast-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator multiplicative-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator additive-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator shift-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator relational-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator equality-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator AND-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator logical-AND-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator logical-OR-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator conditional-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { unary-expression assignment-operator assignment-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { assignment-expression 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { expression 
curr[72]: ;  next[66]: }  
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { expression-statement 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { statement 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { block-item 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) { block-item-list 
curr[66]: }  next[22]: for  
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) compound-statement 
function-definition-list declaration-specifiers declarator { for ( expression ; expression ; expression ) statement 
function-definition-list declaration-specifiers declarator { iteration-statement 
function-definition-list declaration-specifiers declarator { statement 
function-definition-list declaration-specifiers declarator { block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[22]: for  next[67]: (  
curr[67]: (  next[72]: ;  
curr[72]: ;  next[72]: ;  
curr[72]: ;  next[68]: )  
curr[68]: )  next[65]: {  
curr[65]: {  next[28]: ++  
curr[28]: ++  next[73]: i  
curr[73]: ID  next[72]: ;  
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { ++ primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { ++ postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { ++ unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { expression 
curr[72]: ;  next[23]: if  
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { expression-statement 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { statement 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list 
curr[23]: if  next[67]: (  
curr[67]: (  next[73]: i  
curr[73]: ID  next[44]: ==  
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression 
curr[44]: ==  next[74]: 10  
curr[74]: 10  next[68]: )  
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression == primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression == postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression == unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression == cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression == multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression == additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression == shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression == relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( expression 
curr[68]: )  next[16]: break  
curr[16]: break  next[72]: ;  
curr[72]: ;  next[66]: }  
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( expression ) jump-statement 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list if ( expression ) statement 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list selection-statement 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) { block-item-list 
curr[66]: }  next[21]: while  
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) compound-statement 
function-definition-list declaration-specifiers declarator { block-item-list for ( ; ; ) statement 
function-definition-list declaration-specifiers declarator { block-item-list iteration-statement 
function-definition-list declaration-specifiers declarator { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[21]: while  next[67]: (  
curr[67]: (  next[74]: 1  
curr[74]: 1  next[68]: )  
function-definition-list declaration-specifiers declarator { block-item-list while ( primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression 
curr[68]: )  next[65]: {  
curr[65]: {  next[23]: if  
curr[23]: if  next[67]: (  
curr[67]: (  next[73]: i  
curr[73]: ID  next[44]: ==  
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression 
curr[44]: ==  next[74]: 10  
curr[74]: 10  next[68]: )  
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression == primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression == postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression == unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression == cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression == multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression == additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression == shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression == relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( expression 
curr[68]: )  next[16]: break  
curr[16]: break  next[72]: ;  
curr[72]: ;  next[23]: if  
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( expression ) jump-statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { if ( expression ) statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { selection-statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list 
curr[23]: if  next[67]: (  
curr[67]: (  next[73]: i  
curr[73]: ID  next[44]: ==  
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression 
curr[44]: ==  next[74]: 5  
curr[74]: 5  next[68]: )  
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression == primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression == postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression == unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression == cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression == multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression == additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression == shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression == relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( expression 
curr[68]: )  next[15]: continue  
curr[15]: continue  next[72]: ;  
curr[72]: ;  next[28]: ++  
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( expression ) jump-statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list if ( expression ) statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list selection-statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list 
curr[28]: ++  next[73]: i  
curr[73]: ID  next[72]: ;  
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list ++ primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list ++ postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list ++ unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list expression 
curr[72]: ;  next[66]: }  
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list expression-statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) { block-item-list 
curr[66]: }  next[20]: do  
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) compound-statement 
function-definition-list declaration-specifiers declarator { block-item-list while ( expression ) statement 
function-definition-list declaration-specifiers declarator { block-item-list iteration-statement 
function-definition-list declaration-specifiers declarator { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[20]: do  next[65]: {  
curr[65]: {  next[28]: ++  
curr[28]: ++  next[73]: i  
curr[73]: ID  next[72]: ;  
function-definition-list declaration-specifiers declarator { block-item-list do { ++ primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { ++ postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { ++ unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list do { expression 
curr[72]: ;  next[66]: }  
function-definition-list declaration-specifiers declarator { block-item-list do { expression-statement 
function-definition-list declaration-specifiers declarator { block-item-list do { statement 
function-definition-list declaration-specifiers declarator { block-item-list do { block-item 
function-definition-list declaration-specifiers declarator { block-item-list do { block-item-list 
curr[66]: }  next[21]: while  
function-definition-list declaration-specifiers declarator { block-item-list do compound-statement 
function-definition-list declaration-specifiers declarator { block-item-list do statement 
curr[21]: while  next[67]: (  
curr[67]: (  next[73]: i  
curr[73]: ID  next[40]: <  
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( relational-expression 
curr[40]: <  next[74]: 10  
curr[74]: 10  next[68]: )  
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( relational-expression < primary-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( relational-expression < postfix-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( relational-expression < unary-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( relational-expression < cast-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( relational-expression < multiplicative-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( relational-expression < additive-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( relational-expression < shift-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( relational-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( equality-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( logical-AND-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( logical-OR-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( conditional-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( assignment-expression 
function-definition-list declaration-specifiers declarator { block-item-list do statement while ( expression 
curr[68]: )  next[72]: ;  
curr[72]: ;  next[66]: }  
function-definition-list declaration-specifiers declarator { block-item-list iteration-statement 
function-definition-list declaration-specifiers declarator { block-item-list statement 
function-definition-list declaration-specifiers declarator { block-item-list block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[66]: }  next[6]: int  
function-definition-list declaration-specifiers declarator compound-statement 
function-definition-list function-definition 
function-definition-list 
curr[6]: int  next[73]: foo  
function-definition-list type-specifier 
function-definition-list declaration-specifiers 
curr[73]: ID  next[67]: (  
function-definition-list declaration-specifiers direct-declarator 
curr[67]: (  next[68]: )  
curr[68]: )  next[65]: {  
function-definition-list declaration-specifiers direct-declarator 
function-definition-list declaration-specifiers declarator 
curr[65]: {  next[17]: return  
curr[17]: return  next[74]: 1  
curr[74]: 1  next[72]: ;  
function-definition-list declaration-specifiers declarator { return primary-expression 
function-definition-list declaration-specifiers declarator { return postfix-expression 
function-definition-list declaration-specifiers declarator { return unary-expression 
function-definition-list declaration-specifiers declarator { return cast-expression 
function-definition-list declaration-specifiers declarator { return multiplicative-expression 
function-definition-list declaration-specifiers declarator { return additive-expression 
function-definition-list declaration-specifiers declarator { return shift-expression 
function-definition-list declaration-specifiers declarator { return relational-expression 
function-definition-list declaration-specifiers declarator { return equality-expression 
function-definition-list declaration-specifiers declarator { return AND-expression 
function-definition-list declaration-specifiers declarator { return exclusive-OR-expression 
function-definition-list declaration-specifiers declarator { return inclusive-OR-expression 
function-definition-list declaration-specifiers declarator { return logical-AND-expression 
function-definition-list declaration-specifiers declarator { return logical-OR-expression 
function-definition-list declaration-specifiers declarator { return conditional-expression 
function-definition-list declaration-specifiers declarator { return assignment-expression 
function-definition-list declaration-specifiers declarator { return expression 
curr[72]: ;  next[66]: }  
function-definition-list declaration-specifiers declarator { jump-statement 
function-definition-list declaration-specifiers declarator { statement 
function-definition-list declaration-specifiers declarator { block-item 
function-definition-list declaration-specifiers declarator { block-item-list 
curr[66]: }  next[0]: NULL  
function-definition-list declaration-specifiers declarator compound-statement 
function-definition-list function-definition 
function-definition-list 
translation-unit 原文地址:http://blog.csdn.net/cwcmcw/article/details/39552555