4.10 构建和使用lexer

最后更新于:2022-04-01 01:09:50

函数`lex.lex()`使用Python的反射机制读取调用上下文中的正则表达式,来创建lexer。lexer一旦创建好,有两个方法可以用来控制lexer对象: * `lexer.input(data)` 重置lexer和输入字串 * `lexer.token()` 返回下一个LexToken类型的标记实例,如果进行到输入字串的尾部时将返回`None` 推荐直接在lex()函数返回的lexer对象上调用上述接口,尽管也可以向下面这样用模块级别的lex.input()和lex.token(): ~~~ lex.lex() lex.input(sometext) while 1: tok = lex.token() if not tok: break print tok ~~~ 在这个例子中,lex.input()和lex.token()是模块级别的方法,在lex模块中,input()和token()方法绑定到最新创建的lexer对象的对应方法上。最好不要这样用,因为这种接口可能不知道在什么时候就失效(译者注:垃圾回收?)
';