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

📄 yylex.c

📁 一个可用的dns服务器源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* A lexical scanner generated by flex *//* scanner skeleton version: * $Header: /home/horse/u0/vern/flex/RCS/flex.skel,v 2.16 90/08/03 14:09:36 vern Exp Locker: vern $ */#define FLEX_SCANNER#include <stdio.h>/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */#ifdef c_plusplus#ifndef __cplusplus#define __cplusplus#endif#endif#ifdef __cplusplus#include <stdlib.h>/* use prototypes in function declarations */#define YY_USE_PROTOS/* the "const" storage-class-modifier is valid */#define YY_USE_CONST#else	/* ! __cplusplus */#ifdef __STDC__#ifdef __GNUC__#include <stddef.h>void *malloc( size_t );void free( void* );#else#include <stdlib.h>#endif	/* __GNUC__ */#define YY_USE_PROTOS#define YY_USE_CONST#endif	/* __STDC__ */#endif	/* ! __cplusplus */#ifdef __TURBOC__#define YY_USE_CONST#endif/* #ifndef YY_USE_CONST#define const#endif*/#ifdef YY_USE_PROTOS#define YY_PROTO(proto) proto#else#define YY_PROTO(proto) ()/* we can't get here if it's an ANSI C compiler, or a C++ compiler, * so it's got to be a K&R compiler, and therefore there's no standard * place from which to include these definitions */#ifndef WINNTchar *malloc();int free();#endif//int read();#endif/* amount of stuff to slurp up with each read */#ifndef YY_READ_BUF_SIZE#define YY_READ_BUF_SIZE 8192#endif/* returned upon end-of-file */#define YY_END_TOK 0/* copy whatever the last rule matched to the standard output *//* cast to (char *) is because for 8-bit chars, yytext is (unsigned char *) *//* this used to be an fputs(), but since the string might contain NUL's, * we now use fwrite() */#define ECHO (void) fwrite( (char *) yytext, yyleng, 1, yyout )/* gets input and stuffs it into "buf".  number of characters read, or YY_NULL, * is returned in "result". */#define YY_INPUT(buf,result,max_size) \	if ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \	    YY_FATAL_ERROR( "read() in flex scanner failed" );#define YY_NULL 0/* no semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */#define yyterminate() return ( YY_NULL )/* report a fatal error *//* The funky do-while is used to turn this macro definition into * a single C statement (which needs a semi-colon terminator). * This avoids problems with code like: * * 	if ( something_happens ) *		YY_FATAL_ERROR( "oops, the something happened" ); *	else *		everything_okay(); * * Prior to using the do-while the compiler would get upset at the * "else" because it interpreted the "if" statement as being all * done when it reached the ';' after the YY_FATAL_ERROR() call. */#define YY_FATAL_ERROR(msg) \	do \		{ \		(void) fputs( msg, stderr ); \		(void) putc( '\n', stderr ); \		exit( 1 ); \		} \	while ( 0 )/* default yywrap function - always treat EOF as an EOF */#define yywrap() 1/* enter a start condition.  This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN */#define BEGIN yy_start = 1 + 2 */* action number for EOF rule of a given start state */#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)/* special action meaning "start processing a new file" */#define YY_NEW_FILE \	do \		{ \		yy_init_buffer( yy_current_buffer, yyin ); \		yy_load_buffer_state(); \		} \	while ( 0 )/* default declaration of generated scanner - a define so the user can * easily add parameters */#define YY_DECL int yylex YY_PROTO(( void )) /* code executed at the end of each rule */#define YY_BREAK break;#define YY_END_OF_BUFFER_CHAR 0#ifndef YY_BUF_SIZE#define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of default input buffer */#endiftypedef struct yy_buffer_state *YY_BUFFER_STATE;#define YY_CHAR unsigned char# line 1 "commands.l"#define INITIAL 0# line 2 "commands.l"/* * ++Copyright++ 1985 * - * Copyright (c) 1985 *    The Regents of the University of California.  All rights reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: * 	This product includes software developed by the University of * 	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. *  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Portions Copyright (c) 1993 by Digital Equipment Corporation. *  * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies, and that * the name of Digital Equipment Corporation not be used in advertising or * publicity pertaining to distribution of the document or software without * specific, written prior permission. *  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * - * --Copyright-- */#ifndef lintstatic char sccsid[] = "@(#)commands.l	5.13 (Berkeley) 7/24/90";#endif /* not lint *//* ******************************************************************************* * *  commands.l * *	Andrew Cherenson	CS298-26  Fall 1985 * *	Lex input file for the nslookup program command interpreter. *	When a sequence is recognized, the associated action *	routine is called. The action routine may need to *	parse the string for additional information. * *  Recognized commands: (identifiers are shown in uppercase) * *	server NAME	- set default server to NAME, using default server *	lserver NAME	- set default server to NAME, using initial server *	finger [NAME]	- finger the optional NAME *	exit		- exit the program *	root		- set default server to the root *	ls NAME		- list the domain NAME *	view FILE	- sorts and view the file with more *	set OPTION	- set an option *	help		- print help information *	?		- print help information *	NAME		- print info about the host/domain NAME *			  using default server. *	NAME1 NAME2	- as above, but use NAME2 as server * * *   yylex Results: *	0		upon end-of-file. *	1		after each command. * ******************************************************************************* */#include "res.h"extern char rootServerName[];extern void PrintHelp();# line 107 "commands.l"/* done after the current pattern has been matched and before the * corresponding action - sets up yytext */#define YY_DO_BEFORE_ACTION \	yytext = yy_bp; \	yyleng = yy_cp - yy_bp; \	yy_hold_char = *yy_cp; \	*yy_cp = '\0'; \	yy_c_buf_p = yy_cp;#define EOB_ACT_CONTINUE_SCAN 0#define EOB_ACT_END_OF_FILE 1#define EOB_ACT_LAST_MATCH 2/* return all but the first 'n' matched characters back to the input stream */#define yyless(n) \	do \		{ \		/* undo effects of setting up yytext */ \		*yy_cp = yy_hold_char; \		yy_c_buf_p = yy_cp = yy_bp + n; \		YY_DO_BEFORE_ACTION; /* set up yytext again */ \		} \	while ( 0 )#define unput(c) yyunput( c, yytext )struct yy_buffer_state    {    FILE *yy_input_file;    YY_CHAR *yy_ch_buf;		/* input buffer */    YY_CHAR *yy_buf_pos;	/* current position in input buffer */    /* size of input buffer in bytes, not including room for EOB characters */    int yy_buf_size;	    /* number of characters read into yy_ch_buf, not including EOB characters */    int yy_n_chars;    int yy_eof_status;		/* whether we've seen an EOF on this buffer */#define EOF_NOT_SEEN 0    /* "pending" happens when the EOF has been seen but there's still     * some text process     */#define EOF_PENDING 1#define EOF_DONE 2    };static YY_BUFFER_STATE yy_current_buffer;/* we provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state" */#define YY_CURRENT_BUFFER yy_current_buffer/* yy_hold_char holds the character lost when yytext is formed */static YY_CHAR yy_hold_char;static int yy_n_chars;		/* number of characters read into yy_ch_buf */#ifndef YY_USER_ACTION#define YY_USER_ACTION#endif#ifndef YY_USER_INIT#define YY_USER_INIT#endifextern YY_CHAR *yytext;extern int yyleng;extern FILE *yyin, *yyout;YY_CHAR *yytext;int yyleng;FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;#define YY_END_OF_BUFFER 23typedef int yy_state_type;static const short int yy_acclist[223] =    {   0,       23,   22,   21,   22,   22,   22,   19,   20,   21,   22,       22,16400,   22,16398,   22,16400,   22,16400,   22,16400,       22,16400,   22,16400,   22,16400,   22,16400,   20,   19,       20,16400,16398,16400,16400,16400,16400,16400,16400,16400,    16400, 8208,   20,16400,16398, 8206,   20,16400,16400,16400,    16400,16400,16400,16400,16402,16400,16400,16400,16400,16400,    16400,16400,16400,16400,16402, 8210,   20,16402,16399,16387,    16400,16400,16397,16400,16393,16402,16400,16388,16400,16400,    16400,16400,16399, 8207,   20,16387,16400, 8195, 8208,   20,    16400,16397,16400, 8205, 8208,   20,16393,16402, 8201, 8210,       20,16393,16402,16400,16388,16400, 8196, 8208,   20,16400,    16396,16402,16396,16400,16401,16390,16400,16400,16400,16396,    16402, 8204, 8210,   20,16396,16402,16396, 8204,   20,16391,    16402,16391,16401, 8209,   20,16390,16400, 8198, 8208,   20,    16393,16395,16400,16400,16391,16402, 8199, 8210,   20,16391,    16402,16391, 8199,   20,16390,16402,16392,16401,16393, 8201,       20,16393,16395, 8203,   20,16395,16400,16385,16402,16390,    16402, 8198, 8210,   20,16390,16402,16389,16399,16392,16401,     8200, 8209,   20,16395,16386,16402,16385,16402, 8193, 8210,       20,16385,16402,16389,16399, 8197, 8207,   20,16395,16395,    16386,16402, 8194, 8210,   20,16386,16402,16389,16401,16392,    16394,16389,16401, 8197, 8209,   20,16392, 8200,   20,16394,     8202,   20    } ;static const short int yy_accept[172] =    {   0,        1,    1,    1,    2,    3,    5,    6,    7,   11,   13,       15,   17,   19,   21,   23,   25,   27,   29,   29,   30,       30,   32,   33,   34,   35,   36,   37,   38,   39,   40,       41,   42,   44,   45,   46,   48,   49,   50,   51,   52,       53,   54,   55,   56,   56,   57,   58,   59,   60,   61,       62,   63,   64,   65,   66,   68,   69,   69,   70,   70,       72,   73,   75,   77,   77,   78,   80,   81,   82,   83,       83,   84,   86,   88,   91,   92,   94,   97,   99,  102,      104,  104,  104,  105,  107,  110,  111,  113,  114,  115,      115,  116,  116,  118,  118,  118,  118,  119,  120,  122,      125,  127,  128,  130,  132,  133,  134,  136,  138,  141,      141,  141,  142,  143,  144,  145,  147,  150,  152,  153,      155,  157,  157,  159,  160,  162,  163,  164,  166,  167,      168,  170,  172,  175,  177,  177,  179,  179,  181,  184,      184,  185,  185,  187,  189,  192,  194,  194,  196,  199,      199,  199,  200,  201,  201,  201,  203,  206,  208,  208,      210,  210,  211,  212,  214,  217,  218,  220,  221,  223,      223    } ;static const YY_CHAR yy_ec[256] =    {   0,        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    2,    1,    1,    1,    1,    1,    1,    1,    1,        1,    4,    1,    1,    5,    4,    6,    4,    4,    4,        4,    4,    4,    4,    4,    4,    4,    1,    1,    1,        6,    7,    8,    1,   10,    4,    4,   11,   12,   13,       14,   15,   16,    4,    4,   17,   18,   19,   20,   21,        4,   22,   23,   24,    4,   25,   26,   27,    4,    4,        1,    9,    1,    1,    6,    1,   10,    4,    4,   11,       12,   13,   14,   15,   16,    4,    4,   17,   18,   19,       20,   21,    4,   22,   23,   24,    4,   25,   26,   27,        4,    4,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1    } ;static const YY_CHAR yy_meta[28] =    {   0,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1    } ;static const short int yy_base[203] =    {   0,      491,    0,  493,  611,  611,  489,   27,  611,   54,   56,       63,   51,   48,   46,   54,   56,   60,  479,  611,    0,      611,  446,   77,    0,   61,   70,   62,   64,   74,   76,      103,  611,  439,   91,  611,   80,   94,   97,  113,   75,       95,  104,  140,  149,   96,  112,  106,  158,  107,  108,       73,  126,  110,  166,  611,  173,  182,  142,    0,  152,      150,  168,  195,  202,  161,  191,  160,  226,  197,  235,      198,  611,  244,  611,  184,  205,  611,  207,  611,  253,      213,  219,  236,  237,  611,  237,  264,  273,  282,  291,      255,    0,  275,  294,  302,  311,  299,  268,  320,  611,      327,  266,  611,  336,  345,  322,  611,  354,  611,  363,      463,  372,  381,  304,  390,  398,  611,  405,  330,  611,      414,  423,  432,  435,  611,  442,  451,  611,  460,  469,      478,  481,  611,  488,  497,  338,    0,  347,  611,  500,      507,  510,  517,  520,  611,  527,  536,  365,  611,  545,      374,  548,  555,  564,  383,  567,  611,  574,  583,  400,        0,  592,  601,  407,  611,  416,  611,  425,  611,  611,      463,  454,  447,  446,  445,  435,  428,  419,  410,  403,      393,  386,  377,  368,  357,  350,  341,  314,  296,  285,      278,  240,  229,  222,  218,  191,  177,  145,  137,  129,      117,   98    } ;static const short int yy_def[203] =    {   0,      171,  170,  170,  170,  170,  172,  170,  170,  173,  172,      173,   11,   11,   11,   11,   11,   11,  172,  170,    7,      170,   11,  172,   11,   11,   11,   11,   11,   11,   11,      174,  170,   11,  172,  170,   11,   11,   11,   11,   11,       11,   11,  175,  176,   11,   11,   11,  177,   11,   11,       11,   11,   11,  172,  170,  175,  176,   57,   57,   11,       11,   11,  178,  172,   11,   11,   11,  179,   11,  180,      172,  170,  174,  170,   11,   73,  170,  172,  170,  178,      172,  172,   11,   73,  170,   11,  181,  182,  183,  180,       90,   90,   11,   90,  184,  185,   11,   11,  172,  170,      181,  172,  170,  186,  187,  172,  170,  188,  170,  189,       90,  190,  191,   11,  192,  172,  170,  186,  172,  170,      193,  194,  189,  172,  170,  190,  195,  170,  191,  196,      197,  172,  170,  193,  194,  135,  135,  172,  170,  172,      198,  172,  199,  172,  170,  197,  200,  172,  170,  201,      172,  172,  198,  202,  172,  172,  170,  199,  200,  159,      159,  201,  202,  172,  170,  172,  170,  172,  170,    0,      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,      170,  170    } ;static const short int yy_nxt[639] =    {   0,        6,    7,    8,    9,    6,    6,    6,   10,    9,    9,        9,   11,   12,    9,   13,    9,   14,    9,    9,    9,        9,   15,   16,    9,   17,    9,    9,   18,   20,   21,       22,   18,   18,   18,   23,   22,   22,   22,   24,   25,

⌨️ 快捷键说明

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