mirror of
https://github.com/php/pecl-database-pdo_user.git
synced 2026-03-24 06:52:07 +01:00
$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).
42 lines
1.2 KiB
C
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*));
|
|
|