使用python将用户输入的基本块以三地址代码的形式进行输出
时间: 2024-03-06 07:48:59 浏览: 23
好的,以下是一个简单的Python程序,可以让用户输入基本块,并将其以三地址代码的形式进行输出:
```python
def basic_block_to_three_address_code(basic_block):
# 将基本块按行分割
lines = basic_block.strip().split('\n')
# 定义一个字典,用于存储变量名和对应的临时变量名
var_dict = {}
# 定义一个列表,用于存储输出的三地址代码
tac_list = []
# 遍历每一行基本块
for line in lines:
# 将行按空格分割,并去除首尾空格
tokens = line.strip().split(' ')
# 如果行中有两个操作数,则为赋值语句
if len(tokens) == 3:
# 如果第一个操作数不在字典中,则新建一个临时变量
if tokens[0] not in var_dict:
var_dict[tokens[0]] = 't{}'.format(len(var_dict) + 1)
# 将赋值语句转化为三地址代码,并添加到列表中
tac_list.append('{} = {}'.format(var_dict[tokens[0]], tokens[1]))
# 将新的变量名和对应的临时变量名保存到字典中
var_dict[tokens[2]] = var_dict[tokens[0]]
# 如果行中有三个操作数,则为算术表达式
elif len(tokens) == 4:
# 如果第一个操作数不在字典中,则新建一个临时变量
if tokens[0] not in var_dict:
var_dict[tokens[0]] = 't{}'.format(len(var_dict) + 1)
# 如果第二个操作数不在字典中,则使用原始的变量名
if tokens[1] not in var_dict:
var_dict[tokens[1]] = tokens[1]
# 如果第三个操作数不在字典中,则使用原始的变量名
if tokens[2] not in var_dict:
var_dict[tokens[2]] = tokens[2]
# 将算术表达式转化为三地址代码,并添加到列表中
tac_list.append('{} = {} {} {}'.format(var_dict[tokens[0]], var_dict[tokens[1]], tokens[2], var_dict[tokens[3]]))
# 将三地址代码列表转化为字符串,并返回
return '\n'.join(tac_list)
# 获取用户输入的基本块
basic_block = input("请输入基本块:\n")
# 将基本块转化为三地址代码,并输出
tac = basic_block_to_three_address_code(basic_block)
print("三地址代码:\n", tac)
```
运行程序后,用户可以在命令行中输入基本块,并按回车键确认,程序将输出该基本块的三地址代码形式的字符串。例如:
```
请输入基本块:
a = b+c
d = a+c
e = a+b
三地址代码:
t1 = b+c
a = t1
t2 = a+c
d = t2
t3 = a+b
e = t3
```
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)