对C语言中复杂声明符(declarator)的递归解析程序的简易实现

  C语言本身因为声明的语法问题而经常遭人诟病,在情况比较复杂时,容易让人混淆,因为C语言的声明不能从左至右阅读,而且使用了太多的圆括号来保证正确的结合顺序。

  下面将实现两个程序,一个程序用于将正确的C语言声明转换为文字描述,另一个程序完成相反的转换。文字描述是从左至右阅读的。通过程序的实现原理可以了解编译器在解析复杂声明时到底做了什么。

  第一个程序dcl,将C语言的声明转换为文字描述,如:

  char **argv

    argv: pointer to pointer to char

  int (*daytab)[13]

    daytab:pointer to array[13] of int

  char (*(*x[3])() )[5]

    x: array[3] of pointer to function returning pointer to array[5] of char

  程序dcl的核心是两个函数:dcl与dirdcl,它们根据声明符的语法对声明进行分析,因为语法是递归定义的,所以在识别一个声明的组成部分时,这两个函数是相互递归调用的。

  草稿继续。。。

  

转载于:https://www.cnblogs.com/liyou_blog/archive/2010/09/01/1814653.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值