MySQL SQL 解析器详解
1. 解析器概述
在处理 SQL 语句时,解析器起着至关重要的作用。它能够将输入的 SQL 文本转换为计算机可以理解和处理的形式。这里介绍的 SQL 解析器规模较大,但我们可以逐步剖析它。以下是解析器的部分定义代码:
%{
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
void yyerror(char *s, ...);
void emit(char *s, ...);
%}
%union {
int intval;
double floatval;
char *strval;
int subtok;
}
解析器开头包含了常见的头文件和两个函数原型, yyerror() 用于报错, emit() 用于生成逆波兰表示法(RPN)代码。 %union 定义了四个成员,分别用于存储整数值、浮点数值、字符串指针和子标记。
1.1 词法规则
词法规则用于处理输入文本中的各种字符模式,例如跳过空白字符、处理注释以及处理无效字符。以下是部分词法规则代码:
<COMMENT><<EOF>> { yyerror("unclosed comment"); }
/* everything else */
[ \t\n] /* whit
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



