4326|3

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请问一个关于yyparse的问题,急!! [复制链接]

是这样的,我要新增一条CLI命令,形如:

load scp {ip-addr} {file-path}

于是我在bison.y新增一条:

  |   SYM_LOAD SYM_SCP ip_addr filepath SEMI
      {
         LoadScp();
      }

ip_addr定义如下:

ip_addr:    e255 '.' e255 '.' e255 '.' e255
                {
                sprintf (string, "%d.%d.%d.%d", $1, $3, $5, $7);
                $$ = string;
                }
        ;

e255定义如下:

e255:        expr
             {
                if (($1 >= 0) && ($1 <= 255))
                    $$=$1;
                else
                    execerror(out_of_range, "must be 0...255");
             };

当然,SYM_LOAD定义为 "load", SYM_SCP定义为"scp".filepath就是一个string类型.

编译没有问题.
但是运行时候,ip_addr 中4个数字为4,6,7,8,9时出错.如下:
> load scp 10.70.7.30 "asdfsaf"   
*----------------^ 2

其中^是表示解析到何处失败的位置. 2是yyparse报出的错误类型. SYNTAX ERROR....
但是:

> load scp 10.70.5.30 "adfsafds"

  load scp.........
10.70.5.30------adfsafds

没有问题.

而把7换成07则没有问题.

不知是何原因.我已经试过修改SYM_SCP的值,无效.
如果将ip_addr换成


ip_addr:    NUMBER '.' NUMBER '.' NUMBER '.' NUMBER
                {
                sprintf (string, "%d.%d.%d.%d", $1, $3, $5, $7);
                $$ = string;
                }
        ;

仍然有上述问题,4个数字只要是4,6,7,8,9则解析失败,0,1,2,3,5没有问题.两位数三位数均没有问题.当然我没有挨个去实验...
去掉filepath变量仍有问题.

求高手解决啊....yyparse没看过,我看那玩意估计没一个礼拜拿不下来...

最新回复

lz要干嘛?  详情 回复 发表于 2008-5-1 20:02
点赞 关注

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
那个^是表示解析返回的位置的,在例子里面指向的是7,发出来的样子像是指向70...是不对的.
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
woding
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
lz要干嘛?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表