yacc

nmake中文指南(转)

一个人想着一个人 提交于 2020-08-11 02:12:57
概述 —— 什么是makefile?或许很多Winodws的 程序员都不知道这个东西,因为那些 Windows的ID E都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要 懂。这就好像现在有这么多 的HTML的编辑器,但如果你想成为一个专业人士,你还是要了 解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile 了,会不会 写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile关系到了整个工程的编译规 则。一个工程中的源文件不计数,其按类型、 功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要 先编译,哪些文件需 要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作, 因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile 带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工 程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是 一个解释mak efile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make, Visual C++的nmake,Linux下GNU的make。可见

Mysql 架构及执行流程

☆樱花仙子☆ 提交于 2020-08-06 08:53:28
1. mysql 架构 1.1 简化版架构 客户端+ 核心服务 + 存储引擎 ⬇︎ ⬆︎(客户端)⬇︎⬆︎ =====【连接/线程处理】====} ⬇︎ ⬇︎ 【查询缓存】 ⬅︎ 【解析器】 } 【核心服务】 ⬇︎ ========【优化器】=======} ⬇︎⬆︎ =======【存储引擎】======= 1.2 详细版架构 MySql 逻辑架构图 | -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | | 客户端 | | 「 Connectors : PHP 、 JDBC 、 Python 、navicat」 | | -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ⬇︎ ⬆︎ | === === === === Mysql 服务端 === === === === === === === === === === === === === === === === === === === === === == | | -- -- -- -- -- -- -- -- -- -- -- -- -- -- - | | Connection Pool | | -- -- -- -- -- -- -- -- -- -- --

mysql之存储引擎 体系结构 查询机制(二)

独自空忆成欢 提交于 2020-08-05 23:21:51
你讲学到 一 各大存储引擎介绍 csv存储引擎 archive存储引擎 memory 存储引擎 Myisam Innodb 对比 二 理解mysql体系结构 三 基于查询执行路径理解查询机制 1. mysql 客户端 / 服务端通信 2 查询缓存 不会缓存的情况: 查询缓存适用场景: 3 查询优化处理 执行计划 image-20200627213148005 id: select_type table type possible_keys key rows filtered extra 4 查询执行引擎 5 返回客户端 慢查询日志配置 慢查询日志分析: 慢查询日志分析工具 一 各大存储引擎介绍 存储引擎介绍: 1,插拔式的插件方式 ,插拔式的插件方式 2,存储引擎是指定在表之上的,即一个库中的每一个表都可 ,存储引擎是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎。 3,不管表采用什么样的存储引擎,都会在数据区,产生对应 ,不管表采用什么样的存储引擎,都会在数据区,产生对应的一个 的一个frm文件(表结构定义描述文件) csv存储引擎 数据存储以 数据存储以CSV文件 文件 特点:不能定义没有索引、列定义必须为NOT NULL、不能设置自增列 不适用大表或者数据的在线处理 CSV数据的存储用,隔开,可直接编辑CSV文件进行数据的编排 数据安全性低 注:编辑之后

Bison : Line number included in the error messages

北慕城南 提交于 2020-05-22 07:11:44
问题 OK, so I suppose my question is quite self-explanatory. I'm currently building a parser in Bison, and I want to make error reporting somewhat better. Currently, I've set %define parse.error verbose (which actually gives messages like syntax error, unexpected ***********************, expecting ******************** . All I want is to add some more information in the error messages, e.g. line number (in input/file/etc) My current yyerror (well nothing... unusual... lol) : void yyerror(const char

通过实例深入理解lec和yacc

佐手、 提交于 2020-03-29 19:04:51
本框架是一个lex/yacc完整的示例,包括详细的注释,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行。大部分框架已经搭好了,你只要稍加扩展就可以成为一个计算器之类的程序,用于《编译原理》的课程设计,或者对照理解其它lex/yacc项目的代码。 本例子虽小却演示了lex/yacc程序最重要和常用的特征: * lex/yacc程序组成结构、文件格式。 * 如何在lex/yacc中使用C++和STL库,用extern "C"声明那些lex/yacc生成的、要链接的C函数,如yylex(), yywrap(), yyerror()。 * 重定义YYSTYPE/yylval为复杂类型。 * lex里多状态的定义和使用,用BEGIN宏在初始态和其它状态间切换。 * lex里正则表达式的定义、识别方式。 * lex里用yylval向yacc返回数据。 * yacc里用%token<>方式声明yacc记号。 * yacc里用%type<>方式声明非终结符的类型。 * 在yacc嵌入的C代码动作里,对记号属性($1, $2等)、和非终结符属性($$)的正确引用方法。 * 对yyin/yyout重赋值,以改变yacc默认的输入/输出目标。 本例子功能是,对当前目录下的file.txt文件,解析出其中的标识符、数字、其它符号,显示在屏幕上

Windows下lex 与 yacc的使用(2)

两盒软妹~` 提交于 2020-03-20 03:09:49
Windows下lex 与 yacc的使用 之一个简单的小例子 题目要求:写一个小的程序。该程序复制一个文件,并将文件中的每个非空的空白字符序列替换为单个空格。 1.首先新建一个文本文档(在flex文件夹下),写好代码后将文件的扩展名改为“**.l”或者“**.lex”,如下所示: 2.然后运行“cmd”,进入DOS界面,过程如下: 3.这时在flex文件夹下就会生成一个“lex.yy.c”的文件,将它用VC 6.0 编译一下。 这时在flex文件夹下就变成了这个样子: 4,打开Debug文件夹,新建“q.txt”,内容如下: 5.然后DOS界面操作如下: 结果如下: 最后,要想得到正确结果,首先代码要正确,哈哈! 前期准备请点击这个链接:http://blog.csdn.net/tianqingdezhuanlan/article/details/44861759 来源: https://www.cnblogs.com/MouTou/p/5574844.html

在Visual Studio2008中搭建lex和yacc调试环境

这一生的挚爱 提交于 2020-03-12 04:20:57
本文为原创,部分bat代码来自熊春雷前辈的博文: http://blog.csdn.net/pandaxcl/archive/2006/07/04/873898.aspx 为什么要使用lex和yacc 最近的项目需要写一个Language Service,于是不可避免的涉足到了lex和yacc。lex和yacc原本是UNIX系统下的两个工具,用于编写涉及文本分析的程序。在Linux下面有两个GNU的工具:flex和bison,用来代替原始的lex和yacc。熊春雷前辈在上面的博文中介绍了如何获取flex和bison的Win32版,和如何在Win32环境下配置这两个工具,其中还要用到Windows版本的GCC,还是挺麻烦的。 为什么要在Visual Studio2008中调试lex和yacc程序 正如上面所说的配置环境和使用GCC对于大多数Windows程序员来说是挺麻烦的,事实上我们完全可以使用Visual Studio带的C/C++编译器。使用Visual Studio2008的强大编辑环境,能够轻松的调试你的lex和yacc程序。 配置思路 事实上,上面提到的flex和bison分别将*.l和*.y编译成C语言代码,然后我们用Visual Studio带的C/C++编译器就可以编译这个C代码,生成可执行文件。(顺便提一下,在开发Language Service时

Problems with PLY LEX and YACC

寵の児 提交于 2020-03-01 03:59:30
问题 I am trying to run the first part of a simple example of the PLY but I encounter a strange error. When I run the following code, it gives me an error regarding lex.lex() Anyone knows what the problem is? import ply.lex as lex tokens = [ 'NAME','NUMBER','PLUS','MINUS','TIMES', 'DIVIDE', 'EQUALS' ] t_ignore = '\t' t_PLUS = r'\+' t_MINUS = r'-' t_TIMES = r'\*' t_DIVIDE = r'/' t_EQUALS = r'=' t_NAME = r'[a-zA-Z_][a-zA-Z0-9_]*' def t_NUMBER(t): r'\d+' t.value = int(t.value) return t lex.lex() #

Removing shift/reduce conflict on optional else block

时光总嘲笑我的痴心妄想 提交于 2020-02-08 07:22:16
问题 I'm in the process of defining a grammar with Bison and I stumbled upon a shift/reduce conflict I'd like to eliminate. The conflict is caused by a rule that aims to match if/else statements: state 17 13 Stmt: IfBlock . OptionalElseBlock ELSE shift, and go to state 42 ELSE [reduce using rule 16 (OptionalElseBlock)] $default reduce using rule 16 (OptionalElseBlock) OptionalElseBlock go to state 43 The OptionalElseBlock was defined as follows: 16 OptionalElseBlock: /* empty */ 17 | ELSE Stmt

Removing shift/reduce conflict on optional else block

那年仲夏 提交于 2020-02-08 07:22:05
问题 I'm in the process of defining a grammar with Bison and I stumbled upon a shift/reduce conflict I'd like to eliminate. The conflict is caused by a rule that aims to match if/else statements: state 17 13 Stmt: IfBlock . OptionalElseBlock ELSE shift, and go to state 42 ELSE [reduce using rule 16 (OptionalElseBlock)] $default reduce using rule 16 (OptionalElseBlock) OptionalElseBlock go to state 43 The OptionalElseBlock was defined as follows: 16 OptionalElseBlock: /* empty */ 17 | ELSE Stmt