21、纯扫描器与解析器的深入解析

纯扫描器与解析器的深入解析

1. 纯扫描器在Flex中的使用

在Flex里,一次扫描任务可能要多次调用 yylex() ,因为它会把标记返回给调用程序。由于每次调用之间需要保存扫描器的状态,所以得自行管理每个扫描器的数据。Flex提供了创建和销毁扫描器上下文的例程,还有访问扫描器值的例程,这些值以前存于 yyin yytext 等静态变量中,现在允许 yylex() 之外的例程获取和设置它们。

以下是使用纯扫描器的关键步骤和代码示例:
1. 定义扫描器信息指针
c yyscan_t scaninfo;
2. 创建扫描器
c int yylex_init(&scaninfo);
也可以带用户数据指针创建扫描器:
c int yylex_init_extra(userstuff, &scaninfo);
3. 设置输入文件和其他参数
c yyset_in(stdin, scaninfo);
4. 循环调用 yylex() 直到完成
c while( ... ) { tok = yylex(scaninfo); }
5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值