xyjzsh

编译项目跟踪文档(三)

这里主要写一下“-”的处理。
词法分析阶段,我们可以把“-”解释成减号或者是表示是一个负数
那么怎么来区分这两种情况呢?
我的做法(有点投机取巧,个人感觉不是很好,可是又想不出更好的来,希望大家能给我更好的建议):

词法分析阶段,将所有所得的单词(Token)放到 m_tokens[]中。

如果碰到"-",将他解析成__SUB__TOKEN(减号),放到m_tokens[index1] = __SUB__TOKEN;

解析到数字单词(__NUM_TOKEN)时,判断它的前一个单词是否是__SUB__TOKEN.

1.如果是__SUB__TOKEN,则判断__SUB__TOKEN的前一个单词是否是(算术运算符:+,-,*,/以及是否是(,{,=)(*)
    
    1.1如果(*)中的任意一个则将前一个__SUB__TOKEN识别成负号,把当前的__NUM__TOKEN的值取反,并用__NUM_TOKEN覆盖它前面的__SUB_TOKEN.

    1.2 如果不是(*)中的任意一个,则认为前一个__SUB_TOKEN就是减号。

2.如果不是__SUB__TOKEN,不予处理。

不知道我又没有表述清楚,本来有一个流程图,可是不知道怎么贴过来,见谅!! 

posted on 2010-11-05 09:18 呆人 阅读(175) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜