1
我試圖用Ragel編寫一個簡單的Lexer,並將其輸出到Java有效代碼,但生成的代碼不能編譯。編譯由Ragel生成的Java代碼時出錯6.7
這裏的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)
所以,我究竟做錯了什麼?
你使用哪種版本Ragel的? 143行看起來很奇怪:'4'。當使用最新的ragel 6.7時,我沒有得到這個「4」。 –
我目前使用Ragel 6.2 –