Files
archived-pecl-database-pdo-…/php_pdo_user_sql.h
Sara Golemon dcc7e0b411 Implement a generic SQL parser for userspace.
$ret = PDO_User::parseSQL($sql);
Will return a complex nested array structure containing a script navigable
representation of a given SQL statement.
No, this isn't a complete implementation of SQL99.
No, this doesn't allow multiple statements separated by a semicolon.
No, the parser generation isn't built into the Makefile.frag (yet).
2006-05-09 01:58:46 +00:00

42 lines
1.2 KiB
C

#ifndef PDO_USER_SQL_PARSER_H
#define PDO_USER_SQL_PARSER_H
#include "pdo_user_sql_parser.h"
#endif
typedef struct _php_pdo_user_sql_token {
unsigned char id;
char *token;
int token_len;
int freeme:1;
} php_pdo_user_sql_token;
typedef struct _php_pdo_user_sql_tokenizer {
char *start, *end;
} php_pdo_user_sql_tokenizer;
/* Tokens not identified by or used by the parser */
#define PU_END 0
#define PU_WHITESPACE 0xFF
#define PU_GRANT 0xFE
#define PU_REVOKE 0xFD
#define PU_IDENTIFIED 0xFC
#define PU_ALTER 0xFB
#define PU_ADD 0xFA
#define PU_VIEW 0xF9
#define PU_COLUMN 0xF8
#define PU_BEFORE 0xF7
#define PU_AFTER 0xF6
#define PU_ALL 0xF5
typedef struct _php_pdo_user_sql_token_label {
unsigned char id;
const char *label;
} php_pdo_user_sql_token_label;
extern php_pdo_user_sql_token_label php_pdo_user_sql_token_labels[];
int php_pdo_user_sql_get_token(php_pdo_user_sql_tokenizer *t, php_pdo_user_sql_token *token);
void *php_pdo_user_sql_parserAlloc(void *(*mallocProc)(size_t));
void php_pdo_user_sql_parser(void *yyp, int yymajor, php_pdo_user_sql_token yyminor, zval *return_value);
void php_pdo_user_sql_parserFree(void *p, void (*freeProc)(void*));