栈的应用之编译器检测语法错误

编译器检查程序的语法错误,但是常常由于缺少一个符号(如遗漏一个花括号或是注释起始符)引起编译器报错。在程序中,每个左方括号、左圆括号都有与之对应的右括号。一旦只有左右括号中的一种,编译器就报错。

下面我们就看看栈的在这里的应用:

我们这里只考虑圆括号、花括号、方括号,暂时忽略其他符号。

下面我们就给出算法设计思想:
首先我们需要给出一个空栈,然后把待检测的代码中的字符一一入栈,在入栈的过程中,如果字符是一个开放符号a(也就是我们的左括号),则把它压入栈中,如果是一个封闭符号(右括号)b,则此时先判断一下栈是否为空,如果为空的话,则报错(也就是待检测的代码中的括号不一一对应),如果栈不为空,则比较b和栈顶元素a,如果该封闭字符b和a字符匹配(也就是他们的括号能够匹配),则弹出栈顶元素,如果不匹配,则报错。当吧所有待检测的代码全部迭代完后,此时如果栈不为空,则报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值