StreamTokenizer.nextToken跳过太多token



我有下面的代码,它应该遍历每个标记,当指定的字符按顺序出现时,它意味着注释已经开始或结束。

我创建了最后一个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'跳过了太多的令牌。这可能吗?如果是这样,有没有办法解决这个问题?

如有任何帮助,不胜感激

。看起来你在结束令牌检测中有一个bug。您需要提供源文本。您的代码目前不能识别像cccc--->这样的结尾,因为它返回cccc—作为整个单词标记。

相关内容

  • 没有找到相关文章

最新更新