SQL 语句的处理过程:
词法分析,语法分析,语义分析,构造执行树,生成执行计划,计划的执行。
Mysql 并没有使用lex来实现词法分析,但是语法分析却用了yacc。
与之对比的Sqlite3数据库,SQLite的词法分析器是手工写的,语法分析器由Lemon生成。
要学习Mysql的分析器,则需要具备lex和yacc的相关知识。
(一)词法分析
在sql/lex.h中定义了MySQL关键字和函数关键字,用两个数组存储。
关键字 static SYMBOL symbols[]
函数 static SYMBOL sql_functions[]