C专家编程 第3章 分析C语言的声明 3.8 理解所有分析过程的代码段

    主要的数据结构是一个堆栈,我们从左向右读取,把各个标记依次压入堆栈,直到读到标识符为止然后我们继续向右读入一个标记,也就是标识符右边的那个标记。接着,观察标识符左边的那个标记(需要从堆栈中弹出)。    

struct token {
    char type; 
    char string[MAXTOKENLEN];
};

/*保存第一个标识之前的所有标记*/
struct token stack[MAXTOKENS];

/*保存刚读入的那个标记*/
struct token this;

/*伪码如下:
实用程序-------------*/
classify_string(字符串分类)
    /*
     *查看当前的标记,
     *通过this.type返回一个值,内容为"type"(类型),
     *"qualifier"(限定符)或"identifier"标识符 
     */
gettoken(取标记);
    /*
    *把下一个标记读入this.string
        *如果是字母数字组合,调用classify_string
        *否则,它必是一个单字符标记,this.type = 该标记;
         *用一个nul结束this.string 
    */
read_to_first_identifier(读至第一个标识符)
    /*
     *调用gettoken,并把标记压入到堆栈中,直到遇到第一个标识符
     *Print"identifier is"(标识符是), this.string
     *继续调用gettoken
     */
//解析程序 
deal_with_function_args(处理函数参数)
    //当读取越过右括号')'后,打印"函数返回" 
deal_with_arrays(处理函数数组)
    //当你读取"[size]"后,将其打印并继续向右读取。
deal_with_any_pointers(处理任何指针)
    //当你从堆栈中读取"*"时,打印"指向...的指针"并将其弹出堆栈。
deal_with_declarator(处理声明器)
    if this.type is '[' deal_with_arrays
    if this.type is '(' deal_with_function_args
    deal_with_any_pointers
    while 堆栈里还有东西
    if 它是一个左括号'('
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40186813

你的能量无可限量。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值