DBP's parser is very poor.
Unfortunately DBP appears to use the "cheap hack" way of doing things, so Lee has to conceive every possible case and code for it.
Blitz and Delphi on the other hand seem to work like this:
FOR identifier=expression TO expression
NEXT
Using spaces and = signs as delimiters, it can work out which part of the user's code fits into the above "template".
It then takes a statement (eg iCount), and checks to see if it is a valid identifier or expression or whatever it is supposed to be or not. If the identifier is a keyword, or a function call etc, this returns false and an error message is given. This check applies to all statements, and means that if there is a bug, it can be corrected very easily. (in template code: global identifier=expression for example)
Parsers are nightmarishly difficult to write, but DBP's one needs a complete, better organised recode. At the moment it keeps reporting the wrong line an awful lot of the time for syntax errors, and minor things, such as the spaces issue I mentioned above with constant declarations are everywhere.