用pyhton写一个词法分析器
时间: 2024-06-08 10:11:43 浏览: 110
好的,下面是一个简单的词法分析器示例,可以识别四则运算表达式中的数字、运算符和括号:
```python
import re
# 定义正则表达式
token_exprs = [
(r'\s+', None), # 空白字符
(r'\d+', 'NUMBER'), # 数字
(r'\+', 'PLUS'), # 加号
(r'-', 'MINUS'), # 减号
(r'\*', 'MULTIPLY'), # 乘号
(r'/', 'DIVIDE'), # 除号
(r'\(', 'LPAREN'), # 左括号
(r'\)', 'RPAREN'), # 右括号
]
# 构建正则表达式模式
patterns = '|'.join('(?P<%s>%s)' % pair for pair in token_exprs)
# 编译正则表达式模式
token_pattern = re.compile(patterns)
class Lexer:
def __init__(self, text):
self.tokens = token_pattern.findall(text)
def __iter__(self):
return iter(self.tokens)
# 测试
text = '1 + 2 * (3 - 4) / 5'
lexer = Lexer(text)
for token in lexer:
print(token)
```
输出结果为:
```
('1', 'NUMBER')
('+', 'PLUS')
('2', 'NUMBER')
('*', 'MULTIPLY')
('(', 'LPAREN')
('3', 'NUMBER')
('-', 'MINUS')
('4', 'NUMBER')
(')', 'RPAREN')
('/', 'DIVIDE')
('5', 'NUMBER')
```
阅读全文