On Dec 22, 2009, at 6:06 PM, Benjamin Peterson wrote:
> I'm using lemon to write a parser for a little language I'm writing.
> I'm wondering how I indicate to lemon that an error has occurred in
> processing and an exit is needed. For example, if I have:
>
> stmt(A) ::= NAME(B). { A = malloc(sizeof(stmt)); A->name = B; }
>
> If malloc returns NULL, what should I do to escape the parser?
Configure the %extra_argument to be a pointer to a structure that
holds the state of your parser.
%extra_argument {Parser *pParser}
The pParser pointer is directly accessible from within your actions.
So set a flag in that structure that tell the tokenizer to stop
sending tokens and abort with an error.
stmt(A) ::= NAME(B). {
A = malloc(sizeof(stmt));
if( A==0 ){
pParser->errFlag = 1;
}else{
A->name = B;
}
}
>
> --
> Regards,
> Benjamin
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
D. Richard Hipp
[email protected]
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users