summaryrefslogtreecommitdiff
path: root/test/rlhc.d/case/erract4.m-C-F0--var-backend.exp
diff options
context:
space:
mode:
Diffstat (limited to 'test/rlhc.d/case/erract4.m-C-F0--var-backend.exp')
-rw-r--r--test/rlhc.d/case/erract4.m-C-F0--var-backend.exp250
1 files changed, 250 insertions, 0 deletions
diff --git a/test/rlhc.d/case/erract4.m-C-F0--var-backend.exp b/test/rlhc.d/case/erract4.m-C-F0--var-backend.exp
new file mode 100644
index 00000000..998a60b2
--- /dev/null
+++ b/test/rlhc.d/case/erract4.m-C-F0--var-backend.exp
@@ -0,0 +1,250 @@
+#include <stdio.h>
+#include <Foundation/Foundation.h>
+
+#define IDENT_BUFLEN 256
+
+@interface ErrAct : NSObject
+{
+ @public
+ int cs;
+};
+
+// 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.
+- (int) 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 ErrAct
+
+
+
+static const char _ErrAct_actions [] = { 0, 1, 0, 1, 1, 2, 1, 0, 0 , };
+static const char _ErrAct_trans_keys [] = { 0, 3, 0, 0, 0, 2, 0, 4, 0, 4, 0, 5, 0, 0, 0 , };
+static const char _ErrAct_char_class [] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 4, 1, 1, 5, 0 , };
+static const char _ErrAct_index_offsets [] = { 0, 4, 5, 8, 13, 18, 24, 0 , };
+static const char _ErrAct_indicies [] = { 1, 0, 0, 2, 4, 1, 0, 5, 1, 0, 0, 0, 6, 1, 0, 0, 0, 7, 1, 0, 0, 0, 0, 8, 9, 0 , };
+static const char _ErrAct_index_defaults [] = { 0, 3, 0, 0, 0, 0, 0, 0 , };
+static const char _ErrAct_trans_cond_spaces [] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0 , };
+static const char _ErrAct_cond_targs [] = { 1, 1, 2, 1, 1, 3, 4, 5, 6, 0, 0 , };
+static const char _ErrAct_cond_actions [] = { 1, 5, 0, 0, 3, 0, 0, 0, 0, 3, 0 , };
+static const char _ErrAct_eof_actions [] = { 0, 0, 1, 1, 1, 1, 1, 0 , };
+static const char _ErrAct_nfa_targs [] = { 0, 0 , };
+static const char _ErrAct_nfa_offsets [] = { 0, 0, 0, 0, 0, 0, 0, 0 , };
+static const char _ErrAct_nfa_push_actions [] = { 0, 0 , };
+static const char _ErrAct_nfa_pop_trans [] = { 0, 0 , };
+static const int ErrAct_start = 0;
+static const int ErrAct_first_final = 0;
+static const int ErrAct_error = -1;
+static const int ErrAct_en_main = 0;
+- (int) initFsm;
+{
+
+ {
+ cs = ( int ) ErrAct_start;
+ }
+ return 1;
+}
+
+- (void) executeWithData:(const char *)_data len:(int)_len;
+{
+ const char *p = _data;
+ const char *pe = _data + _len;
+ const char *eof = pe;
+
+ {
+ unsigned int _trans = 0;
+ unsigned int _have = 0;
+ unsigned int _cont = 1;
+ const char *_acts;
+ unsigned int _nacts;
+ const char *_keys;
+ const char *_inds;
+ while ( _cont == 1 )
+ {
+
+ _have = 0;
+ if ( p == pe )
+ {
+ if ( p == eof )
+ {
+ if ( _have == 0 )
+ {
+ const char *__acts;
+ unsigned int __nacts;
+ __acts = _ErrAct_actions + _ErrAct_eof_actions[cs];
+ __nacts = ( unsigned int ) (*( __acts ))
+ ;
+ __acts += 1;
+ while ( __nacts > 0 )
+ {
+ switch ( (*( __acts ))
+ ) {
+ case 0 :
+ {
+ printf("hello fails\n");
+ }
+
+ break;
+
+ }
+ __nacts -= 1;
+ __acts += 1;
+ }
+
+ }
+
+ }
+
+
+ if ( _have == 0 )
+ _cont = 0;
+
+ }
+
+ if ( _cont == 1 )
+ {
+ if ( _have == 0 )
+ {
+ _keys = _ErrAct_trans_keys + (cs<<1);
+ _inds = _ErrAct_indicies + _ErrAct_index_offsets[cs];
+ if ( ((*( p ))
+ )<= 111 && ((*( p ))
+ )>= 10 )
+ {
+ int _ic = ( int ) _ErrAct_char_class[( int ) ((*( p ))
+ )- 10];
+ if ( _ic <= ( int ) (*( _keys+1 ))
+ && _ic >= ( int ) (*( _keys ))
+ )
+ _trans = ( unsigned int ) (*( _inds + ( int ) (_ic - ( int ) (*( _keys ))
+ ) ))
+ ;
+
+ else
+ _trans = ( unsigned int ) _ErrAct_index_defaults[cs];
+
+ }
+
+ else
+ {
+ _trans = ( unsigned int ) _ErrAct_index_defaults[cs];
+ }
+
+
+ }
+
+ if ( _cont == 1 )
+ {
+ cs = ( int ) _ErrAct_cond_targs[_trans];
+ if ( _ErrAct_cond_actions[_trans]!= 0 )
+ {
+ _acts = _ErrAct_actions + _ErrAct_cond_actions[_trans];
+ _nacts = ( unsigned int ) (*( _acts ))
+ ;
+ _acts += 1;
+ while ( _nacts > 0 )
+ {
+ switch ( (*( _acts ))
+ ) {
+ case 0 :
+ {
+ printf("hello fails\n");
+ }
+
+ break;
+ case 1 :
+ {
+ printf("newline\n");
+ }
+
+ break;
+
+ }
+ _nacts -= 1;
+ _acts += 1;
+ }
+
+ }
+
+
+ if ( _cont == 1 )
+ p += 1;
+
+ }
+ }
+
+ }
+
+ }
+}
+
+- (int) finish;
+{
+ if ( cs == ErrAct_error )
+ return -1;
+ else if ( cs >= ErrAct_first_final )
+ return 1;
+ return 0;
+}
+
+@end
+
+#include <stdio.h>
+#include <string.h>
+#define BUFSIZE 2048
+
+ErrAct *fsm;
+char buf[BUFSIZE];
+
+void test( char *buf )
+{
+ int len = strlen(buf);
+ fsm = [[ErrAct alloc] init];
+
+ [fsm initFsm];
+ [fsm executeWithData:buf len:len];
+ if ( [fsm finish] > 0 )
+ printf("ACCEPT\n");
+ else
+ printf("FAIL\n");
+}
+
+
+int main()
+{
+ test(
+ "hello\n"
+ "hello\n"
+ "hello\n"
+ );
+
+ test(
+ "hello\n"
+ "hello\n"
+ "hello there\n"
+ );
+
+ test(
+ "hello\n"
+ "hello\n"
+ "he" );
+
+ test( "" );
+
+ return 0;
+}
+