词法分析器python代码
时间: 2024-04-14 12:24:19 浏览: 189
词法分析器是编译原理中的一个重要组成部分,用于将源代码分解成一个个的词法单元(token)。下面是一个简单的词法分析器的Python代码示例:
```python
import re
# 定义词法单元的正则表达式规则
token_patterns = [
(r'[\+\-\*/]', 'OPERATOR'), # 运算符
(r'\d+', 'NUMBER'), # 数字
(r'\w+', 'IDENTIFIER'), # 标识符
(r'\s+', None), # 空白字符
]
# 定义词法分析器函数
def lexer(code):
tokens = []
while code:
match = None
for pattern, token_type in token_patterns:
regex = re.compile(pattern)
match = regex.match(code)
if match:
value = match.group(0)
if token_type:
tokens.append((value, token_type))
break
if not match:
raise ValueError(f"Invalid syntax: {code}")
code = code[match.end():]
return tokens
# 测试词法分析器
code = "x = 10 + y * 5"
tokens = lexer(code)
for token in tokens:
print(token)
```
上述代码中,我们首先定义了一系列的正则表达式规则,用于匹配不同类型的词法单元。然后,通过`lexer`函数对输入的源代码进行词法分析,将每个词法单元及其类型存储在一个列表中,并返回该列表。最后,我们对示例代码进行了测试,并打印出词法分析结果。
阅读全文