如何捕获编译器的令牌

时间:2015-11-03 19:48:33

标签: compiler-construction token

我在创建自己的编译器时正在处理一大堆代码。我正在设置一个标记器来识别昏暗的[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]之间得到一个空白令牌,尽管我的预处理器取出了所有空白。

如果找到右方括号和逗号,我需要调整代码以使方括号匹配并接受令牌?

1 个答案:

答案 0 :(得分:0)

很容易理解为什么你会得到逗号的空白标记:在a[10]的右括号中添加一个标记,将temp变量设置为空白,然后然后在&#39;,&#39;您将刚刚覆盖的temp变量添加为新标记。

为什么不在循环中添加相同的后卫,因为你已经进一步下降了temp?