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 + -
显示快捷键?