这是语法归约最后一部分了,后面文法当中还有个外部归约。它已经在前面以及这里都提及到了,也就是把全局声明定义和函数定义整合的过程,最后归约成一颗完整的树。根结点就是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
总结
C语言语法归约到此结束!多余总结不说了,提醒一点吧!文法不是C的全部,它太宽泛了,如果只看它的话,能得到非常复杂的组合出来,真正的C还要包括语义分析部分,也就是说把文法推导出来东西进行有意义化!即文法上推出的东西不是全部都合法的!因此,c只用了文法推导结果中的一个子集,而不是全集!好比汉语词汇组合说出来的东西不是全部都有意义,可以有脏话废话和不是人话^_^,这得需要人大脑,方言规则,社会伦理道德等等来解析!就这么多吧!谢谢你的阅读!
特此声明:
21世纪什么最重要,开源!知识无贵贱,知识无国界!知识需要传播,知识需要应用!不要版权,但要尊重劳动,转载请注明出处!
作者:my_live_123