program # decl_list # "EMPTY" # "EMPTY" decl_list # decl decl_list # "EMPTY" # "EMPTY" decl_list # "EMPTY" # "EMPTY" # "EMPTY" decl # typespecifier globalobjspecifier # "EMPTY" # "EMPTY" typespecifier # type 30 # "EMPTY" # "EMPTY" type # void # "EMPTY" # "EMPTY" type # int # "EMPTY" # "EMPTY" globalobjspecifier # ; # "EMPTY" # "EMPTY" globalobjspecifier # = initspecifier ; # "EMPTY" # "EMPTY" globalobjspecifier # subroutinespecifier # "EMPTY" # "EMPTY" globalobjspecifier # arrayspecifier ; # "EMPTY" # "EMPTY" initspecifier # scalarspecifier # "EMPTY" # "EMPTY" arrayspecifier # [ arraysize ] initlist # "EMPTY" # "EMPTY" subroutinespecifier # ( formalparameterlist ) subrbody # "EMPTY" # "EMPTY" scalarspecifier # constantexpr # "EMPTY" # "EMPTY" scalarspecifier # "EMPTY" # "EMPTY" # "EMPTY" arraysize # constantexpr # "EMPTY" # "EMPTY" arraysize # "EMPTY" # "EMPTY" # "EMPTY" initlist # = { constantexprlist } # "EMPTY" # "EMPTY" initlist # "EMPTY" # "EMPTY" # "EMPTY" formalparameterlist # formalparameter formalparametertail # "EMPTY" # "EMPTY" formalparameter # int 30 parameterarray # "EMPTY" # "EMPTY" formalparameter # "EMPTY" # "EMPTY" # "EMPTY" parameterarray # [ ] # "EMPTY" # "EMPTY" parameterarray # "EMPTY" # "EMPTY" # "EMPTY" formalparametertail # , formalparameterlist # "EMPTY" # "EMPTY" formalparametertail # "EMPTY" # "EMPTY" # "EMPTY" subrbody # { localdecllist stmtlist } # "EMPTY" # "EMPTY" subrbody # ; # "EMPTY" # "EMPTY" localdecllist # localdecl localdecllisttail # "EMPTY" # "EMPTY" localdecllist # "EMPTY" # "EMPTY" # "EMPTY" localdecllisttail # localdecl localdecllist # "EMPTY" # "EMPTY" localdecllisttail # "EMPTY" # "EMPTY" # "EMPTY" localdecl # typespecifier localobjspecifier # "EMPTY" # "EMPTY" localobjspecifier # arrayspecifier ; # "EMPTY" # "EMPTY" localobjspecifier # scalarspecifier ; # "EMPTY" # "EMPTY" constantexprlist # constantexpr constantexprlisttail # "EMPTY" # "EMPTY" constantexprlist # "EMPTY" # "EMPTY" # "EMPTY" constantexprlisttail # , constantexprlist # "EMPTY" # "EMPTY" constantexprlisttail # "EMPTY" # "EMPTY" # "EMPTY" constantexpr # constantcond # "EMPTY" # "EMPTY" constantcond # constantmsk constantcond1 # "EMPTY" # "EMPTY" constantcond1 # ? constantmsk : constantmsk # "EMPTY" # "EMPTY" constantcond1 # "EMPTY" # "EMPTY" # "EMPTY" constantmsk # unop constantcmp constantmsk1 # "EMPTY" # "EMPTY" unop # ! # "EMPTY" # "EMPTY" unop # - # "EMPTY" # "EMPTY" unop # "EMPTY" # "EMPTY" # "EMPTY" constantmsk1 # | constantcmp # "EMPTY" # "EMPTY" constantmsk1 # & constantcmp # "EMPTY" # "EMPTY" constantmsk1 # "EMPTY" # "EMPTY" # "EMPTY" constantcmp # constantbp constantcmp1 # "EMPTY" # "EMPTY" constantcmp1 # >= constantbp # "EMPTY" # "EMPTY" constantcmp1 # <= constantbp # "EMPTY" # "EMPTY" constantcmp1 # == constantbp # "EMPTY" # "EMPTY" constantcmp1 # != constantbp # "EMPTY" # "EMPTY" constantcmp1 # > constantbp # "EMPTY" # "EMPTY" constantcmp1 # < constantbp # "EMPTY" # "EMPTY" constantcmp1 # "EMPTY" # "EMPTY" # "EMPTY" constantbp # constantsum constantbp1 # "EMPTY" # "EMPTY" constantbp1 # << constantsum # "EMPTY" # "EMPTY" constantbp1 # >> constantsum # "EMPTY" # "EMPTY" constantbp1 # "EMPTY" # "EMPTY" # "EMPTY" constantsum # constantterm constantsum1 # "EMPTY" # "EMPTY" constantsum1 # + constantterm1 constantsum1 # "EMPTY" # "EMPTY" constantsum1 # - constantterm1 constantsum1 # "EMPTY" # "EMPTY" constantsum1 # "EMPTY" # "EMPTY" # "EMPTY" constantterm # constantfact constantterm1 # "EMPTY" # "EMPTY" constantterm1 # * constantfact constantterm1 # "EMPTY" # "EMPTY" constantterm1 # / constantfact constantterm1 # "EMPTY" # "EMPTY" constantterm1 # "EMPTY" # "EMPTY" # "EMPTY" constantfact # constantpri # "EMPTY" # "EMPTY" constantpri # & 30 # "EMPTY" # "EMPTY" constantpri # 28 # "EMPTY" # "EMPTY" constantpri # 29 # "EMPTY" # "EMPTY" constantpri # ( constantexpr ) # "EMPTY" # "EMPTY" rhs # expr # "EMPTY" # "EMPTY" expr # primary # "EMPTY" # "EMPTY" primary # cond # "EMPTY" # "EMPTY" actualparamlist # expr actualparamlisttail # "EMPTY" # "EMPTY" actualparamlist # "EMPTY" # "EMPTY" # "EMPTY" actualparamlisttail # , actualparamlist # "EMPTY" # "EMPTY" actualparamlisttail # "EMPTY" # "EMPTY" # "EMPTY" lprimary # 28 # "EMPTY" # "EMPTY" lprimary # 29 # "EMPTY" # "EMPTY" lprimary # 30 lprimarysuffix # "EMPTY" # "EMPTY" lprimary # ( expr ) lprimarysuffix # "EMPTY" # "EMPTY" lprimarysuffix # ( actualparamlist ) # "EMPTY" # "EMPTY" lprimarysuffix # [ expr ] # "EMPTY" # "EMPTY" lprimarysuffix # "EMPTY" # "EMPTY" # "EMPTY" lhs # 30 # "EMPTY" # "EMPTY" lhs # lprimary [ expr ] # "EMPTY" # "EMPTY" lhs # * expr # "EMPTY" # "EMPTY" lhs # ( lhs ) # "EMPTY" # "EMPTY" cond # msk cond1 # "EMPTY" # "EMPTY" cond1 # ? msk : msk # "EMPTY" # "EMPTY" cond1 # = msk # "EMPTY" # "EMPTY" cond1 # "EMPTY" # "EMPTY" # "EMPTY" msk # ! cmp # "EMPTY" # "EMPTY" msk # - cmp # "EMPTY" # "EMPTY" msk # * cmp # "EMPTY" # "EMPTY" msk # & cmp # "EMPTY" # "EMPTY" msk # cmp msk1 # "EMPTY" # "EMPTY" msk1 # | cmp # "EMPTY" # "EMPTY" msk1 # & cmp # "EMPTY" # "EMPTY" msk1 # "EMPTY" # "EMPTY" # "EMPTY" cmp # bp cmp1 # "EMPTY" # "EMPTY" cmp1 # >= bp # "EMPTY" # "EMPTY" cmp1 # <= bp # "EMPTY" # "EMPTY" cmp1 # != bp # "EMPTY" # "EMPTY" cmp1 # == bp # "EMPTY" # "EMPTY" cmp1 # > bp # "EMPTY" # "EMPTY" cmp1 # < bp # "EMPTY" # "EMPTY" cmp1 # "EMPTY" # "EMPTY" # "EMPTY" bp # s bp1 # "EMPTY" # "EMPTY" bp1 # << s # "EMPTY" # "EMPTY" bp1 # >> s # "EMPTY" # "EMPTY" bp1 # "EMPTY" # "EMPTY" # "EMPTY" s # t s1 # "EMPTY" # "EMPTY" s1 # + t s1 # "EMPTY" # "EMPTY" s1 # - t s1 # "EMPTY" # "EMPTY" s1 # "EMPTY" # "EMPTY" # "EMPTY" t # f t1 # "EMPTY" # "EMPTY" t1 # * f s1 # "EMPTY" # "EMPTY" t1 # / f s1 # "EMPTY" # "EMPTY" t1 # "EMPTY" # "EMPTY" # "EMPTY" f # lprimary # "EMPTY" # "EMPTY" stmtlist # stmt stmtlisttail # "EMPTY" # "EMPTY" stmtlisttail # ; stmtlist # "EMPTY" # "EMPTY" stmtlisttail # "EMPTY" # "EMPTY" # "EMPTY" compoundstmt # { stmtlist } # "EMPTY" # "EMPTY" stmt # switchstmt # "EMPTY" # "EMPTY" stmt # forstmt # "EMPTY" # "EMPTY" stmt # ifstmt # "EMPTY" # "EMPTY" stmt # returnstmt # "EMPTY" # "EMPTY" stmt # dostmt # "EMPTY" # "EMPTY" stmt # whilestmt # "EMPTY" # "EMPTY" stmt # breakstmt # "EMPTY" # "EMPTY" stmt # compoundstmt # "EMPTY" # "EMPTY" stmt # expr # "EMPTY" # "EMPTY" stmt # "EMPTY" # "EMPTY" # "EMPTY" switchstmt # switch expr { casesequence } # "EMPTY" # "EMPTY" forstmt # for ( startlist ; forexpr ; iterlist ) stmt # "EMPTY" # "EMPTY" ifstmt # if expr stmt elseclause # "EMPTY" # "EMPTY" elseclause # else stmt # "EMPTY" # "EMPTY" elseclause # "EMPTY" # "EMPTY" # "EMPTY" returnstmt # return returnvalue # "EMPTY" # "EMPTY" returnvalue # expr # "EMPTY" # "EMPTY" returnvalue # "EMPTY" # "EMPTY" # "EMPTY" dostmt # do stmt while expr # "EMPTY" # "EMPTY" whilestmt # while expr do stmt # "EMPTY" # "EMPTY" breakstmt # break # "EMPTY" # "EMPTY" casesequence # caseclause casesequencetail # "EMPTY" # "EMPTY" casesequencetail # caseclause casesequence # "EMPTY" # "EMPTY" casesequencetail # "EMPTY" # "EMPTY" # "EMPTY" caseclause # caseprefixseq stmtlist # "EMPTY" # "EMPTY" caseprefixseq # caseprefix caseprefixseqtail # "EMPTY" # "EMPTY" caseprefixseqtail # caseprefix caseprefixseq # "EMPTY" # "EMPTY" caseprefixseqtail # "EMPTY" # "EMPTY" # "EMPTY" caseprefix # case constantexpr : # "EMPTY" # "EMPTY" caseprefix # default : # "EMPTY" # "EMPTY" startlist # expr startlisttail # "EMPTY" # "EMPTY" startlist # "EMPTY" # "EMPTY" # "EMPTY" startlisttail # , startlist # "EMPTY" # "EMPTY" startlisttail # "EMPTY" # "EMPTY" # "EMPTY" iterlist # expr iterlisttail # "EMPTY" # "EMPTY" iterlist # "EMPTY" # "EMPTY" # "EMPTY" iterlisttail # , iterlist # "EMPTY" # "EMPTY" iterlisttail # "EMPTY" # "EMPTY" # "EMPTY" forexpr # expr # "EMPTY" # "EMPTY" forexpr # "EMPTY" # "EMPTY" # "EMPTY" subrinvocation # primary ( actualparamlist ) # "EMPTY" # "EMPTY" #