mirror of https://github.com/yasm/yasm.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
733 B
42 lines
733 B
#include <stdlib.h> |
|
#include <stdio.h> |
|
#include <string.h> |
|
|
|
#define RET(n) printf("%d\n", n); return n |
|
|
|
int scan(char *s, int l){ |
|
char *p = s; |
|
char *q; |
|
#define YYCTYPE char |
|
#define YYCURSOR p |
|
#define YYLIMIT (s+l) |
|
#define YYMARKER q |
|
#define YYFILL(n) |
|
/*!re2c |
|
'a'{1}"\n" {RET(1);} |
|
'a'{2,3}"\n" {RET(2);} |
|
'a'{4,}"\n" {RET(3);} |
|
'a'{6}"\n" {RET(4);} |
|
[^aq]|"\n" {RET(0);} |
|
*/ |
|
} |
|
|
|
#define do_scan(str) scan(str, strlen(str)) |
|
|
|
main() |
|
{ |
|
do_scan("a\n"); |
|
do_scan("aa\n"); |
|
do_scan("aaa\n"); |
|
do_scan("aaaa\n"); |
|
do_scan("A\n"); |
|
do_scan("AA\n"); |
|
do_scan("aAa\n"); |
|
do_scan("AaaA\n"); |
|
do_scan("Q"); |
|
do_scan("AaaAa\n"); |
|
do_scan("AaaAaA\n"); |
|
do_scan("A"); |
|
do_scan("\n"); |
|
do_scan("0"); |
|
}
|
|
|