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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/m0_37884977/article/details/80483155