std.d.lexer requirements

Christophe Travert travert at phare.normalesup.org
Tue Aug 7 14:49:44 PDT 2012


Jacob Carlborg , dans le message (digitalmars.D:174421), a écrit :
> On 2012-08-07 12:06, Jonathan M Davis wrote:
> 
>> It's easier to see where in the range of tokens the errors occur. A delegate
>> is disconnected from the point where the range is being consumed, whereas if
>> tokens are used for errors, then the function consuming the range can see
>> exactly where in the range of tokens the error is (and potentially handle it
>> differently based on that information).
> 
> Just pass the same token to the delegate that you would have returned 
> otherwise?

That's what I would do. If you have to define a way to return error 
information as a token, better use it again when using delegates.
Personnaly, I would have the delegate be:
int delegate(Token);
A return value of 0 means: continue parsing. Any other value is an 
error number and stops the parser (makes it empty). The error number 
can be retrieved from the empty parser with a specific function.
If you want to throw, just throw in the delegate. No need to return a 
specific value for that.

But a bool return value may be enough too...


More information about the Digitalmars-d mailing list