The lexer is getting confused with the text array[1..3], presumably because it detects 1. as a float, and then eats that and gets confused on what . means after that. array[1 .. 3] works. Add a check in the floating point parser to make sure .. is recognized as a priority token over associating with the decimal.