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'{4,}"\n" {RET(3);} 19 'a'{6}"\n" {RET(4);} 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("A\n"); 33 do_scan("AA\n"); 34 do_scan("aAa\n"); 35 do_scan("AaaA\n"); 36 do_scan("Q"); 37 do_scan("AaaAa\n"); 38 do_scan("AaaAaA\n"); 39 do_scan("A"); 40 do_scan("\n"); 41 do_scan("0"); 42} 43