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"

#