我有以下代码,应该遍历每个令牌,当指定的字符按顺序出现时,表示评论已经开始或结束。
如果位置不在注释之间,我创建了最后一个if语句来执行某些代码。
int commentFound = -1;
int commentEnded = -1;
do {
int token = st.nextToken();
switch (token) {
case StreamTokenizer.TT_EOF:
System.out.println("End of File encountered.");
eof = true;
default:
if ((token == '<')) {
System.out.println(st.sval);
if (st.nextToken() == '!') {
System.out.println(st.sval);
if (st.nextToken() == '-') {
if (st.nextToken() == '-') {
if (st.nextToken() == '-') {
System.out.println("Comment Found on line number: " + st.lineno());
commentFound = st.lineno();
}
}
}
}
}
else if ((token == '-')) {
if (st.nextToken() == '-') {
if (st.nextToken() == '-') {
if (st.nextToken() == '>') {
System.out.println("Comment Ended on: " + st.lineno());
commentEnded = st.lineno();
}
}
}
}
if ((commentFound != -1) && !((st.lineno() > commentFound) && (st.lineno() < commentEnded))) {
始终会找到评论开始标记,但并不总是找到结束标记。经过一些调试后,我想我发现'nextToken'正在跳过太多的令牌。这可能吗 ?如果是这样,有没有办法解决这个问题?
非常感谢任何帮助
答案 0 :(得分:0)
。看起来您在结束令牌检测中存在错误。您需要提供源文本。
您的代码当前无法识别为此cccc--->
,因为它将cccc ---作为整个单词标记返回。