| package ANTLR::Runtime::TokenSource; |
| |
| use Moose::Role; |
| |
| # Return a Token object from your input stream (usually a CharStream). |
| # Do not fail/return upon lexing error; keep chewing on the characters |
| # until you get a good one; errors are not passed through to the parser. |
| requires 'next_token'; |
| |
| # Where are you getting tokens from? normally the implication will simply |
| # ask lexers input stream. |
| requires 'get_source_name'; |
| |
| no Moose::Role; |
| 1; |
| __END__ |
| |
| =head1 NAME |
| |
| ANTLR::Runtime::TokenSource |
| |
| =head1 DESCRIPTION |
| |
| A source of tokens must provide a sequence of tokens via nextToken() |
| and also must reveal it's source of characters; CommonToken's text is |
| computed from a CharStream; it only store indices into the char stream. |
| |
| Errors from the lexer are never passed to the parser. Either you want |
| to keep going or you do not upon token recognition error. If you do not |
| want to continue lexing then you do not want to continue parsing. Just |
| throw an exception not under RecognitionException and Java will naturally |
| toss you all the way out of the recognizers. If you want to continue |
| lexing then you should not throw an exception to the parser--it has already |
| requested a token. Keep lexing until you get a valid one. Just report |
| errors and keep going, looking for a valid token. |