用python进行C语言的词法分析,展示代码
时间: 2024-09-23 20:02:25 浏览: 44
在Python中进行C语言的词法分析通常涉及到使用正则表达式或者第三方库如PLY (Python Lex-Yacc) 来解析源代码并识别其基本组成部分,即词素(tokens)。这里我将提供一个简单的例子,使用`re`模块来创建一个基础的词法分析器:
```python
import re
# 定义C语言的保留字和一些基本符号的正则表达式模式
reserved = {'if', 'else', 'for', 'while', 'int', 'char', 'void'} # 略去其他保留字
keywords = '|'.join(reserved)
identifiers = r'[a-zA-Z_][a-zA-Z0-9_]*'
operators = r'[-+*/%=<>!&|?:.]'
numbers = r'\d+(\.\d*)?([eE][-+]?\d+)?'
# 词法分析函数
def lexer(code):
tokens = []
for match in re.findall(r'(' + keywords + r'|' + identifiers + r'|' + numbers + r'|' + operators + r')', code, re.IGNORECASE):
if match in reserved:
token_type = 'keyword'
elif match.isidentifier():
token_type = 'identifier'
elif match.isdigit() or match.startswith('.') and match[1:].isdigit():
token_type = 'number'
else:
token_type = 'operator'
tokens.append((token_type, match))
return tokens
# 示例
code = """
int main()
{
int a = 5;
if (a > 0)
printf("Hello, World!");
return 0;
}
"""
print(lexer(code))
阅读全文