词法分析感想

tktable保存单词 但要是找是否存在单词就得一个个遍历不方便

于是有了 tk_hashtable表 根据单词各个字母的ascll码值 用ELF_hash函数

找到相应表中位置,省去了遍历

tktable是用来保存单词,tk_hashtable是用来查询单词

词法分析初始化的时候

就把已定义的关键字和标点符号存于单词表

词法分析主程序

第一步就进行预处理

忽略掉空白字符,和制表符,换行符及注释

windows下文件换行符由 两个字符组成

\r\n

这个需要特别注意


解析标识符时

把标识符插入单词表tktable

用单词字符串tkstr存一下这个标识符拼写

用token 存一下 这个标识符的编码

编码就是 保存这个标识符的单词 在单词表tktable中位置

比如 int x1;

解析到x1

tkstr.data就存了 x1

token 存了x1在单词表中的位置


解析数字时

不用把数字插入单词表tktable

只是用 tkvalue存了一下这个数字的值

然后用 tkstr和sourcestr存了一下这个数字

并把 token 值设置为 TK_CINT


解析别的运算符 比如 '+'  '-'

都只是把token 设置成相应的 枚举值

然后就取下一个字符了


解析字符或字符串时

当取到 ' 或 "

因为字符是 '开头

字符串是 " 开头

就进行字符和字符串解析

tkstr存这个字符或字符串的拼写

把引号省略了

sourcestr则连引号也存

token值

字符取TK_CCHAR

字符串TK_CSTR

tkvalue 字符取相应的ascll码值

字符串不进行操作



sourcestr用在 get_tkstr(int v)函数

v 一般就是取 token值,就是当前的单词在单词表中编码位置

进行错误提示用 或 词法着色

返回 单词的拼写




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值