纯扫描器与解析器的深入解析
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
超级会员免费看
订阅专栏 解锁全文
3264

被折叠的 条评论
为什么被折叠?



