⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctx.b.c

📁 a little DFA compiler.
💻 C
字号:
/* Generated by re2c */#line 1 "ctx.b.re"#include <cstring>#include <iostream>struct Scanner{	Scanner(char *txt)		: cur(txt), lim(txt + strlen(txt))	{	}		char    *cur;	char    *lim;	char	*ptr;	char	*ctx;	char    *tok;};#define	YYCTYPE		char#define	YYCURSOR	s.cur#define	YYLIMIT		s.lim#define	YYMARKER	s.ptr#define	YYCTXMARKER	s.ctx#define	YYFILL(n)	enum What{	UNEXPECTED,	KEYWORD,	NUMBER,	EOI};char * tokens[] = { "UNEXPECTED", "KEYWORD", "NUMBER", "EOI" };int scan(Scanner &s){	YYCTYPE *cursor = s.cur;	if(cursor == s.lim)		return EOI;	std:	s.tok = cursor;{	static const unsigned char yybm[] = {		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		128, 128, 128, 128, 128, 128, 128, 128, 		128, 128,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 	};#line 85 "<stdout>"	{		YYCTYPE yych;		if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);		yych = *YYCURSOR;		if(yych <= ' ') {			if(yych <= 0x09) {				if(yych <= 0x08) goto yy9;				goto yy6;			} else {				if(yych <= 0x0A) goto yy8;				if(yych <= 0x1F) goto yy9;				goto yy6;			}		} else {			if(yych <= '9') {				if(yych <= '/') goto yy9;				goto yy4;			} else {				if(yych <= '`') goto yy9;				if(yych >= 'c') goto yy9;			}		}		YYCTXMARKER = YYCURSOR + 1;		++YYCURSOR;		if((yych = *YYCURSOR) <= '/') goto yy3;		if(yych == '1') goto yy15;		if(yych <= '9') goto yy12;yy3:#line 60 "ctx.b.re"		{		return UNEXPECTED;	}#line 119 "<stdout>"yy4:		++YYCURSOR;		yych = *YYCURSOR;		goto yy11;yy5:#line 50 "ctx.b.re"		{ return NUMBER;  }#line 127 "<stdout>"yy6:		++YYCURSOR;yy7:#line 53 "ctx.b.re"		{		if(s.cur == s.lim)			return EOI;		cursor = s.cur;		goto std;	}#line 138 "<stdout>"yy8:		yych = *++YYCURSOR;		goto yy7;yy9:		yych = *++YYCURSOR;		goto yy3;yy10:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;yy11:		if(yybm[0+yych] & 128) {			goto yy10;		}		goto yy5;yy12:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych <= '/') goto yy14;		if(yych <= '9') goto yy12;yy14:		YYCURSOR = YYCTXMARKER;#line 49 "ctx.b.re"		{ return KEYWORD; }#line 164 "<stdout>"yy15:		++YYCURSOR;		if((yych = *YYCURSOR) <= '/') goto yy16;		if(yych <= '9') goto yy12;yy16:		YYCURSOR = YYCTXMARKER;#line 48 "ctx.b.re"		{ return KEYWORD; }#line 173 "<stdout>"	}}#line 63 "ctx.b.re"}#define YYMAXFILL 3int main(int,char**){	Scanner s("a77 a1 b8 b1");		int t, n = 0;	while ((t = scan(s)) != EOI)	{		std::cout << (++n) << ": " << tokens[t] << " = \""; std::cout.write(s.tok, s.cur-s.tok); std::cout << "\"" << std::endl;	}}

⌨️ 快捷键说明

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