用python编写一个程序,用于对C源程序进行括号匹配检查,并将检查结果输出到文件中。 程序应检查输入源程序中左右大括号、小括号的个数是否相等,并且符合C语言语法规定的括号嵌套规则,不得交叉嵌套。输入文件最长不超过500个字符。 本程序只检查括号是否匹配,不用对输入源程序中的其它语法成份进行检查。 【输入文件】 输入文件为当前目录下的check.in,是一段任意的C程序。 【输出文件】 输出文件为当前目录下的check.out。该文件只有一行,是一个单词"True"或"False"。如果没有括号匹配错误则输出"True",否则输出"False"。
时间: 2024-01-22 13:18:19 浏览: 73
以下是一个Python程序,用于对C源程序进行括号匹配检查,并将检查结果输出到文件中:
```python
def check_brackets(s):
stack = []
for c in s:
if c in '({[':
stack.append(c)
elif c in ')}]':
if not stack:
return False
if c == ')' and stack[-1] == '(':
stack.pop()
elif c == '}' and stack[-1] == '{':
stack.pop()
elif c == ']' and stack[-1] == '[':
stack.pop()
else:
return False
return not stack
with open('check.in', 'r') as f:
s = f.read()
result = check_brackets(s)
with open('check.out', 'w') as f:
f.write(str(result))
```
该程序定义了一个`check_brackets`函数,用于检查括号是否匹配。该函数使用一个栈来存储左括号,当遇到右括号时,从栈中弹出一个左括号,检查是否匹配。如果栈为空或者左右括号不匹配,则返回`False`。如果字符串遍历完毕后,栈为空,则表示所有括号都匹配,返回`True`。
程序读取当前目录下的`check.in`文件,调用`check_brackets`函数进行括号匹配检查,将结果写入当前目录下的`check.out`文件中。如果括号匹配则输出`True`,否则输出`False`。
阅读全文