FSA'ları değerlendirmek için Ragel ile çalışıyorum ve makinem girişin tamamlanmasını tamamladığında çalışan bir kullanıcı eylemi gömmek istiyorum. Makinenin kabul eden bir durumda olup olmadığına bakılmaksızın çalışabilmek için bu işleme ihtiyacım var. Ben gidiyorum Ne yapılacağını gösteren Ragel kılavuzunda alınan bu değiştirilmiş örnek var:Ragel EOF eylemleri nasıl çalışır
#include <string.h>
#include <stdio.h>
%%{
machine foo;
main := ('foo' | 'bar') 0 @{ res = 1; } $/{ finished = 1; };
}%%
%% write data;
int main(int argc, char **argv) {
int cs, res = 0, finished = 0;
if (argc > 1) {
char *p = argv[1];
char *pe = p + strlen(p) + 1;
char* eof = pe;
%% write init;
%% write exec;
}
printf("result = %i\n", res);
printf("finished = %i\n", finished);
return 0;
}
girdi 'foo' veya 'bar' ya olduğunda res 1 olabilmesi için bu örnek için Amacım olduğunu bitmiş ise 1 ne olursa olsun girdi. Ancak bunu çalışmak için alamıyorum - res 1 olduğunda, 1 ve res 0 olduğunda 0 görünüyor.
Herhangi bir yardım harika olurdu.