自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 SQLite源代码分析----------代码生成器④

2021SC@SDUSC目录OP_NewRowidOP_NullOP_InsertOP_CloseOP_MustBeIntOP_NotExistsOP_RowidOP_IsNull附源代码OP_NewRowidOP_NewRowid的内容:case OP_NewRowid : { i64 v=0; int res=0; VdbeCursor *pC= p->apCsr[pOp->p1];; sqlite3BtreeLast(pC->pCursor

2021-12-19 21:10:08 254

原创 SQLite源代码分析----------代码生成器③

2021SC@SDUSC目录OP_GotoOP_ReadCookieOP_IfOP_IntegerOP_SetCookieOP_IntegerOP_CreateTableOP_OpenWrite附源代码OP_GotoOP_Goto的内容:case OP_Goto: { pc = pOp->p2 - 1;}OP_Goto操作符就是跳转到p2所指向的操作码,这里是pc为0,经过for循环后pc为1。下一个要执行的是 aOp[1] OP_ReadCookie。OP_ReadCooki

2021-12-12 22:10:29 491

原创 SQLite源代码分析----------代码生成器②

2021SC@SDUSC这里写目录标题VDBE核心main函数OP_InitOP_TransactionOP_TableLock附录:VDBE核心        vdbe.c文件中存放着VDBE的执行方法(sqlite3VdbeExec),这是VDBE的核心,也是SQLite的核心,SQL解析器生成一个程序然后由VDBE执行SQL语句的工作。 下面是sqlite3VdbeExec函数的说明: int sqlite3

2021-12-05 19:10:33 434

原创 SQLite源代码分析----------代码生成器①

2021SC@SDUSC目录概述字节码引擎(Bytecode Engine)vdbeInt.h代码分析一些方法和结构体的条件编译和预处理几个重要结构体的分析附(源代码):概述        SQLite的工作方式是将SQL语句转换为字节码,然后在虚拟机中运行该字节码。本节描述字节码引擎如何工作。字节码引擎(Bytecode Engine)      &nbsp

2021-11-28 21:18:45 828

原创 SQLite源代码分析----------分析器④

目录特殊指令%code%default_type%destructor%token_prefix%include%extra_argument%parse_accept%stack_overflow%name%token_type与%type错误处理特殊指令        Lemon的输入语法由语法规则和特殊指令组成。我们已经描述了所有的语法规则,现在我们将讨论特殊的指令。     &nbsp

2021-11-21 20:54:15 315

原创 SQLite源代码分析----------分析器③

目录Lemon输入文件语法终点站和非终点站语法规则优先规则Lemon输入文件语法        Lemon语法规范文件的主要目的是为解析器定义语法。但是,输入文件还指定Lemon完成其工作所需的附加信息。使用Lemon的大部分工作是编写一个适当的语法文件。        Lemon的语法文件在很大程度上是一种自由格式。它没有像yacc或bison那样的分区。任何声

2021-11-14 20:32:17 332

原创 SQLite源代码分析----------分析器②

2021SC@SDUSC文章目录导言在堆栈上分配Parse对象接口摘要构建可执行的“lemon”或“lemon.exe”导言       书接SQLite源代码分析----------分析器①,本节介绍lemon的相关知识。在堆栈上分配Parse对象       如果所有对Parse()接口的调用都是从内部进行的%code,则可以从堆栈而不是从堆中分配解析对象。这些步骤如下:

2021-11-07 19:27:08 149

原创 SQLite源代码分析----------分析器①

2021SC@SDUSC目录简介解析器接口附源代码简介       SQLite的SQL语言解析器是使用一个名为“Lemon”的代码生成器程序生成的。Lemon程序读取输入语言的语法,并发出C代码来实现该语言的解析器。       Lemon是一个LALR(1)文法分析器生成工具,它的操作类似于更熟悉的工具。yacc和bison,但是Lemon增加了重要的改进,包括:&nbsp

2021-10-31 17:56:22 768 1

原创 SQLite源代码分析----------分词器③

2021SC@SDUSC目录简介源码分析解析简介       本文我们介绍分词器部分的最后一个内容fts3_expr.c;fts3_expr.c这个文件主要是实现查询字符串功能(MATCH函数)。MATCH运算符用在全文检索中。例如这两句:SELECT title, body FROM pages WHERE pages MATCH 'world';SELECT title, body FROM pages WHERE title MAT

2021-10-24 18:31:55 209

原创 SQLite源代码分析----------分词器②

2021SC@SDUSC文章目录简介代码分析简介       承接上文SQLite源代码分析----------分词器①,接下来我们介绍Tokenizer的另外一个模块:Porter_Tokenizer;       除了“simple”分词器之外,FTS源代码还提供了一个使用波特词干算法(porter stemming algorithm)的分词器。此分词器使用相同的规则将输入文

2021-10-17 20:03:03 493

原创 SQLite源代码分析----------分词器①

2021SC@SDUSC文章目录Tokenizer功能介绍代码分析自定义分词器Tokenizer功能介绍       当执行一个包含SQL语句的字符串时,接口程序要把这个字符串传递给tokenizer。Tokenizer的任务是把原有字符串分成一个个标示符,并把这些标示符传递给剖析器。       当向SQLite提交SQL程序时,第一步是将源文本拆分为“tokens”。一个“to

2021-10-10 19:33:01 447

原创 SQLite源代码分析——综述

本文是对SQLite相关内容的介绍·,以及为后面对SQLite源代码分析做出组内分工。

2021-09-30 19:37:11 399

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除