`
chinamming
  • 浏览: 140674 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

如何将flex 生成的可重入C词法扫描器与bison生成的C++语法解析器配接起来

 
阅读更多

如题,本文主要是flex与bison 的配合问题。 bison设置在bison用户手册中已经详尽说明了,这里不再赘述。 主要说明一下flex 的设置,并给出一个示例工程。

1. flex设置

以上是几项主要的设置。其他的设置可以自己根据情况定制。

2. yylex接口约束

yylex函数是连接flex与bison的接口。

1. 在指定了%option bison-bridge时, yylex接口声明如下:

int yylex ( YYSTYPE *lvalp, yyscan_t scanner);

2. 在附加指定了%option bison-bridge时, yylex接口声明如下:

int yylex ( YYSTYPE *lvalp, YYLTYPE *llocp, yyscan_t scanner);

3. 通过定义宏 YY_DECL 可以为 yylex 附加其他参数。示例如下

其中 ParserDriver& driver为附加参数, 由bison生成的语法解析器在调用yylex时指定。

YYSTYPE是由语法解析器提供的token类型定义。

YYLTYPE是由语法解析器提供的location类型定义。

3. bison 设置

请参考bison用户手册中自带的C++例子,这里没有特殊说明。

4. 示例

附上一个例子。以供参考。下载路径:

http://cid-ce03713132db140b.office.live.com/self.aspx/public/FlexWithBison.zip

如何在windows下搭建flex和bison环境,请参考我的相关博客。

分享到:
评论

相关推荐

    Writing MATLAB to C:使用 Bison/Flex 创建的解析器和代码生成器

    本文介绍了使用 GNU Bison 解析器生成器和 GNU Flex 词法分析器生成器编写的 MATLAB-to-C 代码转换器。本文解释了这些实用程序的基本特性,并展示了如何从解析器结果中生成输出代码。该转换器生成的代码经过编译并与...

    词法分析实验(Flex和bison)包含实验报告

    编译原理的词法分析实验,用flex和bison做的,能识别关键字和自定义的变量。包含与之相对应的实验报告。可以直接拿来交给老师的。

    基于Flex生成C++语言的词法分析器【100012946】

    使用词法分析的自动生成工具 Flex 生成 CC++ 语言的词法分析器 ,当输入 CC++ 源代码文件时,即后缀为 ccpp 的文件,程序输出后缀为 tok 的文本性文件。涉及知识点:词法分析,Flex 工具使用。

    词法语法解析器

    词法语法解析器

    c语法分析器--采用bison(yacc)

    c语法分析器,采用bison2.1(yacc), flex(lex), 生成程序的语法树 分析单个文件,不支持预处理, 不解析预处理符号# bison,flex工具在上传包内,语法见cgrammar-new.y,词法见input.lex 另附相关说明,本代码采用vs...

    C++递归下降解析器(编译器设计课)

    通常,我建议编写解析器的人使用解析器生成工具,例如bison和flex。但是对于小语言,建议编写自己的递归下降解析器。 为了说明如何编写递归下降解析器,我将向您展示我不久前为INI样式配置文件编写的解析器。有问题...

    C语言开发课程设计词法分析器源代码.zip

    设计任务: 使用词法分析的自动生成工具 Flex 生成 C/C++语言的词法分析器 ,当输入C/C++源代码文件时,即后缀为 c/cpp 的文件,程序输出后缀为 tok 的文本性文件。涉及知识点:词法分析,Flex 工具使用。 环境配置:...

    用LEX(FLEX)生成PL语言的词法分析器,学会写第一个LEX程序

    学习LEX(FLEX)的语法结构,学会如何写LEX程序。 Lex是Lexical Compiler的缩写,是Unix环境下非常著名的工具。 实现对以小写字母ab结尾的字符串(只包含大小写字母)的识别,如Helloab和Goab。 注意,你只需要保证...

    用LEX(FLEX)生成PL语言的词法分析器,识别出单词符号

    利用FLEX工具生成PL语言的词法分析器,实现对输入的PL语言源程序进行词法分析,识别出单词符号。 要求输入一个PL语言源程序文件demo.pl,输出一个文件tokens.txt,该文件包括每一个单词及其种别枚举值,每行一个单词...

    利用FLEX设计一个small c的词法分析器(文档+工具+源码)

    一个小小的词法分析器设计,文档有步骤使用说明和基础语法讲解,还有实现效果截图,是事先写好好词法分析器的规则,再利用Flex工具自动生成.c文件,再利用编译器生成可执行文件即可

    flex做词法分析器

    一步一步的利用flex做tiny语言的词法分析的过程,包含截图和代码,有注释

    Windows下词法分析分析器Flex和语法分析器bison的使用说明.pdf

    编译原理实验中所用到的两个小工具,内含详细的安装步骤与使用规则。之前做实验的时候顺便写的,对于初学者应该会有一些帮助,本资源免费提供,写的不好之处还请见谅。

    用flex自动生成词法分析器

    原创。包含使用说明、.l文件、测试文档以及所有的生成文档

    C-词法扫描器语法分析器

    编译原理课程设计,仅供参考,希望学弟学妹可以少走弯路

    flex词法解析器(Lexical Analysis with Flex)

    flex 一个自动的词法分析器生成器,通常与bison一起使用,基本上与yacc兼容。 本文档为flex manual,是学习flex不可多得的学习资料。

    类C语言的词法扫描器

    类C语言的词法扫描器,通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力

    用C++语言实现的C语言词法分析器

    用C++语言实现的C语言词法分析器,本人第一次编写的自认为还行。 主要包括识别关键字,运算符,标识符,整常数,字符常数,浮点常数等等,还有一些错误处理。 欢迎大家下载使用并提出宝贵意见!

    bison词法分析 语法分析

    bison词法分析 语法分析 The Yacc-compatible Parser Generator 2 April 2009, Bison Version 2.4.1

    利用词法自动生成实现词法扫描器

    题 目: 利用词法自动生成实现词法扫描器 初始条件: 程序设计语言:主要使用C语言的开发工具,或者采用LEX、YACC等工具,也可利用其他熟悉的开发工具。算法:可以根据《编译原理》课程所讲授的算法进行设计。 要求...

    C语言半自动词法分析器和半自动语法分析器.zip

    C语言的半自动词法分析器和半自动语法分析器是指那些部分手动编写、部分自动生成的分析器。这些分析器通常用于教育目的,帮助学生理解编译器的工作原理,同时也减少了完全手动编写分析器的复杂性。以下是基于C语言的...

Global site tag (gtag.js) - Google Analytics