diff options
Diffstat (limited to 'test/ragel.d/repetition.rl')
-rw-r--r-- | test/ragel.d/repetition.rl | 292 |
1 files changed, 0 insertions, 292 deletions
diff --git a/test/ragel.d/repetition.rl b/test/ragel.d/repetition.rl deleted file mode 100644 index 1734af24..00000000 --- a/test/ragel.d/repetition.rl +++ /dev/null @@ -1,292 +0,0 @@ -/* - * @LANG: c++ - */ - -/* Test repeptition operators. */ - -#include <iostream> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -using namespace std; - -struct Rep -{ - int cs; - - int init( ); - int execute( const char *data, int len ); - int finish( ); -}; - -%%{ - machine Rep; - - action begin { cout << "begin" << endl; } - action in { cout << "in" << endl; } - action end { cout << "end" << endl; } - - a = 'a' >begin @in %end; - b = 'b' >begin @in %end; - c = 'c' >begin @in %end; - d = 'd' >begin @in %end; - - main := - ( a {5} '\n' )* '-\n' - ( b {,5} '\n' )* '-\n' - ( c {5,} '\n' )* '-\n' - ( d {2,5} '\n' )*; -}%% - -%% write data; - -int Rep::init( ) -{ - %% write init; - return 1; -} - -int Rep::execute( const char *_data, int _len ) -{ - const char *p = _data; - const char *pe = _data+_len; - - %% write exec; - - if ( cs == Rep_error ) - return -1; - if ( cs >= Rep_first_final ) - return 1; - return 0; -} - -int Rep::finish( ) -{ - if ( cs == Rep_error ) - return -1; - if ( cs >= Rep_first_final ) - return 1; - return 0; -} - -void test( const char *buf ) -{ - Rep rep; - int len = strlen( buf ); - rep.init(); - rep.execute( buf, len ); - if ( rep.finish() > 0 ) - printf("ACCEPT\n"); - else - printf("FAIL\n"); -} - -int main() -{ - test( - "aaaaa\n" - "-\n" - "\n" - "b\n" - "bb\n" - "bbb\n" - "bbbb\n" - "bbbbb\n" - "-\n" - "ccccc\n" - "ccccccc\n" - "cccccccccc\n" - "-\n" - "dd\n" - "ddd\n" - "dddd\n" - "ddddd\n" - ); - - test( - "a\n" - "-\n" - "b\n" - "-\n" - "c\n" - "-\n" - "d\n" - ); - - return 0; -} - -##### OUTPUT ##### -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -begin -in -end -ACCEPT -begin -in -FAIL |