- 论坛徽章:
- 0
|
本帖最后由 hsum 于 2010-06-01 21:43 编辑
问题解决了!
只要在我的main函数里面,在调用yyparse()之前,调用yy_switch_to_buffer(yy_scan_string("xxxxxx")),就可以将xxxxx作为欲解析的字符串传递给yylex了!这是flex的一个内部函数!谢谢各位!
再简单讲下问题:
我在我的main函数里面调用yyparse(param a),传递了一个结构体参数给yyparse,然后yyparse自己调用yylex()函数,现在我想将参数a(其实是a中的一个成员)传递给yylex(其实是待解析的字符串),我在网上找了很多资料,知道在yyparse文件里面添加#define YYLEX_PARAM a->str 但是接下去我改怎么修改lex文件,让它获知这个参数,并且将这个参数作为它词法解析的字符串呢?!
-----------------------------------------------------------------------------------------------------------
是这样,我用flex和bison编写好词法语法规则后,在我的程序里调用yyparse()就可以等待用户从键盘上输入然后进行解析了。
但是我现在要实现socket接口,就是说想要服务器端这边从socket接口获取用户的输入后,把输入传递给yyparse(),让他解析(或者是干脆把socket的套接字socketfd传递给lex,让它从套接口自己读然后解析),可是yylex默认是从标准输入,也就是键盘读取,我现在不知道怎么改变yylex的输入,我的程序里没有调用yylex(),我只是调用了yyparse(),在yyparse()中bison自己再调用yylex(),我现在知道怎么传递参数给yyparse()了,可是不知道怎么传递参数给yylex(),清高手指教! |
|