Compiler construction 如何为编译器捕获令牌
我正在编写一段代码,同时创建自己的编译器。我正在设置一个标记器,用标记a、b、10和12识别dim a[10]、b[12] 我试图让函数识别a、10、b和12作为令牌,代码如下:Compiler construction 如何为编译器捕获令牌,compiler-construction,token,Compiler Construction,Token,我正在编写一段代码,同时创建自己的编译器。我正在设置一个标记器,用标记a、b、10和12识别dim a[10]、b[12] 我试图让函数识别a、10、b和12作为令牌,代码如下: while (startPos < line.length()) { if (line[startPos] == '[' || line[startPos] == ']' || line[startPos] == ',') { token[tokenNumber] = temp;
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;
}
目前,我得到的令牌是正确的,但是,我得到了一个介于a[10],b[12]之间的空白令牌,尽管我的预处理器去掉了所有空白
当找到右方括号和逗号时,我需要如何调整代码才能使方括号匹配并接受标记?很容易看出为什么逗号会得到一个空标记:在[10]的右括号中添加一个标记,将temp变量设置为空,然后在“,'将just blanket temp变量添加为新标记 为什么不在循环中添加相同的保护,以防止温度变为空