Ragel を使用して単純なレクサーを作成し、それを Java の有効なコードに出力しようとしていますが、生成されたコードはコンパイルされません。
私が使用している Lexer.rl は次のとおりです。
public class Lexer {
%%{
machine simple_lexer;
integer = ('+'|'-')?[0-9]+;
float = ('+'|'-')?[0-9]+'.'[0-9]+;
assignment = '=';
identifier = [a-zA-Z][a-zA-Z_]+;
main := |*
integer => { emit("integer"); };
float => { emit("float"); };
assignment => { emit("assignment"); };
identifier => { emit("identifier"); };
space => { emit("space"); };
*|;
}%%
%% write data;
public static void emit(String token) {
System.out.println(token);
}
public static void main(String[] args) {
%% write init;
%% write exec;
}
}
生成されたファイルとエラー出力は次の場所にあります: https://gist.github.com/3495276 (大きすぎてここに貼り付けられないため =S )
それで、私は何を間違っていますか?