LL(1)语法分析程序中打印预测分析表
时间: 2024-05-04 11:17:52 浏览: 116
以下是一个简单的 LL(1) 语法分析程序,其中包含打印预测分析表的代码:
```python
# 定义文法
grammar = {
'S': ['aA', 'bB'],
'A': ['c', ''],
'B': ['d', '']
}
# 计算预测分析表
predictive_table = {}
for non_terminal in grammar:
for production in grammar[non_terminal]:
first_set = set()
for symbol in production:
if symbol in grammar.keys():
first_set |= set(grammar[symbol][0])
if '' not in grammar[symbol]:
break
else:
first_set.add(symbol)
break
for symbol in first_set:
if symbol != '':
predictive_table[(non_terminal, symbol)] = production
# 打印预测分析表
print('Predictive parsing table:')
for non_terminal in grammar:
for terminal in predictive_table:
if terminal[0] == non_terminal:
print(f'({non_terminal}, {terminal[1]}) -> {predictive_table[terminal]}')
```
在这个程序中,我们首先定义了一个简单的文法。然后,我们计算预测分析表的内容,并将其存储在 `predictive_table` 中。最后,我们遍历 `predictive_table` 并打印出所有的产生式,以此展示预测分析表的内容。
阅读全文