📄 parser.y
字号:
%{#include "mdbsql.h"MdbSQL *g_sql;%}%union { char *name; double dval; int ival;}%token NAME PATH NUMBER STRING%token SELECT FROM WHERE CONNECT TO LIST TABLES WHERE AND%%query: SELECT column_list FROM table where_clause { mdb_sql_select(g_sql); } | CONNECT TO database { mdb_sql_open(g_sql, $3.name); free($3.name); } | LIST TABLES { mdb_sql_listtables(g_sql); } ;where_clause: /* empty */ | WHERE sarg_list ;sarg_list: sarg | sarg AND sarg_list ;sarg: NAME operator constant { mdb_sql_add_sarg(g_sql, $1.name, $2.ival, $3.name); free($1.name); free($3.name); } | constant operator NAME { mdb_sql_add_sarg(g_sql, $3.name, $2.ival, $1.name); free($1.name); free($3.name); } ;operator: '=' { $$.ival = MDB_EQUAL; } | '>' { $$.ival = MDB_GT; } | '<' { $$.ival = MDB_LT; } ;constant: NUMBER { $$.name = $1.name; } | STRING { $$.name = $1.name; } ;database: PATH | NAME table: NAME { mdb_sql_add_table(g_sql, $1.name); free($1.name); } ;column_list: '*' { mdb_sql_all_columns(g_sql); } | column | column ',' column_list ; column: NAME { mdb_sql_add_column(g_sql, $1.name); free($1.name); } ;%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -