python编写程序,以文件形式文法输入统计终结符及非终结符
时间: 2024-10-11 21:17:18 浏览: 38
在Python中,你可以通过读取文本文件并解析其中的内容来统计文件中指定语言的语法中的终结符(Terminal symbols)和非终结符(Non-terminal symbols)。这里是一个简单的步骤说明:
1. **打开文件**:
使用内置的`open()`函数打开文件,如果文件不存在,可以加上`"r"`模式来创建它。
```python
with open('grammar_file.txt', 'r') as file:
content = file.read()
```
2. **定义终结符和非终结符**:
首先,你需要知道终结符和非终结符的列表或者正则表达式来匹配它们。假设你已经有了这两个列表。
```python
terminals = ['ID', 'STRING', ...] # 根据实际语言替换
non_terminals = ['S', 'expr', ...]
```
3. **统计次数**:
使用`content.split()`将文件内容分割成单词,然后遍历每个单词,检查是否在终结符或非终结符列表中,并累加计数。
```python
# 初始化计数器
terminal_count = {t: 0 for t in terminals}
non_terminal_count = {nt: 0 for nt in non_terminals}
for word in content.split():
if word in terminals:
terminal_count[word] += 1
elif word in non_terminals:
non_terminal_count[word] += 1
# 输出结果
print(f"终结符统计:{terminal_count}")
print(f"非终结符统计:{non_terminal_count}")
```
4. **保存到文件**:
如果需要,还可以将统计结果保存到一个新的文件中。
```python
with open('statistics_output.txt', 'w') as stats_file:
stats_file.write("终结符统计:\n")
for key, value in terminal_count.items():
stats_file.write(f"{key}: {value}\n")
stats_file.write("\n非终结符统计:\n")
for key, value in non_terminal_count.items():
stats_file.write(f"{key}: {value}\n")
```
阅读全文