欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

歪理更新

歪理更新

收集到每个记号的同时应该区分一下,尽可能的多积累一点信息,比如”while”跟”add”肯定是有区别的,在定义链表节点的时候最好能反映出这种区别:
struct _TOKEN
{
int     iTType;  // 记号具体类型
int     iTTypex; // 记号模糊类型
int    iLine;   // 记号所在行
char  *pStr;   // 记号字符串
_TOKEN  *pNext;   // 下一个记号
};
数字总是比字符串容易处理,iTType就是要把”for”与数字200对应起来,把”+”与数字43对应起来,我们把他们定义成宏,选几个典型的列出来:
#define TT_ADD      43      // +
#define TT_FOR      200     // for
#define TT_INT      250     // int
#define TT_NAME      300     // 变量名或函数名,因为现在还无法区别
#define TT_CONST    301     // 常数
“for”与”+”是有区别的,iTTypex就是要反映这种区别,也选典型的列出来:
#define TTEX_OP      1       // 运算符(+,-,>>,...)
#define TTEX_OPP    2       // 运算参数(变量,函数,常数)
#define TTEX_KW      3       // 保留字(if,while,...)
#define TTEX_DT      4       // 数据类型(int,void,...)
收集到一个记号的时候,就顺便把记号的iTType和iTTypex求出来,做到这点应该是很容易的.也许你还想支持”typedef”,”define”,”include”.建议第一次写不要去支持,编译器写完后可以再考虑这些问题.

注:读者自己应该知道记号链表怎么定义,我还是把我的思路写出来了,我想:能让读者用眼睛就能看明白最好,何必让他用脑子去想呢?
写程序的人应该都很注重代码的效率,如今cpu运行速度已经够快了,代码效率问题已经淡化了,为什么大家还这么重视效率呢?程序员在这点上都很明理,都知道cpu是为用户工作的,而不是给程序员去浪费的.那么写书的作者呢?作者该做的事情是把书尽量写好,尽量多为读者做一点,反正写都写了.
写教程的人不同,可以随意发挥.这里说明一下,以免误会.

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功