这里主要写一下“-”的处理。
在
词法分析阶段,我们可以把“-”解释成
减号或者是表示是
一个负数。
那么怎么来区分这两种情况呢?
我的做法(有点投机取巧,个人感觉不是很好,可是又想不出更好的来
,希望大家能给我更好的建议):
词法分析阶段,将所有所得的单词(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,不予处理。
不知道我又没有表述清楚,本来有一个流程图,可是不知道怎么贴过来,见谅!!