bug1390174.c

来自「a little DFA compiler.」· C语言 代码 · 共 92 行

C
92
字号
/* Generated by re2c */#line 1 "bug1390174.re"#include <stdlib.h>#include <stdio.h>#include <string.h>#define RET(n) return nint scan(const char *s, int l) {const char *p = s;const char *q;#define YYCTYPE         char#define YYCURSOR        p#define YYLIMIT         (s+l)#define YYMARKER        q#define YYFILL(n)#line 19 "<stdout>"{	YYCTYPE yych;	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);	yych = *YYCURSOR;	switch(yych) {	case 0x0A:	goto yy4;	case 'A':	case 'a':	goto yy2;	default:	goto yy6;	}yy2:	yych = *(YYMARKER = ++YYCURSOR);	switch(yych) {	case 0x0A:	goto yy7;	case 'A':	case 'a':	goto yy8;	default:	goto yy3;	}yy3:#line 19 "bug1390174.re"	{RET(0);}#line 42 "<stdout>"yy4:	++YYCURSOR;yy5:#line 18 "bug1390174.re"	{RET(1);}#line 48 "<stdout>"yy6:	yych = *++YYCURSOR;	goto yy3;yy7:	yych = *++YYCURSOR;	goto yy5;yy8:	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;	switch(yych) {	case 0x0A:	goto yy7;	case 'A':	case 'a':	goto yy8;	default:	goto yy10;	}yy10:	YYCURSOR = YYMARKER;	goto yy3;}#line 20 "bug1390174.re"}void _do_scan(int exp, const char * str, int len){	int ret = scan(str, len);		printf("%d %s %d\n", exp, exp == ret ? "==" : "!=", ret);}#define do_scan(exp, str) _do_scan(exp, str, sizeof(str) - 1)main(){	do_scan(1, "a\n");	do_scan(1, "aa\n");	do_scan(1, "aaa\n");	do_scan(1, "aaaa\n");	do_scan(1, "\n");	do_scan(0, "q");	do_scan(0, "a");}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?