首页 > 代码库 > C语法归约之语句(5)
C语法归约之语句(5)
这是语法归约最后一部分了,后面文法当中还有个外部归约。它已经在前面以及这里都提及到了,也就是把全局声明定义和函数定义整合的过程,最后归约成一颗完整的树。根结点就是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
C语法归约之语句(5)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。