What is expected?
CRuby uses Bison to generate its parser. The parser is called LALR(1) parser in which we can determine what should do (shift/reduce/accept/error) next based on current state and next input token.
But current CRuby does not have "expected_tokens" method because it is more difficult than expected. Then I will talk what is difficulty and how to implement it.