I have a struct, typedef struct { char* start_add; char* end_add;} string_def; I used the example from the documentation, #include <string.h>#include <stdio.h> %%{ machine foo; main := ( 'foo' | 'bar' ) 0 @{ res = 1; };}%% %% write data;
int main(){ int cs, res = 0; char *p = "foo"; char *pe = p + strlen(p) + 1; %% write init; %% write exec; printf("result = %i\n", res ); return 0;} This works fine : " result = 1" is the output. If I tweak this a little to work the way my struct is. extern string_def new_string(char* str, int len) { string_def s; s.start_add = str; s.end_add = str + len; return s;} int main(){ string_def str = new_string("foo\0", 4); ==> Works // string_def str = new_string("foo", 3); ==> does not work, I WANT THIS TO WORK int cs, res = 0; char *p = str.start_add; char *pe = str.end_add; %% write init; %% write exec; printf("result = %i\n", res ); return 0;} Is ragel looking for a null character? How to override this behavior??
_______________________________________________ ragel-users mailing list ragel-users@complang.org http://www.complang.org/mailman/listinfo/ragel-users