CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  非技术区

高分求正规表达式(a|b)*abb的C语言实现

楼主sms88(白板http://shop34112882.taobao.com)2005-12-09 20:36:40 在 C/C++ / 非技术区 提问

即判断一个字符串是不是由a和b组成,并且最后为abb.  
   
  本人在自学<<编译原理>>,自学的难度实在是大.虽然书中提供了算法,但对于我来说用C语言来实现很有难度.所以求代码来瞧瞧,以便于自己实现其它的正规表达式.  
   
  要有NFA的建立和转换成DFA的过程.  
  若没有的话,就不用帖,因为可以用case语句。。。。。 问题点数:100、回复次数:20Top

1 楼guyanhun(老婆说的都是对的!努力做个好老公!)回复于 2005-12-09 20:54:56 得分 9

帮你顶。没学编译原理先   ~~Top

2 楼cunsh(村少)回复于 2005-12-09 21:34:08 得分 9

呵呵.楼主是引生呀?Top

3 楼fiftymetre(50米深蓝)回复于 2005-12-09 21:58:49 得分 28

写代码这种事真烦啊,唉  
  给你写好了,看看吧  
   
  #include   <stdio.h>  
  #include   <stdlib.h>  
   
  int   check(char   *src)  
  {  
  int   len   =   strlen(src);  
  if   (len   <   3)  
  {  
  return   0;  
  }  
  if   (strcmp(src+len-3,   "abb"))  
  {  
  return   0;  
  }  
  while   (*src)  
  {  
  if   (*src   !=   'a'   &&   *src   !=   'b')  
  {  
  return   0;  
  }  
  src++;  
  }  
  return   1;  
  }  
   
  int   main()  
  {  
  printf("%d\n",   check("abb"));  
  printf("%d\n",   check("aabb"));  
  printf("%d\n",   check("aaab"));  
  printf("%d\n",   check("cabb"));  
  return   0;  
  }Top

4 楼sms88(白板http://shop34112882.taobao.com)回复于 2005-12-09 22:21:06 得分 0

判断一个字符串是不是由a和b组成,并且最后为abb.这个是很容易.但是关键的是编译原理中的NFA和DFA啊  
  要有NFA的建立和转换成DFA的过程.Top

5 楼fiftymetre(50米深蓝)回复于 2005-12-09 22:31:46 得分 5

早忘光了Top

6 楼Mr_Yang(初级程序员)回复于 2005-12-09 23:08:01 得分 5

markTop

7 楼jsjgirl(从前有座山,山上有座庙)回复于 2005-12-09 23:13:02 得分 9

呵呵,同路中人,我这段时间也在凭兴趣在重温<编译原理>,书中也是拿(a|b)*abb做典型,不过是pascal实现.     有可执行的代码.Top

8 楼Kenmark(fenix)回复于 2005-12-10 13:58:30 得分 5

不爽,为什么偏要用C,用C++不就简单多了吗???Top

9 楼sms88(白板http://shop34112882.taobao.com)回复于 2005-12-10 17:53:32 得分 0

用C++简单?  
  我倒是不觉得Top

10 楼f_acme(沧海一声笑)回复于 2005-12-10 18:44:47 得分 5

小弟顺便问个问题:  
  假设只有a和b组成的字符串,该字符串有奇数个a和偶数个b,请问怎么用正则表达式表示呢?Top

11 楼Kenmark(fenix)回复于 2005-12-10 20:40:15 得分 5

用C++可以用REGEX库,而且就C++的TEMPLATE和类的支持来说用C++做正则的处理更加方便Top

12 楼sms88(白板http://shop34112882.taobao.com)回复于 2005-12-11 18:01:32 得分 0

upTop

13 楼sms88(白板http://shop34112882.taobao.com)回复于 2005-12-12 16:11:43 得分 0

我再顶几天Top

14 楼pankun(剑神一笑 Console下面干革命)回复于 2005-12-12 19:32:04 得分 5

用子集构造法,龙书有讲.  
  另外f_acme(沧海一声笑)的问题无法用正则表达式表示.Top

15 楼sms88(白板http://shop34112882.taobao.com)回复于 2005-12-12 20:56:35 得分 0

我是实现不了子集构造法Top

16 楼ctu_85(青灯照壁人初睡,冷雨敲窗被未温)回复于 2005-12-12 21:37:44 得分 5

 
  呵呵  
  代码做到后面词法分析很简单  
  语法编译器就难多了  
  我们去年一个宿舍做了1个星期Top

17 楼sms88(白板http://shop34112882.taobao.com)回复于 2005-12-12 21:38:42 得分 0

怎么就到了   非技术区   了  
  什么意思这是???Top

18 楼bohemia(程勘)回复于 2005-12-12 21:58:56 得分 5

对啊,好好学些正规表达式图的画法,从图到程序   或许容易些.不过大部分程序和图有很大区别.Top

19 楼DiabloWalkOnTheEarth(我想到个绝妙的昵称,只是地方太小,写不下)回复于 2005-12-13 08:48:17 得分 5

正则还是   C   比   C++   方便多了,   yacc   ,   lex   生成的代码也是   C   地,   唉   ...Top

20 楼sms88(白板http://shop34112882.taobao.com)回复于 2005-12-15 21:00:40 得分 0

upTop

相关问题

  • 关于表达式c=(a%b,a/b),
  • a*(b+c)-b的中缀表达式是什么?
  • 表达式求值 C#
  • javascript正则表达式转换成c#正则表达式
  • int a=4,b=2表达式(a+b)%((a-b)*3)?a++:b++的值是____?学习C++中遇到的问题,大虾指教
  • 请问在C#中如何实现将一个字符串"a+1>b+1",当成一个表达式用?谢谢.
  • 我对C++中表达式的看法
  • c++ primer关于定位new表达式
  • C#正则表达式问题
  • 求一正则表达式(c#)

关键词

  • c++
  • 代码
  • abb
  • 正规表达式
  • 字符串
  • 实现
  • 书
  • 简单
  • 图
  • 多了

得分解答快速导航

  • 帖主:sms88
  • guyanhun
  • cunsh
  • fiftymetre
  • fiftymetre
  • Mr_Yang
  • jsjgirl
  • Kenmark
  • f_acme
  • Kenmark
  • pankun
  • ctu_85
  • bohemia
  • DiabloWalkOnTheEarth

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo