diff options
Diffstat (limited to 'test/ragel.d/genrep7.rl')
-rw-r--r-- | test/ragel.d/genrep7.rl | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/test/ragel.d/genrep7.rl b/test/ragel.d/genrep7.rl deleted file mode 100644 index a535e201..00000000 --- a/test/ragel.d/genrep7.rl +++ /dev/null @@ -1,121 +0,0 @@ -/* - * @LANG: c - */ - -#include <stddef.h> -#include <stdint.h> -#include <stdlib.h> -#include <stdbool.h> -#include <string.h> -#include <stdio.h> - -const char s[4096]; - -struct nfa_stack -{ - void *data; - unsigned long sz; -}; - -struct nfa_bp_rec -{ - long state; - const char *p; - long popTrans; - long q_2; -}; - -%%{ - machine genrep; - alphtype unsigned char; - - action eol { p+1 == eof } - eol = '' %when eol; - - action psh - { - nfa_bp[nfa_len].q_2 = q_2; - } - - action pop - { ({ - q_2 = nfa_bp[nfa_len].q_2; - 1; - }) } - - action ini_2 { - ({ q_2 = 0; 1; }) - } - - action stay_2 { - ({ 1; }) - } - - action repeat_2 { - ({ ++q_2 < 3; }) - } - - action exit_2 { - ({ ++q_2 >= 2; }) - } - - - # This one should print mulitple matches because it should finish in a - # non-final state, triggering NFA pop. - main := - ( :nfa( ( 'a' ) , psh, pop, ini_2, stay_2, repeat_2, exit_2 ): ) {2} - '|x' >{ printf( "------ MATCH\n" ); }; - - write data; -}%% - -int test( const char *p ) -{ - int len = strlen( p ); - const char *pe = p + len; - const char *eof = pe; - int cs; - - struct nfa_bp_rec *nfa_bp = (struct nfa_bp_rec*) s; - long nfa_len = 0; - long nfa_count = 0; - - long q_2 = 0; - - printf( "testing: %s\n", p ); - - %%{ - machine genrep; - write init; - write exec; - }%% - - return 0; -} - -int main() -{ - test( "a|" ); - test( "aa|" ); - test( "aaa|" ); - test( "aaaa|" ); - test( "aaaaa|" ); - test( "aaaaaa|" ); - test( "aaaaaaa|" ); - test( "aaaaaaaa|" ); - return 0; -} - -###### OUTPUT ###### -testing: a| -testing: aa| -testing: aaa| -testing: aaaa| ------- MATCH -testing: aaaaa| ------- MATCH ------- MATCH -testing: aaaaaa| ------- MATCH -testing: aaaaaaa| -testing: aaaaaaaa| |