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

📄 calc_004.c

📁 a little DFA compiler.
💻 C
字号:
/* Generated by re2c */#line 1 "calc_004.re"/* re2c lesson 001_upn_calculator, calc_004, (c) M. Boerger 2006 - 2007 */#line 20 "calc_004.re"#include <stdlib.h>#include <stdio.h>#include <string.h>char * tokendup(const char *t, const char *l){	size_t n = l -t + 1;	char *r = (char*)malloc(n);		memmove(r, t, n-1);	r[n] = '\0';	return r;}int scan(char *s, int l){	char *p = s;	char *q = 0;	char *t;#define YYCTYPE         char#define YYCURSOR        p#define YYLIMIT         (s+l+2)#define YYMARKER        q#define YYFILL(n)		{ printf("OOD\n"); return 2; }		for(;;)	{		t = p;#line 36 "<stdout>"		{			YYCTYPE yych;			if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);			yych = *YYCURSOR;			switch(yych) {			case 0x00:	goto yy9;			case '+':	goto yy5;			case '-':	goto yy7;			case '0':	goto yy2;			case '1':			case '2':			case '3':			case '4':			case '5':			case '6':			case '7':			case '8':			case '9':	goto yy4;			default:	goto yy11;			}yy2:			++YYCURSOR;			switch((yych = *YYCURSOR)) {			case '0':			case '1':			case '2':			case '3':			case '4':			case '5':			case '6':			case '7':			case '8':			case '9':	goto yy15;			default:	goto yy3;			}yy3:#line 57 "calc_004.re"			{ t = tokendup(t, p); printf("Num: %s\n", t); free(t); continue; }#line 76 "<stdout>"yy4:			yych = *++YYCURSOR;			goto yy14;yy5:			++YYCURSOR;#line 58 "calc_004.re"			{ printf("+\n");	continue; }#line 84 "<stdout>"yy7:			++YYCURSOR;#line 59 "calc_004.re"			{ printf("+\n");	continue; }#line 89 "<stdout>"yy9:			++YYCURSOR;#line 60 "calc_004.re"			{ printf("EOF\n");	return 0; }#line 94 "<stdout>"yy11:			++YYCURSOR;#line 61 "calc_004.re"			{ printf("ERR\n");	return 1; }#line 99 "<stdout>"yy13:			++YYCURSOR;			if(YYLIMIT == YYCURSOR) YYFILL(1);			yych = *YYCURSOR;yy14:			switch(yych) {			case '0':			case '1':			case '2':			case '3':			case '4':			case '5':			case '6':			case '7':			case '8':			case '9':	goto yy13;			default:	goto yy3;			}yy15:			++YYCURSOR;			if(YYLIMIT == YYCURSOR) YYFILL(1);			yych = *YYCURSOR;			switch(yych) {			case '0':			case '1':			case '2':			case '3':			case '4':			case '5':			case '6':			case '7':			case '8':			case '9':	goto yy15;			default:	goto yy17;			}yy17:#line 56 "calc_004.re"			{ t = tokendup(t, p); printf("Oct: %s\n", t); free(t); continue; }#line 138 "<stdout>"		}#line 62 "calc_004.re"	}	return 0;}int main(int argc, char **argv){	if (argc > 1)	{		return scan(argv[1], strlen(argv[1]));	}	else	{		fprintf(stderr, "%s <expr>\n", argv[0]);		return 0;	}}

⌨️ 快捷键说明

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