1#include <stdlib.h> 2#include <stdio.h> 3#include <string.h> 4 5#define RET(n) printf("%d\n", n); return n 6 7int scan(char *s, int l){ 8char *p = s; 9char *q; 10#define YYCTYPE char 11#define YYCURSOR p 12#define YYLIMIT (s+l) 13#define YYMARKER q 14#define YYFILL(n) 15/*!re2c 16 'a'{1}"\n" {RET(1);} 17 'a'{2,3}"\n" {RET(2);} 18 'a'{6}"\n" {RET(4);} 19 'a'{4,}"\n" {RET(3);} 20 [^aq]|"\n" {RET(0);} 21*/ 22} 23 24#define do_scan(str) scan(str, strlen(str)) 25 26main() 27{ 28 do_scan("a\n"); 29 do_scan("aa\n"); 30 do_scan("aaa\n"); 31 do_scan("aaaa\n"); 32 do_scan("q"); 33 do_scan("a"); 34 do_scan("A\n"); 35 do_scan("AA\n"); 36 do_scan("aAa\n"); 37 do_scan("AaaA\n"); 38 do_scan("Q"); 39 do_scan("AaaAa\n"); 40 do_scan("AaaAaA\n"); 41 do_scan("A"); 42 do_scan("\n"); 43 do_scan("0"); 44} 45