Nullable nonterminals: (grammar | grammar_rest | item_rest | terms_rest) The starters of nonterminals: grammar -> (LANG | LBRACKET) grammar_rest -> (BLANK) production -> (LANG | LBRACKET) ordinary_production -> (LANG) non_token_production -> (LBRACKET) terms -> (LANG | STRING | TILDA) terms_rest -> (VBAR) term -> (LANG | STRING | TILDA) item_rest -> (LANG | STRING | TILDA) item -> (LANG | STRING | TILDA) The followers of nullable nonterminals: grammar -> ($END) grammar_rest -> ($END) terms_rest -> ($END | BLANK) item_rest -> ($END | BLANK | VBAR) *** Annotated grammar *** #grammar : ($END) /* empty */ | (LANG | LBRACKET) production #grammar_rest ; #grammar_rest : ($END) /* empty */ | (BLANK) BLANK #grammar ; production : (LANG) ordinary_production | (LBRACKET) non_token_production ; ordinary_production : (LANG) LANG IDENTIFIER RANG TO terms ; non_token_production : (LBRACKET) LBRACKET IDENTIFIER RBRACKET TO terms ; terms : (LANG | STRING | TILDA) term #terms_rest ; #terms_rest : ($END | BLANK) /* empty */ | (VBAR) VBAR terms ; term : (LANG | STRING | TILDA) item #item_rest ; #item_rest : ($END | BLANK | VBAR) /* empty */ | (LANG | STRING | TILDA) term ; item : (TILDA) TILDA | (LANG) LANG IDENTIFIER RANG | (STRING) STRING ;