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

📄 scan.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 5 页
字号:
case 28:YY_USER_ACTION# line 171 "scan.l"/* separates name and definition */	YY_BREAKcase 29:YY_USER_ACTION# line 173 "scan.l"{			strcpy( (char *) nmdef, yytext );			/* Skip trailing whitespace. */			for ( i = strlen( (char *) nmdef ) - 1;			      i >= 0 && (nmdef[i] == ' ' || nmdef[i] == '\t');			      --i )				;			nmdef[i + 1] = '\0';			ndinstal( nmstr, nmdef );			didadef = true;			}	YY_BREAKcase 30:YY_USER_ACTION# line 188 "scan.l"{			if ( ! didadef )				synerr( "incomplete name definition" );			BEGIN(INITIAL);			++linenum;			}	YY_BREAKcase 31:YY_USER_ACTION# line 195 "scan.l"++linenum; BEGIN(INITIAL); RETURNNAME;	YY_BREAKcase 32:YY_USER_ACTION# line 198 "scan.l"++linenum; BEGIN(INITIAL);	YY_BREAKcase 33:YY_USER_ACTION# line 199 "scan.l"	YY_BREAKcase 34:YY_USER_ACTION# line 200 "scan.l"{			if ( all_upper( yytext ) )				reject_really_used = checking_used;			else				synerr(				"unrecognized %used/%unused construct" );			}	YY_BREAKcase 35:YY_USER_ACTION# line 207 "scan.l"{			if ( all_lower( yytext ) )				yymore_really_used = checking_used;			else				synerr(				"unrecognized %used/%unused construct" );			}	YY_BREAKcase 36:YY_USER_ACTION# line 214 "scan.l"synerr( "unrecognized %used/%unused construct" );	YY_BREAKcase 37:YY_USER_ACTION# line 217 "scan.l"++bracelevel; yyless( 2 );	/* eat only %{ */	YY_BREAKcase 38:YY_USER_ACTION# line 218 "scan.l"--bracelevel; yyless( 2 );	/* eat only %} */	YY_BREAKcase 39:YY_USER_ACTION# line 220 "scan.l"ACTION_ECHO;	/* indented code in prolog */	YY_BREAKcase 40:YY_USER_ACTION# line 222 "scan.l"{	/* non-indented code */			if ( bracelevel <= 0 )				{ /* not in %{ ... %} */				yyless( 0 );	/* put it all back */				mark_prolog();				BEGIN(SECT2);				}			else				ACTION_ECHO;			}	YY_BREAKcase 41:YY_USER_ACTION# line 233 "scan.l"ACTION_ECHO;	YY_BREAKcase 42:YY_USER_ACTION# line 234 "scan.l"++linenum; ACTION_ECHO;	YY_BREAKcase YY_STATE_EOF(SECT2PROLOG):# line 236 "scan.l"{			mark_prolog();			sectnum = 0;			yyterminate(); /* to stop the parser */			}	YY_BREAKcase 43:YY_USER_ACTION# line 242 "scan.l"++linenum; /* allow blank lines in section 2 */	YY_BREAKcase 44:YY_USER_ACTION# line 244 "scan.l"{			indented_code = (yytext[0] != '%');			doing_codeblock = true;			bracelevel = 1;			if ( indented_code )				ACTION_ECHO;			BEGIN(CODEBLOCK_2);			}	YY_BREAKcase 45:YY_USER_ACTION# line 255 "scan.l"BEGIN(SC); return '<';	YY_BREAKcase 46:YY_USER_ACTION# line 256 "scan.l"return '^';	YY_BREAKcase 47:YY_USER_ACTION# line 257 "scan.l"BEGIN(QUOTE); return '"';	YY_BREAKcase 48:*yy_cp = yy_hold_char; /* undo effects of setting up yytext */yy_c_buf_p = yy_cp = yy_bp + 1;YY_DO_BEFORE_ACTION; /* set up yytext again */YY_USER_ACTION# line 258 "scan.l"BEGIN(NUM); return '{';	YY_BREAKcase 49:YY_USER_ACTION# line 259 "scan.l"BEGIN(BRACEERROR);	YY_BREAKcase 50:*yy_cp = yy_hold_char; /* undo effects of setting up yytext */yy_c_buf_p = yy_cp = yy_bp + 1;YY_DO_BEFORE_ACTION; /* set up yytext again */YY_USER_ACTION# line 260 "scan.l"return '$';	YY_BREAKcase 51:YY_USER_ACTION# line 262 "scan.l"{			bracelevel = 1;			BEGIN(PERCENT_BRACE_ACTION);			return '\n';			}	YY_BREAKcase 52:YY_USER_ACTION# line 267 "scan.l"continued_action = true; ++linenum; return '\n';	YY_BREAKcase 53:YY_USER_ACTION# line 269 "scan.l"{			/* This rule is separate from the one below because			 * otherwise we get variable trailing context, so			 * we can't build the scanner using -{f,F}.			 */			bracelevel = 0;			continued_action = false;			BEGIN(ACTION);			return '\n';			}	YY_BREAKcase 54:YY_USER_ACTION# line 280 "scan.l"{			bracelevel = 0;			continued_action = false;			BEGIN(ACTION);			unput( '\n' );	/* so <ACTION> sees it */			return '\n';			}	YY_BREAKcase 55:YY_USER_ACTION# line 288 "scan.l"return EOF_OP;	YY_BREAKcase 56:YY_USER_ACTION# line 290 "scan.l"{			sectnum = 3;			BEGIN(SECT3);			yyterminate(); /* to stop the parser */			}	YY_BREAKcase 57:YY_USER_ACTION# line 296 "scan.l"{			int cclval;			strcpy( nmstr, yytext );			/* Check to see if we've already encountered this			 * ccl.			 */			if ( (cclval = ccllookup( (Char *) nmstr )) )				{				if ( input() != ']' )					synerr( "bad character class" );				yylval = cclval;				++cclreuse;				return PREVCCL;				}			else				{				/* We fudge a bit.  We know that this ccl will				 * soon be numbered as lastccl + 1 by cclinit.				 */				cclinstal( (Char *) nmstr, lastccl + 1 );				/* Push back everything but the leading bracket				 * so the ccl can be rescanned.				 */				yyless( 1 );				BEGIN(FIRSTCCL);				return '[';				}			}	YY_BREAKcase 58:YY_USER_ACTION# line 330 "scan.l"{			register Char *nmdefptr;			Char *ndlookup();			strcpy( nmstr, yytext + 1 );			nmstr[yyleng - 2] = '\0';  /* chop trailing brace */			if ( ! (nmdefptr = ndlookup( nmstr )) )				format_synerr( "undefined definition {%s}",						nmstr );			else				{ /* push back name surrounded by ()'s */				int len = strlen( (char *) nmdefptr );				if ( lex_compat || nmdefptr[0] == '^' ||				     (len > 0 && nmdefptr[len - 1] == '$') )					{ /* don't use ()'s after all */					PUT_BACK_STRING((char *) nmdefptr, 0);					if ( nmdefptr[0] == '^' )						BEGIN(CARETISBOL);					}				else					{					unput(')');					PUT_BACK_STRING((char *) nmdefptr, 0);					unput('(');					}				}			}	YY_BREAKcase 59:YY_USER_ACTION# line 363 "scan.l"return (unsigned char) yytext[0];	YY_BREAKcase 60:YY_USER_ACTION# line 364 "scan.l"RETURNCHAR;	YY_BREAKcase 61:YY_USER_ACTION# line 367 "scan.l"return (unsigned char) yytext[0];	YY_BREAKcase 62:YY_USER_ACTION# line 368 "scan.l"BEGIN(SECT2); return '>';	YY_BREAKcase 63:*yy_cp = yy_hold_char; /* undo effects of setting up yytext */yy_c_buf_p = yy_cp = yy_bp + 1;YY_DO_BEFORE_ACTION; /* set up yytext again */YY_USER_ACTION# line 369 "scan.l"BEGIN(CARETISBOL); return '>';	YY_BREAKcase 64:YY_USER_ACTION# line 370 "scan.l"RETURNNAME;	YY_BREAKcase 65:YY_USER_ACTION# line 371 "scan.l"{			format_synerr( "bad <start condition>: %s", yytext );			}	YY_BREAKcase 66:YY_USER_ACTION# line 375 "scan.l"BEGIN(SECT2); return '^';	YY_BREAKcase 67:YY_USER_ACTION# line 378 "scan.l"RETURNCHAR;	YY_BREAKcase 68:YY_USER_ACTION# line 379 "scan.l"BEGIN(SECT2); return '"';	YY_BREAKcase 69:YY_USER_ACTION# line 381 "scan.l"{			synerr( "missing quote" );			BEGIN(SECT2);			++linenum;			return '"';			}	YY_BREAKcase 70:*yy_cp = yy_hold_char; /* undo effects of setting up yytext */yy_c_buf_p = yy_cp = yy_bp + 1;YY_DO_BEFORE_ACTION; /* set up yytext again */YY_USER_ACTION# line 389 "scan.l"BEGIN(CCL); return '^';	YY_BREAKcase 71:*yy_cp = yy_hold_char; /* undo effects of setting up yytext */yy_c_buf_p = yy_cp = yy_bp + 1;YY_DO_BEFORE_ACTION; /* set up yytext again */YY_USER_ACTION# line 390 "scan.l"return '^';	YY_BREAKcase 72:YY_USER_ACTION# line 391 "scan.l"BEGIN(CCL); RETURNCHAR;	YY_BREAKcase 73:*yy_cp = yy_hold_char; /* undo effects of setting up yytext */yy_c_buf_p = yy_cp = yy_bp + 1;YY_DO_BEFORE_ACTION; /* set up yytext again */YY_USER_ACTION# line 393 "scan.l"return '-';	YY_BREAKcase 74:YY_USER_ACTION# line 394 "scan.l"RETURNCHAR;	YY_BREAKcase 75:YY_USER_ACTION# line 395 "scan.l"BEGIN(SECT2); return ']';	YY_BREAKcase 76:YY_USER_ACTION# line 396 "scan.l"{			synerr( "bad character class" );			BEGIN(SECT2);			return ']';			}	YY_BREAKcase 77:YY_USER_ACTION# line 403 "scan.l"{			yylval = myctoi( yytext );			return NUMBER;			}	YY_BREAKcase 78:YY_USER_ACTION

⌨️ 快捷键说明

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