由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
CS版 - 有没有做编译的大牛
相关主题
perl和python到底哪个好?请问perl初学者最开始看那本书好
用word写paper有没有什么好的tutorial?求计算机2D,3D方面审稿机会
【求指点】毕业设计,选什么好?如何用Python或者Perl抓取文本?
有人用sciposter 吗 (转载)亚米网靠谱吗
想做个搜索引擎,Lucene行吗?问一道编程面试题:regex匹配文本中的域名
怎么才能一边运行Matlab一边运行其他程序 (转载)请教文本替换
请教:有什么软件能自动把文本朗诵为标准的美音?perl的文本处理大部分容易在python里实现吗?
请教脚本和编程高手:关键字自动查找与输出请教解决方案
相关话题的讨论汇总
话题: xxx话题: flex话题: 文本话题: c++话题: yytext
进入CS版参与讨论
1 (共1页)
d****g
发帖数: 1049
1
借你的牛刀杀只小鸡:)
我正在写一个处理格式文本的程序。想用flex,感觉是用不到yacc.
文件格式很简单,就是:
关键词:数据
但是文本里有不同数据块,比如:
类型: 联系方式
姓名:xxx
地址:xxx
类型:产品
名称: xxx
型号: xxx
类型:运动
名称:xxx
类别:xxx
我觉得用flex就足够了,因为结构比较简单。
我看了看flex的说明,有一点不知道怎么弄。
就是我拿到关键词以后怎么再拿到数据?
我应该在下面的规则里面加一个什么规则?
我现在是用".", 然后把所有不和关键字匹配
的字符全送到一个字串,可是觉得这么做很慢,
而且好像也很笨:)
%%
{keyword} {printf("%s\n", yytext);}
. {strcat(data,yytext);}
%%
s****t
发帖数: 698
2

之前看过一个叫altr?的似乎是比较新的parser,
你可以找找看。
//btw:我不是大牛,只是似乎原来看过,顺便想起来了,希望能帮上你。

【在 d****g 的大作中提到】
: 借你的牛刀杀只小鸡:)
: 我正在写一个处理格式文本的程序。想用flex,感觉是用不到yacc.
: 文件格式很简单,就是:
: 关键词:数据
: 但是文本里有不同数据块,比如:
: 类型: 联系方式
: 姓名:xxx
: 地址:xxx
: 类型:产品
: 名称: xxx

w***g
发帖数: 5958
3
中文弄起来比较麻烦。这么简单的格式还不如用c直接写快。

【在 d****g 的大作中提到】
: 借你的牛刀杀只小鸡:)
: 我正在写一个处理格式文本的程序。想用flex,感觉是用不到yacc.
: 文件格式很简单,就是:
: 关键词:数据
: 但是文本里有不同数据块,比如:
: 类型: 联系方式
: 姓名:xxx
: 地址:xxx
: 类型:产品
: 名称: xxx

d****g
发帖数: 1049
4
谢谢,去找找看。

【在 s****t 的大作中提到】
:
: 之前看过一个叫altr?的似乎是比较新的parser,
: 你可以找找看。
: //btw:我不是大牛,只是似乎原来看过,顺便想起来了,希望能帮上你。

d****g
发帖数: 1049
5
谢谢,不过我处理的文本是英文的。写中文是为了表达清楚。

【在 w***g 的大作中提到】
: 中文弄起来比较麻烦。这么简单的格式还不如用c直接写快。
d*h
发帖数: 2347
6
不是大牛。
但这个应用也太简单了。用正则表达式就处理了,哪里用得着flex. 不知你用什么语言
,不过绝大多数语言都提供re,实在没有或者对delievered 的re不满意的话,自己写
一个状态机也就是两个loop, 1个小时的事情。

【在 d****g 的大作中提到】
: 借你的牛刀杀只小鸡:)
: 我正在写一个处理格式文本的程序。想用flex,感觉是用不到yacc.
: 文件格式很简单,就是:
: 关键词:数据
: 但是文本里有不同数据块,比如:
: 类型: 联系方式
: 姓名:xxx
: 地址:xxx
: 类型:产品
: 名称: xxx

d****g
发帖数: 1049
7
我贴子里没说清楚,我那文本里有近百关键字。自己写可能挺烦。

【在 d*h 的大作中提到】
: 不是大牛。
: 但这个应用也太简单了。用正则表达式就处理了,哪里用得着flex. 不知你用什么语言
: ,不过绝大多数语言都提供re,实在没有或者对delievered 的re不满意的话,自己写
: 一个状态机也就是两个loop, 1个小时的事情。

d****g
发帖数: 1049
8
嗯,懂你的意思了。
主要是程序要求用C/C++,可是已经10+年没碰了。而且印象中
C/C++不内置regular expression库。也没先去找找。
想用flex是因为它可以自动生成主干代码,可以省很多事。
昨天去查了一下发现有现成的regular expression的C++库可以用。

【在 d*h 的大作中提到】
: 不是大牛。
: 但这个应用也太简单了。用正则表达式就处理了,哪里用得着flex. 不知你用什么语言
: ,不过绝大多数语言都提供re,实在没有或者对delievered 的re不满意的话,自己写
: 一个状态机也就是两个loop, 1个小时的事情。

c*****t
发帖数: 1879
9
1. C 有 regex,C++ 有 boost 里的 regex
2. scanf 很多情况下可以代替 regex 。
3. LZ 的问题根本不需要 flex / regex 。非常基本的 text input 。

【在 d****g 的大作中提到】
: 嗯,懂你的意思了。
: 主要是程序要求用C/C++,可是已经10+年没碰了。而且印象中
: C/C++不内置regular expression库。也没先去找找。
: 想用flex是因为它可以自动生成主干代码,可以省很多事。
: 昨天去查了一下发现有现成的regular expression的C++库可以用。

g*****n
发帖数: 420
10
Antlr 可以生成C的代码,而且生成的代码比较像人写的,比较好调试。lex和yacc这种
东西生成的代码比较像天书
v***n
发帖数: 5085
11

05年就有的项目
h******u
发帖数: 155
12
parse formated text文本为啥要用这些复杂的 parser generator呀?你说的功能
perl 下面几行就可以搞定了
@lines = `cat filename`;
$numLines = scalar(@lines);
for($p =0; $p < $numLines; $p++){
$line = $fileLines[$i];
if($line =~ /\(w+\)\:\(w+\)/){
$key = $1;
$value = $2;
}
}
$1, $2就是你要的东西 “姓名“ 和 “xxx“
h******u
发帖数: 155
13
现有的parse generator通常用来检查 context-free-language的recognition 问题。
这些language一般都有matched open parentheses的属性,例如你有左括号,需要右括
号。检查 CFL-recognition不是trivial的问题,所以需要这样的parser生成器。 或者
可以做些 attribute grammar的属性检查 (某个production被evaluate的时候有些什
么action需要产生)。 一般的formated text parsing 不要往这个上面去想。perl就
是用来干这种事情的。
1 (共1页)
进入CS版参与讨论
相关主题
请教解决方案想做个搜索引擎,Lucene行吗?
Sun要开源Java了怎么才能一边运行Matlab一边运行其他程序 (转载)
低手问个问题请教:有什么软件能自动把文本朗诵为标准的美音?
如何有效的用C/C++ 移动文件中的文本块?请教脚本和编程高手:关键字自动查找与输出
perl和python到底哪个好?请问perl初学者最开始看那本书好
用word写paper有没有什么好的tutorial?求计算机2D,3D方面审稿机会
【求指点】毕业设计,选什么好?如何用Python或者Perl抓取文本?
有人用sciposter 吗 (转载)亚米网靠谱吗
相关话题的讨论汇总
话题: xxx话题: flex话题: 文本话题: c++话题: yytext