diff options
Diffstat (limited to 'test/ragel.d/call3.rl')
-rw-r--r-- | test/ragel.d/call3.rl | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/test/ragel.d/call3.rl b/test/ragel.d/call3.rl deleted file mode 100644 index 416790d8..00000000 --- a/test/ragel.d/call3.rl +++ /dev/null @@ -1,122 +0,0 @@ -/* - * @LANG: obj-c - * @PROHIBIT_FLAGS: --var-backend - */ - -#include <stdio.h> -#include <string.h> - -#import <Foundation/Foundation.h> - -int num = 0; - -@interface CallTest : NSObject -{ -@public - /* State machine operation data. */ - int cs, top, stack[32]; -}; - -// Initialize the machine. Invokes any init statement blocks. Returns 0 -// if the machine begins in a non-accepting state and 1 if the machine -// begins in an accepting state. -- (void) initFsm; - -// Execute the machine on a block of data. Returns -1 if after processing -// the data, the machine is in the error state and can never accept, 0 if -// the machine is in a non-accepting state and 1 if the machine is in an -// accepting state. -- (void) executeWithData:(const char *)data len:(int)len; - -// Indicate that there is no more data. Returns -1 if the machine finishes -// in the error state and does not accept, 0 if the machine finishes -// in any other non-accepting state and 1 if the machine finishes in an -// accepting state. -- (int) finish; - -@end - -@implementation CallTest - -%%{ - machine CallTest; - - action check_num { - if ( num & 1 ) - fcall odd; - else - fcall even; - } - - # Test call and return functionality. - even := 'even' any @{fhold; fret;}; - odd := 'odd' any @{fhold; fret;}; - num = [0-9]+ ${ num = num * 10 + (fc - '0'); }; - even_odd = num ' ' @check_num "\n"; - - # Test calls in out actions. - fail := !(any*); - out_acts = 'OA ok\n' | - 'OA error1\n' | - 'OA error2\n'; - - main := even_odd | out_acts; -}%% - -%% write data; - -- (void) initFsm; -{ - num = 0; - %% write init; -} - -- (void) executeWithData:(const char *)data len:(int)len; -{ - const char *p = data; - const char *pe = data + len; - %% write exec; -} - -- (int) finish; -{ - if ( cs == CallTest_error ) - return -1; - return ( cs >= CallTest_first_final ) ? 1 : 0; -} - -@end - -#define BUFSIZE 1024 - -void test( char *buf ) -{ - CallTest *test = [[CallTest alloc] init]; - [test initFsm]; - [test executeWithData:buf len:strlen(buf)]; - if ( [test finish] > 0 ) - printf( "ACCEPT\n" ); - else - printf( "FAIL\n" ); -} - -int main() -{ - test( "78 even\n" ); - test( "89 odd\n" ); - test( "1 even\n" ); - test( "0 odd\n" ); - test( "OA ok\n" ); - test( "OA error1\n" ); - test( "OA error2\n" ); - return 0; -} - -##### OUTPUT ##### -ACCEPT -ACCEPT -FAIL -FAIL -ACCEPT -ACCEPT -ACCEPT |