【发布时间】:2014-04-12 14:52:22
【问题描述】:
我在学习jflex,写了一个最简单的jflex代码,生成单个字符#:
import com.intellij.lexer.FlexLexer;
import com.intellij.psi.tree.IElementType;
%%
%class PubspecLexer
%implements FlexLexer
%unicode
%type IElementType
%function advance
%debug
Comment = "#"
%%
{Comment} { System.out.println("Found comment!"); return PubTokenTypes.Comment; }
. { return PubTokenTypes.BadCharacter; }
然后我生成一个PubspecLexer 类,试试看:
public static void main(String[] args) throws IOException {
PubspecLexer lexer = new PubspecLexer(new StringReader("#!!!!!"));
for (int i = 0; i < 3; i++) {
IElementType token = lexer.advance();
System.out.println(token);
}
}
但它打印 3 nulls:
null
null
null
为什么它既不返回 Comment 也不返回 BadCharacter?
【问题讨论】:
标签: jflex