I0:
PROGRAM->. int id ( ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/#
PROGRAM->. int id ( ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/int
PROGRAM_LIST->. PROGRAM ,/#
PROGRAM_LIST->. PROGRAM ,/int
PROGRAM_LIST->. PROGRAM_LIST PROGRAM ,/#
PROGRAM_LIST->. PROGRAM_LIST PROGRAM ,/int
S->. PROGRAM_LIST ,/#
S'->. S ,/#
I1:
PROGRAM_LIST->PROGRAM .,/#
PROGRAM_LIST->PROGRAM .,/int
I2:
PROGRAM->. int id ( ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/#
PROGRAM->. int id ( ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/int
PROGRAM_LIST->PROGRAM_LIST . PROGRAM ,/#
PROGRAM_LIST->PROGRAM_LIST . PROGRAM ,/int
S->PROGRAM_LIST .,/#
I3:
S'->S .,/#
I4:
PROGRAM->int . id ( ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/#
PROGRAM->int . id ( ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/int
I5:
PROGRAM_LIST->PROGRAM_LIST PROGRAM .,/#
PROGRAM_LIST->PROGRAM_LIST PROGRAM .,/int
I6:
PROGRAM->int id . ( ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/#
PROGRAM->int id . ( ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/int
I7:
PROGRAM->int id ( . ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/#
PROGRAM->int id ( . ) { DECLARATION_STATEMENT STATEMENT_LIST } ,/int
I8:
PROGRAM->int id ( ) . { DECLARATION_STATEMENT STATEMENT_LIST } ,/#
PROGRAM->int id ( ) . { DECLARATION_STATEMENT STATEMENT_LIST } ,/int
I9:
DECLARATION->. TYPE_SPECIFIER ID_LIST ; ,/(/digit/for/id/if/printf/scanf(/{
DECLARATION->. TYPE_SPECIFIER ID_LIST ; ,/float/int
DECLARATION_STATEMENT->. DECLARATION ,/(/digit/for/id/if/printf/scanf(/{
DECLARATION_STATEMENT->. DECLARATION ,/float/int
DECLARATION_STATEMENT->. DECLARATION_STATEMENT DECLARATION ,/(/digit/for/id/if/printf/scanf(/{
DECLARATION_STATEMENT->. DECLARATION_STATEMENT DECLARATION ,/float/int
TYPE_SPECIFIER->. float ,/id
TYPE_SPECIFIER->. int ,/id
PROGRAM->int id ( ) { . DECLARATION_STATEMENT STATEMENT_LIST } ,/#
PROGRAM->int id ( ) { . DECLARATION_STATEMENT STATEMENT_LIST } ,/int
I10:
DECLARATION_STATEMENT->DECLARATION .,/(/digit/for/id/if/printf/scanf(/{
DECLARATION_STATEMENT->DECLARATION .,/float/int
I11:
ASSIGN_EXPRESSION->. LEFT_VALUE = EXPRESSION ,/;
DECLARATION->. TYPE_SPECIFIER ID_LIST ; ,/(/digit/for/id/if/printf/scanf(/{
DECLARATION->. TYPE_SPECIFIER ID_LIST ; ,/float/int
ITERATION_EXPRESSION->. for ( ASSIGN_EXPRESSION ; M RELATION_EXPRESSION ; M INC_EXPRESSION ) STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
ITERATION_EXPRESSION->. for ( ASSIGN_EXPRESSION ; M RELATION_EXPRESSION ; M INC_EXPRESSION ) STATEMENT ,/}
LEFT_VALUE->. id ,/=
LEFT_VALUE->. id [ EXPRESSION ] ,/=
SELECTION_STATEMENT->. if ( M RELATION_EXPRESSION ) STATEMENT M else STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
SELECTION_STATEMENT->. if ( M RELATION_EXPRESSION ) STATEMENT M else STATEMENT ,/}
STATEMENT->. ITERATION_EXPRESSION ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. ITERATION_EXPRESSION ,/}
STATEMENT->. SELECTION_STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. SELECTION_STATEMENT ,/}
STATEMENT->. ASSIGN_EXPRESSION ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. ASSIGN_EXPRESSION ; ,/}
STATEMENT->. RETURN EXPRESSION ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. RETURN EXPRESSION ; ,/}
STATEMENT->. { STATEMENT_LIST } ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. { STATEMENT_LIST } ,/}
STATEMENT->. printf ( string ) ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. printf ( string ) ; ,/}
STATEMENT->. printf ( string ,M ID_LIST ) ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. printf ( string ,M ID_LIST ) ; ,/}
STATEMENT->. scanf( string , & id ) ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. scanf( string , & id ) ; ,/}
STATEMENT_LIST->. STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT_LIST->. STATEMENT ,/}
STATEMENT_LIST->. STATEMENT_LIST STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT_LIST->. STATEMENT_LIST STATEMENT ,/}
TYPE_SPECIFIER->. float ,/id
TYPE_SPECIFIER->. int ,/id
DECLARATION_STATEMENT->DECLARATION_STATEMENT . DECLARATION ,/(/digit/for/id/if/printf/scanf(/{
DECLARATION_STATEMENT->DECLARATION_STATEMENT . DECLARATION ,/float/int
PROGRAM->int id ( ) { DECLARATION_STATEMENT . STATEMENT_LIST } ,/#
PROGRAM->int id ( ) { DECLARATION_STATEMENT . STATEMENT_LIST } ,/int
I12:
ID_LIST->. id ,/,
ID_LIST->. id ,/;
ID_LIST->. ID_LIST , id ,/,
ID_LIST->. ID_LIST , id ,/;
ID_LIST->. id [ digit ] ,/,
ID_LIST->. id [ digit ] ,/;
ID_LIST->. id [ digit ] = { DIGIT_LIST } ,/,
ID_LIST->. id [ digit ] = { DIGIT_LIST } ,/;
DECLARATION->TYPE_SPECIFIER . ID_LIST ; ,/(/digit/for/id/if/printf/scanf(/{
DECLARATION->TYPE_SPECIFIER . ID_LIST ; ,/float/int
I13:
TYPE_SPECIFIER->float .,/id
I14:
TYPE_SPECIFIER->int .,/id
I15:
STATEMENT->ASSIGN_EXPRESSION . ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->ASSIGN_EXPRESSION . ; ,/}
I16:
DECLARATION_STATEMENT->DECLARATION_STATEMENT DECLARATION .,/(/digit/for/id/if/printf/scanf(/{
DECLARATION_STATEMENT->DECLARATION_STATEMENT DECLARATION .,/float/int
I17:
STATEMENT->ITERATION_EXPRESSION .,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->ITERATION_EXPRESSION .,/}
I18:
ASSIGN_EXPRESSION->LEFT_VALUE . = EXPRESSION ,/;
I19:
E->. T ,/+
E->. T ,/-
E->. T ,/;
E->. E + T ,/+
E->. E + T ,/-
E->. E + T ,/;
E->. E - T ,/+
E->. E - T ,/-
E->. E - T ,/;
EXPRESSION->. E ,/;
F->. digit ,/*
F->. digit ,/+
F->. digit ,/-
F->. digit ,//
F->. digit ,/;
F->. id ,/*
F->. id ,/+
F->. id ,/-
F->. id ,//
F->. id ,/;
F->. ( E ) ,/*
F->. ( E ) ,/+
F->. ( E ) ,/-
F->. ( E ) ,//
F->. ( E ) ,/;
F->. id [ EXPRESSION ] ,/*
F->. id [ EXPRESSION ] ,/+
F->. id [ EXPRESSION ] ,/-
F->. id [ EXPRESSION ] ,//
F->. id [ EXPRESSION ] ,/;
T->. F ,/*
T->. F ,/+
T->. F ,/-
T->. F ,//
T->. F ,/;
T->. T * F ,/*
T->. T * F ,/+
T->. T * F ,/-
T->. T * F ,//
T->. T * F ,/;
T->. T / F ,/*
T->. T / F ,/+
T->. T / F ,/-
T->. T / F ,//
T->. T / F ,/;
STATEMENT->RETURN . EXPRESSION ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->RETURN . EXPRESSION ; ,/}
I20:
STATEMENT->SELECTION_STATEMENT .,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->SELECTION_STATEMENT .,/}
I21:
STATEMENT_LIST->STATEMENT .,/(/digit/for/id/if/printf/scanf(/{
STATEMENT_LIST->STATEMENT .,/}
I22:
ASSIGN_EXPRESSION->. LEFT_VALUE = EXPRESSION ,/;
ITERATION_EXPRESSION->. for ( ASSIGN_EXPRESSION ; M RELATION_EXPRESSION ; M INC_EXPRESSION ) STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
ITERATION_EXPRESSION->. for ( ASSIGN_EXPRESSION ; M RELATION_EXPRESSION ; M INC_EXPRESSION ) STATEMENT ,/}
LEFT_VALUE->. id ,/=
LEFT_VALUE->. id [ EXPRESSION ] ,/=
SELECTION_STATEMENT->. if ( M RELATION_EXPRESSION ) STATEMENT M else STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
SELECTION_STATEMENT->. if ( M RELATION_EXPRESSION ) STATEMENT M else STATEMENT ,/}
STATEMENT->. ITERATION_EXPRESSION ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. ITERATION_EXPRESSION ,/}
STATEMENT->. SELECTION_STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. SELECTION_STATEMENT ,/}
STATEMENT->. ASSIGN_EXPRESSION ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. ASSIGN_EXPRESSION ; ,/}
STATEMENT->. RETURN EXPRESSION ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. RETURN EXPRESSION ; ,/}
STATEMENT->. { STATEMENT_LIST } ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. { STATEMENT_LIST } ,/}
STATEMENT->. printf ( string ) ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. printf ( string ) ; ,/}
STATEMENT->. printf ( string ,M ID_LIST ) ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. printf ( string ,M ID_LIST ) ; ,/}
STATEMENT->. scanf( string , & id ) ; ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT->. scanf( string , & id ) ; ,/}
STATEMENT_LIST->STATEMENT_LIST . STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
STATEMENT_LIST->STATEMENT_LIST . STATEMENT ,/}
PROGRAM->int id ( ) { DECLARATION_STATEMENT STATEMENT_LIST . } ,/#
PROGRAM->int id ( ) { DECLARATION_STATEMENT STATEMENT_LIST . } ,/int
I23:
ITERATION_EXPRESSION->for . ( ASSIGN_EXPRESSION ; M RELATION_EXPRESSION ; M INC_EXPRESSION ) STATEMENT ,/(/digit/for/id/if/printf/scanf(/{
ITERATION_EXPRESSION->for . ( ASSIGN_EXPRESSION ; M RELATION_EXPRESSION ; M INC_EXP