ply.lex python
时间: 2023-10-17 12:34:20 浏览: 103
python lexer yacc 手册
在Python中,ply.lex是一个基于PLY(Python Lex-Yacc)库的词法分析器生成器。它用于将输入的文本流转换为一系列词法单元(tokens)。可以通过定义规则来指定如何识别和处理不同类型的词法单元。以下是一个简单的示例:
```python
from ply import lex
# 定义词法单元的规则
tokens = (
'NUMBER',
'PLUS',
'MINUS',
'TIMES',
'DIVIDE',
'LPAREN',
'RPAREN',
)
t_PLUS = r'\+'
t_MINUS = r'-'
t_TIMES = r'\*'
t_DIVIDE = r'/'
t_LPAREN = r'\('
t_RPAREN = r'\)'
def t_NUMBER(t):
r'\d+'
t.value = int(t.value)
return t
# 忽略空格和制表符
t_ignore = ' \t'
# 错误处理
def t_error(t):
print("Illegal character '%s'" % t.value[0])
t.lexer.skip(1)
# 构建词法分析器
lexer = lex.lex()
# 测试词法分析器
data = '3 + 4 * 2 - 1 / 5'
lexer.input(data)
while True:
token = lexer.token()
if not token:
break
print(token)
```
上述代码定义了一些简单的词法单元,包括数字(NUMBER)、加号(PLUS)、减号(MINUS)、乘号(TIMES)、除号(DIVIDE)、左括号(LPAREN)和右括号(RPAREN)。通过调用lexer.token(),可以逐个获取识别出的词法单元。
请注意,这只是一个简单示例,ply.lex可以根据需要定义更复杂的词法规则。
阅读全文