This string causes "malformed number" error: print(64..'KB') It seems that lexer does not know that two dots are never contained in numerical constant. IMHO, correct parsing of numerical constant should stop before concatenation operator.