0

如何使 StreamTokenizer 将与数字混合的字符识别为单词?

我目前正在开发一个使用逆波兰表示法的计算器。一切正常,除非StreamTokenizer遇到类似354aor的东西1b。我在这里想要的是,StreamTokenizer将其视为一个词,而不是一个数字后跟一个词。这是我的代码:

sT = new StreamTokenizer(f);
sT.resetSyntax();
sT.eolIsSignificant(false);
sT.wordChars('a', 'z');
sT.wordChars('A', 'Z');
sT.whitespaceChars(32, 32);
sT.parseNumbers();

while (sT.ttype != StreamTokenizer.TT_EOF){
    int ttype = sT.ttype;
if (ttype == StreamTokenizer.TT_NUMBER) {
      calc.empile(sT.nval);
}       
else{
  if (!calc.stack.isEmpty()) {
    switch (ttype) {
    case '+':
          calc.plus();
      break;
    case '-':
      calc.moins();
      break;
    case '*':
      calc.mult();
      break;
    case '/':
      calc.div();
      break;
      }
    }
  }
  sT.nextToken();
}
4

1 回答 1

0

有这个答案:StreamTokenizer 将 001_to_003 分成两个令牌;我怎样才能防止它这样做?

但我认为你可以这样做:我如何从 StreamTokenizer 中回避 TT_NUMBER

...然后尝试通过迭代结果来解析你的双打或整数。

希望对您有所帮助,尽管您的问题在这里没有明确的答案...

于 2013-05-13T17:21:59.270 回答