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

📄 fcl-scanner.cc

📁 parse fuzzy contrl language file
💻 CC
📖 第 1 页 / 共 5 页
字号:
YY_RULE_SETUP#line 93 "fcl-scanner.ll"{ return token::RM; }	YY_BREAKcase 41:YY_RULE_SETUP#line 95 "fcl-scanner.ll"{ yylval->sval = new std::string (yytext); return token::IDENTIFIER; }	YY_BREAK/* Convert ints to the actual type of tokens.  */case 42:YY_RULE_SETUP#line 98 "fcl-scanner.ll"return yy::fcl_parser::token_type (yytext[0]);	YY_BREAKcase 43:YY_RULE_SETUP#line 100 "fcl-scanner.ll"yylloc->step ();	YY_BREAKcase 44:/* rule 44 can match eol */YY_RULE_SETUP#line 101 "fcl-scanner.ll"yylloc->lines (yyleng); yylloc->step ();	YY_BREAKcase 45:YY_RULE_SETUP#line 102 "fcl-scanner.ll"{ return token::COLON; }	YY_BREAKcase 46:YY_RULE_SETUP#line 103 "fcl-scanner.ll"{ return token::SEMI; }	YY_BREAKcase 47:YY_RULE_SETUP#line 104 "fcl-scanner.ll"{ return token::COMMA; }	YY_BREAKcase 48:YY_RULE_SETUP#line 105 "fcl-scanner.ll"{ return token::LPAREN; }	YY_BREAKcase 49:YY_RULE_SETUP#line 106 "fcl-scanner.ll"{ return token::RPAREN; }	YY_BREAKcase 50:YY_RULE_SETUP#line 107 "fcl-scanner.ll"{ return token::ASSIGN; }	YY_BREAKcase 51:YY_RULE_SETUP#line 108 "fcl-scanner.ll"{ return token::DPOINT; }	YY_BREAKcase 52:YY_RULE_SETUP#line 111 "fcl-scanner.ll"{			errno = 0;  			long n = strtol (yytext, NULL, 10);  			if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))    			driver.error (*yylloc, "integer is out of range");  			yylval->ival = n;			return token::NUMBER;		}	YY_BREAKcase 53:YY_RULE_SETUP#line 120 "fcl-scanner.ll"{ driver.error (*yylloc, "invalid character"); }	YY_BREAKcase 54:YY_RULE_SETUP#line 123 "fcl-scanner.ll"ECHO;	YY_BREAK#line 1459 "fcl-scanner.cc"case YY_STATE_EOF(INITIAL):case YY_STATE_EOF(comment):	yyterminate();	case YY_END_OF_BUFFER:		{		/* Amount of text matched not including the EOB char. */		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;		/* Undo the effects of YY_DO_BEFORE_ACTION. */		*yy_cp = (yy_hold_char);		YY_RESTORE_YY_MORE_OFFSET		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )			{			/* We're scanning a new file or input source.  It's			 * possible that this happened because the user			 * just pointed yyin at a new source and called			 * yylex().  If so, then we have to assure			 * consistency between YY_CURRENT_BUFFER and our			 * globals.  Here is the right place to do so, because			 * this is the first action (other than possibly a			 * back-up) that will match for the new input source.			 */			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;			}		/* Note that here we test for yy_c_buf_p "<=" to the position		 * of the first EOB in the buffer, since yy_c_buf_p will		 * already have been incremented past the NUL character		 * (since all states make transitions on EOB to the		 * end-of-buffer state).  Contrast this with the test		 * in input().		 */		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )			{ /* This was really a NUL. */			yy_state_type yy_next_state;			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;			yy_current_state = yy_get_previous_state(  );			/* Okay, we're now positioned to make the NUL			 * transition.  We couldn't have			 * yy_get_previous_state() go ahead and do it			 * for us because it doesn't know how to deal			 * with the possibility of jamming (and we don't			 * want to build jamming into it because then it			 * will run more slowly).			 */			yy_next_state = yy_try_NUL_trans( yy_current_state );			yy_bp = (yytext_ptr) + YY_MORE_ADJ;			if ( yy_next_state )				{				/* Consume the NUL. */				yy_cp = ++(yy_c_buf_p);				yy_current_state = yy_next_state;				goto yy_match;				}			else				{/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */				yy_cp = (yy_last_accepting_cpos);				yy_current_state = (yy_last_accepting_state);				goto yy_find_action;				}			}		else switch ( yy_get_next_buffer(  ) )			{			case EOB_ACT_END_OF_FILE:				{				(yy_did_buffer_switch_on_eof) = 0;				if ( yywrap( ) )					{					/* Note: because we've taken care in					 * yy_get_next_buffer() to have set up					 * yytext, we can now set up					 * yy_c_buf_p so that if some total					 * hoser (like flex itself) wants to					 * call the scanner after we return the					 * YY_NULL, it'll still work - another					 * YY_NULL will get returned.					 */					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;					yy_act = YY_STATE_EOF(YY_START);					goto do_action;					}				else					{					if ( ! (yy_did_buffer_switch_on_eof) )						YY_NEW_FILE;					}				break;				}			case EOB_ACT_CONTINUE_SCAN:				(yy_c_buf_p) =					(yytext_ptr) + yy_amount_of_matched_text;				yy_current_state = yy_get_previous_state(  );				yy_cp = (yy_c_buf_p);				yy_bp = (yytext_ptr) + YY_MORE_ADJ;				goto yy_match;			case EOB_ACT_LAST_MATCH:				(yy_c_buf_p) =				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];				yy_current_state = yy_get_previous_state(  );				yy_cp = (yy_c_buf_p);				yy_bp = (yytext_ptr) + YY_MORE_ADJ;				goto yy_find_action;			}		break;		}	default:		YY_FATAL_ERROR(			"fatal flex scanner internal error--no action found" );	} /* end of action switch */		} /* end of scanning one token */} /* end of yylex *//* %ok-for-header *//* %if-c++-only *//* %not-for-header *//* %ok-for-header *//* %endif *//* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: *	EOB_ACT_LAST_MATCH - *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position *	EOB_ACT_END_OF_FILE - end of file *//* %if-c-only */static int yy_get_next_buffer (void)/* %endif *//* %if-c++-only *//* %endif */{    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;	register char *source = (yytext_ptr);	register int number_to_move, i;	int ret_val;	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )		YY_FATAL_ERROR(		"fatal flex scanner internal error--end of buffer missed" );	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )		{ /* Don't try to fill the buffer, so this is an EOF. */		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )			{			/* We matched a single character, the EOB, so			 * treat this as a final EOF.			 */			return EOB_ACT_END_OF_FILE;			}		else			{			/* We matched some text prior to the EOB, first			 * process it.			 */			return EOB_ACT_LAST_MATCH;			}		}	/* Try to read more data. */	/* First move last chars to start of buffer. */	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;	for ( i = 0; i < number_to_move; ++i )		*(dest++) = *(source++);	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )		/* don't do the read, it's not guaranteed to return an EOF,		 * just force an EOF		 */		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;	else		{			int num_to_read =			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;		while ( num_to_read <= 0 )			{ /* Not enough room in the buffer - grow it. */			/* just a shorter name for the current buffer */			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;			int yy_c_buf_p_offset =				(int) ((yy_c_buf_p) - b->yy_ch_buf);			if ( b->yy_is_our_buffer )				{				int new_size = b->yy_buf_size * 2;				if ( new_size <= 0 )					b->yy_buf_size += b->yy_buf_size / 8;				else					b->yy_buf_size *= 2;				b->yy_ch_buf = (char *)					/* Include room in for 2 EOB chars. */					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );				}			else				/* Can't grow it, we don't own it. */				b->yy_ch_buf = 0;			if ( ! b->yy_ch_buf )				YY_FATAL_ERROR(				"fatal error - scanner input buffer overflow" );			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -						number_to_move - 1;			}		if ( num_to_read > YY_READ_BUF_SIZE )			num_to_read = YY_READ_BUF_SIZE;		/* Read in more data. */		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),			(yy_n_chars), (size_t) num_to_read );		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);		}	if ( (yy_n_chars) == 0 )		{		if ( number_to_move == YY_MORE_ADJ )			{			ret_val = EOB_ACT_END_OF_FILE;			yyrestart(yyin  );			}		else			{			ret_val = EOB_ACT_LAST_MATCH;			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =				YY_BUFFER_EOF_PENDING;			}		}	else		ret_val = EOB_ACT_CONTINUE_SCAN;	(yy_n_chars) += number_to_move;	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];	return ret_val;}/* yy_get_previous_state - get the state just before the EOB char was reached *//* %if-c-only *//* %not-for-header */    static yy_state_type yy_get_previous_state (void)/* %endif *//* %if-c++-only *//* %endif */{	register yy_state_type yy_current_state;	register char *yy_cp;    /* %% [15.0] code to get the start state into yy_current_state goes here */	yy_current_state = (yy_start);	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )		{/* %% [16.0] code to find the next state goes here */		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);		if ( yy_accept[yy_current_state] )			{			(yy_last_accepting_state) = yy_current_state;			(yy_last_accepting_cpos) = yy_cp;			}		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )			{			yy_current_state = (int) yy_def[yy_current_state];			if ( yy_current_state >= 364 )				yy_c = yy_meta[(unsigned int) yy_c];			}		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];		}	return yy_current_state;}/* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis *	next_state = yy_try_NUL_trans( current_state ); *//* %if-c-only */    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )/* %endif *//* %if-c++-only *//* %endif */{	register int yy_is_jam;    /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */	register char *yy_cp = (yy_c_buf_p);	register YY_CHAR yy_c = 1;	if ( yy_accept[yy_current_state] )		{		(yy_last_accepting_state) = yy_current_state;		(yy_last_accepting_cpos) = yy_cp;		}	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )		{		yy_current_state = (int) yy_def[yy_current_state];		if ( yy_current_state >= 364 )			yy_c = yy_meta[(unsigned int) yy_c];		}	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];	yy_is_jam = (yy_current_state == 363);	return yy_is_jam ? 0 : yy_current_state;}/* %if-c-only *//* %endif *//* %if-c-only */#ifndef YY_NO_INPUT#ifdef __cplusplus    static int yyinput (void)#else    static int input  (void)#endif/* %endif *//* %if-c++-only *//* %endif */{	int c;    	*(yy_c_buf_p) = (yy_hold_char);	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )		{		/* yy_c_buf_p now points to the character we want to return.		 * If this occurs *before* the EOB characters, then it's a		 * valid NUL; if not, then we've hit the end of the buffer.		 */

⌨️ 快捷键说明

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