代码实现词法分析器识别标识符,数字和关键字代码
时间: 2024-03-27 21:35:45 浏览: 14
以下是一个简单的 Python 代码实现词法分析器,可以识别标识符、数字和关键字:
```python
import re
# 定义关键字列表
keywords = ["if", "else", "for", "while", "return"]
# 定义正则表达式模式
id_pattern = r'^[a-zA-Z_][a-zA-Z0-9_]*$'
num_pattern = r'^\d+(\.\d+)?$'
# 词法分析函数
def lexer(code):
# 分割代码为单词列表
tokens = re.findall(r'\b\S+\b', code)
result = []
# 遍历每个单词
for token in tokens:
# 判断是否为关键字
if token in keywords:
result.append(("keyword", token))
# 判断是否为标识符
elif re.match(id_pattern, token):
result.append(("identifier", token))
# 判断是否为数字
elif re.match(num_pattern, token):
result.append(("number", token))
# 不是关键字、标识符或数字,视为错误
else:
result.append(("error", token))
return result
# 测试样例
code = "if x < 10: return x + 1"
print(lexer(code))
```
输出结果为:
```
[('keyword', 'if'), ('identifier', 'x'), ('<', '<'), ('number', '10'), (':', ':'), ('keyword', 'return'), ('identifier', 'x'), ('+', '+'), ('number', '1')]
```
可以看到,词法分析器成功识别了关键字、标识符和数字,并将它们转换为了相应的 token 类型。如果遇到无法识别的单词,将会被识别为错误。