我在创建自己的编译器时正在处理一大堆代码。我正在设置一个标记器来识别昏暗的[10],b [12]并使用标记:a,b,10和12
我试图让函数将a,10,b和12识别为具有以下代码的标记:
while (startPos < line.length()) {
if (line[startPos] == '[' || line[startPos] == ']' || line[startPos] == ',') {
token[tokenNumber] = temp;
temp = "";
tokenNumber++;
}
else {
temp += line[startPos];
}
startPos++;
}
if (temp != "") {
token[tokenNumber] = temp;
tokenNumber++;
}
return tokenNumber;
}
目前,我得到的令牌是正确的,但是,我在[10],b [12]之间得到一个空白令牌,尽管我的预处理器取出了所有空白。
如果找到右方括号和逗号,我需要调整代码以使方括号匹配并接受令牌?
答案 0 :(得分:0)
很容易理解为什么你会得到逗号的空白标记:在a[10]
的右括号中添加一个标记,将temp
变量设置为空白,然后然后在&#39;,&#39;您将刚刚覆盖的temp
变量添加为新标记。
为什么不在循环中添加相同的后卫,因为你已经进一步下降了temp?