纯扫描器与解析器:原理、应用与实现
在编程领域,扫描器和解析器是处理文本输入、将其转换为有意义数据结构的重要工具。纯扫描器和解析器因其可重入性和更好的状态管理能力,在多线程、多实例等复杂场景中表现出色。本文将深入探讨纯扫描器和解析器的相关知识,包括它们的原理、使用方法以及如何将它们结合使用。
1. 纯扫描器(Pure Scanners)
在Flex中,单个扫描任务可能涉及多次对 yylex() 的调用,因为它会将标记(tokens)返回给调用程序。由于扫描器的状态需要在调用之间保存,因此需要自己管理每个扫描器的数据。Flex提供了创建和销毁扫描器上下文的例程,以及访问以前存储在静态变量(如 yyin 和 yytext )中的扫描器值的例程,以便 yylex() 之外的例程可以获取和设置这些值。
下面是创建和使用纯扫描器的基本步骤:
1. 定义扫描器实例数据指针 :
yyscan_t scaninfo;
- 创建扫描器 :
int yylex_init(&scaninfo);
或者使用用户数据创建扫描器:
int yylex_init_ext
超级会员免费看
订阅专栏 解锁全文

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



