【算法4-1】 将栈stack置空,置EOF为false Ch<-nextch(); while(not
EOF) k←kind(ch); if (k == (1) )
{ push( (2) ); push( (3) );} else if( k
== (4) ) if(not
empty()){ pop(); pop();) else{ 显示错误信息(缺少对应左括号或右括号): 显示行号row:显示列号col:) End
if End if Ch<-nextch(); end while if(not
empty()) 显示错误信息(缺少对应左括号或右括号): While(not
empty()){ row<-pop(); col<-pop(): 显示行号row:显示列号col;) End
while End
if 为了识别更多种类的括号,对【算法4-1】加以改进后得到【算法4-2】。【算法4-2】能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(charch)的参数及其对应的返回值如表1-12所示。 表1-12
函数kind(charch)的参数及其对应的返回值
ch
(
)
{
}
[
]
其他
返回值
1
2
3
4
5
6
7
【算法4-2】 将栈stack置空,置EOF为false Ch<-nextch(); while(not
EOF){ k<- kind(ch); if(k > 0)
if(判断条件1){ push( (5)
); push( (6)
); push( (7)
);} else if(判断条件2 and判断条件3){
pop();
pop();
pop();} else
{
显示错误信息(缺少对应左括号或右括号);
显示行号row;显示列号col;) end
if end if ch <-
nextch();) end while if(not empty()){
显示错误信息(缺少对应左括号或右括号); While(not empty()){
Pop(); row <- pop():
col <- pop();
显示行号row;显示列号col;)) end while end if