我正在用Java编写一个记号赋予器,它必须处理操作符,并且记号之间的空格字符不是必需的。
我需要将"<=“之类的东西识别为标记,同时还需要识别"<”和"=“。
现在我有:
if (token == '<')
if (nextToken == '=')
this.tokenList.add(27); // <=
else
// add 2 tokens separately有没有办法让StreamTokenizer自己来做这件事?我已经通读了API,但我什么也没看到。
我可以指定可以算作一个的令牌组合吗?理想情况下,getNextToken会一次删除两个令牌。
谢谢!
发布于 2015-06-18 15:26:29
StreamTokenizer是处理这种情况的非常基本的工具。
您可以创建自己的lookAhead函数来解决您的问题。
你读一个'<‘,然后调用你的前视,如果有'=’或没有-相应地采取行动
你可以使用堆栈来保存你之前的状态。
PS:对于更大的表达式,这会变得更加复杂,如果你想要更多的功能,你当然应该深入研究词法分析器和解析器
https://stackoverflow.com/questions/5709393
复制相似问题