Matthew Flatt wrote at 08/01/2011 08:40 PM:
At Mon, 01 Aug 2011 18:13:11 -0600, Jon Rafkind wrote:
How do I deal with partial lexemes when using the color:text colorer? It
seems that if my lexer cannot produce a valid token then it will throw
an error and the color thread will keep calling `get-token' in a busy loop.

Speaking generally of parsing for editors here, not of the DrRacket syntax-colorer specifically...

You can have the notion of an "error" token, and, if all other rules for matching a token fail, have a final rule (or rules) that consume your error token. You can color the error token bright red boldface or similar. Like I think Matthew said, you probably want to recover, not abort.

For your error token, you should try to consume a chunk of input such that the following text is likely to be a valid token that was likely intended. This is more art than science, and depends very much on the language. For your first attempt, you might try to just consume one character followed by any non-whitespace-or-punctuation. You can also be smarter about things like unterminated string literals and other patterns of characters (e.g., "#" in Racket).
--
http://www.neilvandyke.org/
_________________________________________________
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/users

Reply via email to