I've mentioned before on the list that a bit more context in parse error 
messages would be helpful in our application.  I hacked something quick that 
seems to work for us, posting it in case anyone else finds it useful or would 
like to improve on it.

****************************************************************************
/*
** The following code executes when a syntax error first occurs.
*/
static void yy_syntax_error(
  yyParser *yypParser,           /* The parser */
  int yymajor,                   /* The major type of the error token */
  YYMINORTYPE yyminor            /* The minor type of the error token */
){
  sqlite3ParserARG_FETCH;
#define TOKEN (yyminor.yy0)

  Token msg;
  msg.z = pParse->zTail;
  msg.n = pParse->sLastToken.z - pParse->zTail + pParse->sLastToken.n;
  if(msg.n > 36)
  {
     msg.z = msg.z + msg.n - 36;
     msg.n = 36;
  }
  assert( msg.z[0] );
  sqlite3ErrorMsg(pParse, "near \"%T<--here\": syntax error", &msg);

  UNUSED_PARAMETER(yymajor);  /* Silence some compiler warnings */
  assert( TOKEN.z[0] );  /* The tokenizer always gives us a token */
  
  /*sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &TOKEN); */
  sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument 
variable */
}

*************************************************************************

----------------------------------------------------------------------
This message, and any attachments, is for the intended recipient(s) only, may 
contain information that is privileged, confidential and/or proprietary and 
subject to important terms and conditions available at 
http://www.bankofamerica.com/emaildisclaimer.   If you are not the intended 
recipient, please delete this message.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to