随笔分类 -  编译器生成技术

asn1c中 std::max编译冲突解决方法
摘要:1>------ 已启动全部重新生成: 项目: libasnparser, 配置: Debug Win32 ------1>正在删除项目“libasnparser”(配置“Debug|Win32”)的中间文件和输出文件1>正在编译...1>Main.cpp1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2589: “(”: “::”右边的非法标记1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2059: 语法错误 阅读全文

posted @ 2010-08-29 21:11 NBSTAR 阅读(443) 评论(0) 推荐(0)

Flex&Bison Tips (2010-08-27) 应用auto_ptr避免内存泄露
摘要:todo: 阅读全文

posted @ 2010-08-27 00:42 NBSTAR 阅读(183) 评论(0) 推荐(0)

Flex&Bison Tips(2010-08-27) 如何在VC中更好的断点调试flex&bison词法和语法分析器
摘要:断点设置:todo: 阅读全文

posted @ 2010-08-27 00:39 NBSTAR 阅读(195) 评论(0) 推荐(0)

Flex&Bison Tips(2010-08-26)如何改善 flex & bison 在VC下的编辑环境
摘要:我在VC下安装VC助手(VisualAssistX), 让它可以高亮显示C/C++语法,同时支持快捷跳转、自动联想、简单重构等功能。1. 将flex的输入文件命名为后缀 .cpp, 但是将这个.cpp文件从工程编译中排除,这样既可以方便在flex输入文件中写C/C++代码。同时编译也不会报错。2. 如果要让flex生成的头文件和源文件具有自己的名字,也很简单,在flex的输入文件中使用如下选项就可自己指定想要的文件名:/* 自命名输出文件 */%option outfile="Lexer.cpp" HEADER-FILE="Lexer.h" 通过以上设置 阅读全文

posted @ 2010-08-27 00:34 NBSTAR 阅读(507) 评论(0) 推荐(0)

windows 下 flex 命令行批处理文件
摘要:1. 通过cygwin 安装 flex2. 新建一个命令行批处理文件调用flexflex.bat@set flex_dir="E:/SDK/cygwin/bin"@set Path=Path;%flex_dir%@REM flex command line@REM Usage@REM flex.bat %grammer_file_name@REM @REM flex parameters used in our command line@REM --nounistd not include unistd.h @REM --never-interactive t... 阅读全文

posted @ 2010-08-19 21:32 NBSTAR 阅读(435) 评论(0) 推荐(0)

GNU flex unistd.h在VC下的编译问题
摘要:问题现象:...: fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory 原因,flex生成的代码如下:#ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first 阅读全文

posted @ 2010-08-19 21:28 NBSTAR 阅读(927) 评论(0) 推荐(0)

词法分析生成器 之 lexertl 【4】添加文件解析行号功能
摘要:目标: 将文件名和行号信息存在Token中以便词法分析和语法分析时输出更详细的信息。这在调试你的分析器时将会有非常大帮助。做法: 记得之前 Boost.Spirit 有一个 file_iterator类和position_iterator类,仔细看了一下,确实满足 lexertl match_results类 对迭代器的要求。 好,那就写几行代码验证一下吧。#include "lexertl/generator.hpp"#include "lexertl/lookup.hpp"#include "lexertl/rules.hpp"# 阅读全文

posted @ 2010-07-19 00:46 NBSTAR 阅读(592) 评论(0) 推荐(0)

词法分析生成器 之 Lexertl 【3】配合bison工作
摘要:Technorati 标签: boost lexerTechnorati 标签: lexertl,bison,lexer analyser,grammer analyser众所周知,bison是C/C++领域最著名的开源语法生成器之一。并且一直保持着活跃的开发状态。当前发表的最新稳定版本为2.4.2(2010-03-20)。在本节我们将lexertl和bison结合在一起,生成一个简单的分析器。 其中 lexertl 负责生成词法分析器,而 bison 负责生成语法分析器。本示例的语法描述文件取自Bison自带的生成C++代码例子,说明文档在 http://www.gnu.org/softwa 阅读全文

posted @ 2010-07-17 00:30 NBSTAR 阅读(234) 评论(0) 推荐(0)

windows 下 bison 命令行调用
摘要:目标:将bison集成到Visual studio中做法:以cygwin下bison为例。1.新建一个批处理文件 bison.bat,内如如下:@set bison_dir="E:/SDK/cygwin/bin" @set Path=Path;%bison_dir% @REM bison command line @REM Usage @REM bison.bat %grammer_file_name @REM @REM bison parameters used in our command line @REM -l don't generate `#line&# 阅读全文

posted @ 2010-07-16 19:47 NBSTAR 阅读(367) 评论(0) 推荐(0)

词法分析生成器 之 Lexertl 【1】简介
摘要:Technorati 标签: lexertl,boost lexer,lexical analyser1. 简介lexertl是一个现代的词法分析生成器(lexical analyser generator)。传统意义上的词法分析生成器(如lex)都以生成源代码作为输出,有的甚至只支持生成一种编程语言的源代码。而lexertl使用正则表达式作为输入,输出为包含多个DFA的状态机。与flex不同的是,lexertl默认情况下不产生源代码,而是所写词法分析器可直接编译并立即执行。(也即词法分析器描述文件即C++源代码。)这就使得开发者可以快速开发词法分析器。Lexertl试图通过导出状态机来提供更 阅读全文

posted @ 2010-07-16 00:50 NBSTAR 阅读(429) 评论(0) 推荐(0)

我所关注的
摘要:我所关注的开源代码库1. Boost Log2. Boost Lexer 阅读全文

posted @ 2010-07-15 23:39 NBSTAR 阅读(134) 评论(0) 推荐(0)

如何将flex 生成的可重入C词法扫描器与bison生成的C++语法解析器配接起来
摘要:如题,本文主要是flex与bison 的配合问题。 bison设置在bison用户手册中已经详尽说明了,这里不再赘述。 主要说明一下flex 的设置,并给出一个示例工程。1. flex设置%{/* 由于flex在输入结束时默认的yyterminate()返回值为0,与bison中token::END可以能不一致 */#define yyterminate() return token::END /* end of input file. */%}/* 生成可重入C代码 */%option reentrant noyywrap /* 适配bison */%option bison-bridge 阅读全文

posted @ 2009-06-12 17:44 NBSTAR 阅读(811) 评论(0) 推荐(0)

flex与bison接口不兼容的问题
摘要:flex和bison在产生C++类层面上接口不兼容描述如下:1.flex中 C++类 yyFlexLexer产生接口yyFlexLexer(istream *in,istream* out);void yylex()void switch_stream(istream *in,istream *out);int yylex(istream *in,istream *out);2. bison产生类所使用的lex接口,parser里面直接调用parser::lex_()接口,而lex_()直接调用全局的yylex()int yylex (semantic_value_type& yylv 阅读全文

posted @ 2009-06-10 22:45 NBSTAR 阅读(256) 评论(0) 推荐(0)

导航