编译器括号检查原理(C)

本文介绍了编译器如何进行括号检查,通过举例解释了括号匹配的过程,如'{[]}'。程序首先压入'{',然后逐个比较输入的符号,确保每个开括号有相应的闭括号匹配。最后,通过检查栈中元素数量来判断括号是否一一对应。文章以C语言实现为背景。
摘要由CSDN通过智能技术生成

编译器括号检查原理:
比如输入:{[]}
程序处理:
1.先压入‘{‘,现在栈为‘{’【这里表示栈内容的时候,是从栈底元素开始写,从左到右表示栈底到栈顶的元素】;
2.取出栈顶元素’{‘,判断输入的第二个符号’[‘是否能与’}‘匹配,判断结果是不匹配;
3.将‘{[’压入栈,现在栈为’{[‘;
4.取出栈顶元素’[‘,判断输入的第三个符号’]‘是否能与’[‘匹配,判断结果是匹配的,现在栈为’{‘
5.取出栈顶元素’{‘,判断输入的第四个符号’}‘是否能与’{‘匹配,判断结果是匹配的,现在栈为空
6.输入的4个符号已经判断完了,接下来判断栈的里边元素的个数,如果元素的个数为0,则说明括号是一一对应的;如果元数的个数不为0,则说明括号不是完全对应的。

C语言实现

#include <stdio.h>
#include <stdlib.h>

#define STACK_INIT_SIZE 20
#define STACKINCREMENT  10

typedef char ElemType;
typedef struct
{
    ElemType *base;
    ElemType *top;
    int stackSize;
}sqStack;

InitStack(sqStack *s)
{
    s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值