有关flex的c++编程方法
来源:互联网 发布:货到付款淘宝网衣服 编辑:程序博客网 时间:2024/04/29 19:27
最近我忙着一些有关编译原理相关的程序,用flex生成c语言的程序是很常见的,但是用flex生成c++的程序却是很少见的。我在网上找了几个例子,但都不能执行,所以我就自己不断尝试,对网上的代码进行修改,最终得到了一个简单的flex生成c++的小程序,别看他小,我可是费了一天的功夫呢。为了大家能够更方便的参考,我把相应代码列在下面。
运行环境:linux
编译器:g++
下面是parser.l文件
%{
#include "data.h"
extern data newData;//不用extern我也想不出什么好办法,怎样将参数传入呢???
%}
%%
/n newData.incNumLines(); newData.incNumChars();
. newData.incNumChars();
%%
int yywrap()
{
return 1;
}
这里要说的是,尽管int yywrap()看上去没什么用,但是却不能少。很多代码中都是少了这个就执行不了了。
然后是个数据结构,只不过是封装了两个变量,然后对他们赋值罢了
下面是 data.h文件
#ifndef __DATA_H
#define __DATA_H
class data{
protected:
int num_lines;
int num_chars;
public:
void setNumLines(int newLines);
void setNumChars(int newChars);
void incNumLines();
void decNumLines();
void incNumChars();
void decNumChars();
int getNumLines();
int getNumChars();
data();
};
#endif
下面是data.cpp文件:
#include "data.h"
data::data()
{
num_lines = 0;
num_chars = 0;
}
void data::setNumLines(int newLines)
{
num_lines = newLines;
}
void data::setNumChars(int newChars)
{
num_chars = newChars;
}
void data::incNumLines()
{
num_lines++;
}
void data::decNumLines()
{
num_lines--;
}
void data::incNumChars()
{
num_chars++;
}
void data::decNumChars()
{
num_chars--;
}
int data::getNumLines()
{
return num_lines;
}
int data::getNumChars()
{
return num_chars;
}
最后给出的是main.cpp文件:
#include <FlexLexer.h>
#include <fstream.h>
#include <string.h>
#include <stream.h>
int num_lines = 0, num_chars = 0;
int main( int /* argc */, char* argv[] )
{
ifstream* pmyFile = new ifstream();//要从文件读入要解析的字符串
pmyFile->open(argv[1],ios::out);//这个文件作为启动参数传入
FlexLexer* lexer = new yyFlexLexer(pmyFile);//分析器的构造函数
while(lexer->yylex()!=0);//逐词分析
printf("total lines:%d/ntotal chars:%d/n",num_lines,num_chars);
delete pmyFile;
delete lexer;
return 0;
}
最后编译:
#flex -+ parser.l
# g++ main.cpp data.cpp lex.yy.cc -o main
然后就可以执行了:
./main data.h
就这些 希望对大家有所帮助,也希望大家多提意见,共同探讨。
- 有关flex的c++编程方法
- 有关flex的c++编程方法
- 有关flex的安装
- 有关杨辉三角形的C编程
- 有关c#GDI绘图的一些方法
- flex 有关的处理数据
- 初次接触flex的编程与问题解决(有关gcc的静态库链接)
- 有关Flex
- 有关程序员的性别、年龄、个性、编程方法的话题
- USB有关的编程
- USB有关的编程
- USB有关的编程
- USB有关的编程
- USB有关的编程
- USB有关的编程
- 有关C的学习
- 有关于C指针的一些知识点(又名C指针编程之道读书笔记)
- Flex 画线的方法
- json json-rpc 如何在项目中便宜引入Ajax框架 (Joyrock开源项目)
- Asp.Net页面请求性能大隐患 你是否做了这样的事情
- Ice 3.3.1 Released
- linux 下ARM 与X86之间对外部设备IO映射的区别
- 80 后的10条底线
- 有关flex的c++编程方法
- SQLServer内核架构剖析
- 灰度矩阵算法实现
- Release notes for Ice 3.3.1
- 存储过程将.txt.xls文件数据导入数据库表格
- HTTP错误的代码
- 瞎聊1
- jsp常见错误
- Clucene 几种中文分词以及比较(未完)