Here we go the 2nd topic about designing a script language: the Translator.the BNF syntaxthe powerful Yacc and Lex utilities lexical parsing:syntax parsing: Yac&Lex sampleCompilersPrinciplesTechniquesT...
分类:
其他好文 时间:
2016-08-18 17:19:02
阅读次数:
141
正则表达式:
正则表达式是当前主流的字符串识别机制之一,另外一种是文法识别。
和文法相比,正则表达式具有构造相对简单,运行效率较高的特点,所以一般的字符串识别会使用正则表达式。
正则表达式有三种主要运算符是我们在构造词法分析器生成器LEX需要用到的:*、|、连接
*代表闭包运算,假如有一个字符串a,那么a*就代表由任意个字符串a组合成的字符串,包括空串(0个字符串a组合成的字符串),...
分类:
编程语言 时间:
2016-07-10 19:15:29
阅读次数:
1695
Yacc 与 Lex 快速入门 Lex 与 Yacc 介绍 Yacc 与 Lex 快速入门 Lex 与 Yacc 介绍 Lex 和 Yacc 是 UNIX 两个非常重要的、功能强大的工具。事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 FORTRAN 和 C 的编译器如同儿 ...
分类:
其他好文 时间:
2016-07-06 21:47:09
阅读次数:
246
config.h
/***** *********/
#ifndef _CONFIG_H_
#define _CONFIG_H_
#include
#include
#include
#include
//#define LEX_OUTPUT
#define MAXSTRLEN 1024
#define UNDEFINE_DATA -1
// 单词类型
c...
分类:
其他好文 时间:
2016-06-06 01:12:28
阅读次数:
281
词法分析的理论知识不少,包括了正规式、正规文法、它们之间的转换以及确定的有穷自动机和不确定的有穷自动机等等。。。 要自己写一个词法分析器也不会很难,只要给出了最简的有穷自动机,就能很方便实现了,用if、switch-case来写一通所谓的状态转换就可以,我近期会写一个简单的词法分析程序来作为例子。。 ...
分类:
其他好文 时间:
2016-05-30 19:48:39
阅读次数:
165
github 项目地址
草木瓜
准备工作
文法分析用Flex(Lex):将数据分隔成一个个的标记token (标示符identifiers,关键字keywords,数字numbers, 中括号brackets, 大括号braces, 等等etc.)
语法分析用Bison(Yacc): 在分析标记的时候生成抽象语法树. Bison 将会做掉几乎所有的这些工作, 我们定义好我们的...
分类:
其他好文 时间:
2016-05-23 15:09:32
阅读次数:
387
修改后的实际应用全代码 草木瓜(七) 精读 源代码有百度云存盘
复杂的逻辑判断简化成程序判断语句,可便于应用的扩展和维护,也极大增强了代码的可读性。
我们对整体文件划分如下:
tree.l
tree.y
parser.h #内部编译使用的头文件
parser.c #内部编译的主函数
compile.h #内外部交互的头文件
main.c #外部程序
修改说...
分类:
其他好文 时间:
2016-05-23 15:07:36
阅读次数:
273
boa服务器make错误 boa服务器make错误 boa服务器make错误 编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用L ...
分类:
其他好文 时间:
2016-05-13 10:08:09
阅读次数:
169
简介本章依然专注于使用yacc实现计算器,主要的特点是给算术运算增加变量支持。模块拆分它主要分为3个模块
1. lex词法分析器
2. yacc语法分析器
3. 符号表功能描述1. lex词法分析器正规式的定义如下:delim [ \t]
ws {delim}+
letter [a-zA-Z]
digit [0-9]
id {letter}({letter}|{digit})*
/...
分类:
其他好文 时间:
2016-05-07 09:52:10
阅读次数:
252
lex和yacc的使用很简单,但环境配置却是各种问题,本章说明lex和yacc在windows下的环境配置。软件需求:
系统 win7-64位(win7-32, win8, win10全部通过)
c++编译器: vs2010(2008,2013,2015也全部通过)
lex和yacc编译器: ParGen.exe基本流程:
安装Pargen.exe,采用的默认目录安装在C:\Program...
分类:
其他好文 时间:
2016-05-07 09:38:56
阅读次数:
405