15 void test( const char *str )
20 const char *pe = str + strlen( str );
25 action d1 { cout << " d1"; }
26 action see_five { cout << " see_five"; }
28 see_five = ([0-9] when{c++ < 5} @d1)* '\n' @see_five;
30 action in_sequence { cout << " in_sequence"; }
31 action d2 { last = *p; cout << " d2"; }
32 in_sequence = ( [0-9] when { *p == last+1 } @d2 )* '\n' @in_sequence;
34 main := ( see_five | in_sequence ) ${cout << " |";};
38 if ( cs < foo_first_final )
45 test( "123456789012\n" ); // fails both
46 test( "123456789\n" ); // fails five
47 test( "1234\n" ); // fails five
48 test( "13245\n" ); // fails sequence
49 test( "12345\n" ); // succeeds in both
53 #ifdef _____OUTPUT_____
54 run: d1 d2 | d1 d2 | d1 d2 | d1 d2 | d1 d2 | d2 | d2 | d2 | d2 | failure
55 run: d1 d2 | d1 d2 | d1 d2 | d1 d2 | d1 d2 | d2 | d2 | d2 | d2 | in_sequence |
56 run: d1 d2 | d1 d2 | d1 d2 | d1 d2 | see_five in_sequence |
57 run: d1 d2 | d1 | d1 | d1 | d1 | see_five |
58 run: d1 d2 | d1 d2 | d1 d2 | d1 d2 | d1 d2 | see_five in_sequence |