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

📄 wc.c

📁 WINDOW版的YACC編譯軟體
💻 C
字号:
#define YY_DEFAULT_ACTION YY_FATAL_ERROR(" PCLEX scanner jammed");
/* A lexical scanner generated by flex */

#define YY_END_TOK 0
#define YY_NEW_FILE -1
#define YY_DO_DEFAULT -2
#ifndef BUFSIZ
#include <stdio.h>
#endif
#define F_BUFSIZ BUFSIZ
#define YY_BUF_SIZE (F_BUFSIZ * 2)
#define YY_BUF_MAX (YY_BUF_SIZE - 1)
#ifndef YY_MAX_LINE
#define YY_MAX_LINE F_BUFSIZ
#endif
#define YY_BUF_LIM (YY_BUF_MAX - YY_MAX_LINE)
#define ECHO (void) fwrite( (char *) yytext, yyleng, 1, yyout )
#define YY_INPUT(buf,result,max_size) \
	if (  ( result = fread((char *) buf, sizeof(char), max_size, yyin) ) < 0   )\
	    YY_FATAL_ERROR( "L0048: fread() in PCLEX scanner failed" ); 
#define YY_NULL 0
#define YY_OUTPUT(c) fputc(c, yyout);
#define YY_FATAL_ERROR(msg) \
	{ \
	fputs(msg, stderr); \
	putc('\n', stderr); \
	exit(1); \
	}
#define YY_FIRST_CHAR yy_ch_buf[yy_b_buf_p]
#define yywrap() 1
#define BEGIN yy_start = 1 +
#define YY_SET_BOL(array,pos) array[pos - 1] = '\n';
#define YY_DECL int yylex()
#define yyless(n) \
	{ \
	YY_DO_BEFORE_SCAN; \
	yy_c_buf_p = yy_b_buf_p + (n) - 1; \
	YY_DO_BEFORE_ACTION; \
	}
#define YY_BREAK break;
#define YY_INIT \
	{ \
	yyleng = yy_c_buf_p = yy_e_buf_p = 0; \
	yy_hold_char = yy_ch_buf[yy_c_buf_p] = '\n'; \
	yytext = &yy_ch_buf[yy_c_buf_p]; \
	yy_saw_eof = 0; \
	}
#define YY_LENG (yy_c_buf_p - yy_b_buf_p + 1)
#define YY_DO_BEFORE_SCAN \
	yytext[yyleng] = yy_hold_char;
#define YY_DO_BEFORE_ACTION \
	yytext = &yy_ch_buf[yy_b_buf_p]; \
	yyleng = YY_LENG; \
	yy_hold_char = yytext[yyleng]; \
	yytext[yyleng] = '\0';
#define REJECT \
        { \
	YY_DO_BEFORE_SCAN; \
	yy_c_buf_p = yy_full_match; \
        ++yy_lp; \
        goto find_rule; \
        }

static int input(void);
static void unput(char);

# line 1 "wc.l"
#define INITIAL 0
/*
 *	word count, WC - the program. simple standalone PCLEX application.
 */
# line 6 "wc.l"
#include <stdlib.h>
static unsigned nchar = 0;	/* # of characters in file */
static unsigned nword = 0;	/* # of words in file */
static unsigned nline = 1;	/* # of lines in file */
# line 12 "wc.l"
#define YY_JAM 7
#define YY_JAM_BASE 290
static char a[9] =		
    {   0,
        2,    3,    4,    3,    4,    1,    4,    2
    } ;

static char l[9] =		
    {   0,
       -2,   -2,    1,    4,    6,    8,    9,    9
    } ;

static short int b[10] =	
    {   0,
        0,    2,    0,  290,  290,    0,  290,   34,  162
    } ;

static short int d[10] =	
    {   0,
        8,    8,    9,    7,    7,    9,-32767,    7,    7
    } ;

static short int n[419] =	
    {   0,
        7,    7,    7,    7,    7,    7,    7,    7,    4,    5,
        4,    5,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    4,    7,    4,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,

        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    6,    6,    6,    6,    6,    6,    6,    6,
        7,    7,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    7,    6,    6,    6,    6,    6,    6,

        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,

        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,

        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7
    } ;

static short int c[419] =	
    {   0,
        0,    0,    0,    0,    0,    0,    0,    0,    1,    1,
        2,    2,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    1,    0,    2,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,

        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    9,    9,    9,    9,    9,    9,    9,    9,
        0,    0,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    0,    9,    9,    9,    9,    9,    9,

        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,

        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,

        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7
    } ;


FILE *yyin = stdin, *yyout = stdout;
static int yy_start, yy_b_buf_p, yy_c_buf_p, yy_e_buf_p;
static int yy_saw_eof = 1, yy_init = 1;
static char yy_ch_buf[YY_BUF_SIZE + 1];
static int yy_st_buf[YY_BUF_SIZE];
static char yy_hold_char;
char *yytext;
int yyleng;

static int input(void)
{
  int c;

  YY_DO_BEFORE_SCAN
  if (yy_c_buf_p == yy_e_buf_p) {
    int yy_n_chars;

    if (yy_saw_eof) {
      if (yywrap())
	 return (EOF);

      YY_INIT;
    }

    yy_b_buf_p = 0;
    YY_INPUT(yy_ch_buf, yy_n_chars, YY_MAX_LINE);

    if (yy_n_chars == YY_NULL) {
      yy_saw_eof = 1;

      if (yywrap())
	return (EOF);

      YY_INIT;
      return (input());
    }

    yy_c_buf_p = -1;
    yy_e_buf_p = yy_n_chars - 1;
  }

  c = yy_ch_buf[++yy_c_buf_p];

  YY_DO_BEFORE_ACTION;

  return (c);
}


static void unput(char c)
{
    YY_DO_BEFORE_SCAN;

    if (yy_c_buf_p == 0) {
	register int i;
	register int yy_buf_pos = YY_BUF_MAX;

	for (i = yy_e_buf_p; i >= yy_c_buf_p; --i) {
	    yy_ch_buf[yy_buf_pos] = yy_ch_buf[i];
	    yy_st_buf[yy_buf_pos] = yy_st_buf[i];
	    --yy_buf_pos;
	}

	yy_c_buf_p = YY_BUF_MAX - yy_e_buf_p;
	yy_e_buf_p = YY_BUF_MAX;
    }

    if (yy_c_buf_p <= 0)
	YY_FATAL_ERROR("L0027: PCLEX scanner push-back overflow");

    if (yy_c_buf_p >= yy_b_buf_p && yy_ch_buf[yy_c_buf_p] == '\n')
	yy_ch_buf[yy_c_buf_p - 1] = '\n';

    yy_ch_buf[yy_c_buf_p--] = c;

    YY_DO_BEFORE_ACTION;
}


YY_DECL
{
  register int yy_curst;
  register unsigned char yy_sym;
  int yy_n_chars, yy_lp, yy_iii, yy_buf_pos, yy_act, yy_full_match;




  if (yy_init) {
    YY_INIT;
    yy_start = 1;
    yy_init = 0;
  }
  goto get_next_token;

do_action:
  yy_full_match = yy_c_buf_p;

  for ( ; ; )	{
    YY_DO_BEFORE_ACTION

    switch (yy_act) {
case 1:
# line 14 "wc.l"
nchar += 2, ++nline;	/* line boundary in MS-DOS is CR LF */
	YY_BREAK
case 2:
# line 16 "wc.l"
++nword, nchar += yyleng;
	YY_BREAK
case 3:
# line 18 "wc.l"
++nchar;
	YY_BREAK
case 4:
# line 20 "wc.l"
YY_DEFAULT_ACTION;
	YY_BREAK

    case YY_NEW_FILE:
      break;
    case YY_END_TOK:
      return (YY_END_TOK);
    default:
      YY_FATAL_ERROR("L0028: fatal PCLEX scanner internal error");
    }

get_next_token:
    YY_DO_BEFORE_SCAN

    yy_curst = yy_start;

    if (yy_ch_buf[yy_c_buf_p] == '\n')
      ++yy_curst;

    yy_b_buf_p = yy_c_buf_p + 1;

    do {
      if (yy_c_buf_p == yy_e_buf_p) {
	if (yy_e_buf_p >= YY_BUF_LIM) {
	  yy_n_chars = yy_e_buf_p - yy_b_buf_p;

	  if (yy_n_chars >= 0) {
	    for (yy_iii = 0; yy_iii <= yy_n_chars; ++yy_iii) {
	      yy_buf_pos = yy_b_buf_p + yy_iii;
	      yy_ch_buf[yy_iii] = yy_ch_buf[yy_buf_pos];
	      yy_st_buf[yy_iii] = yy_st_buf[yy_buf_pos];
	    }
	  }

	  yy_b_buf_p = 0;
	  yy_e_buf_p = yy_n_chars;

	  if (yy_e_buf_p >= YY_BUF_LIM)
	    YY_FATAL_ERROR("L0029: PCLEX input buffer overflowed");

	    yy_c_buf_p = yy_e_buf_p;
	  } else if (yy_saw_eof) {
saweof:		
	  if (yy_b_buf_p <= yy_e_buf_p)
	    break;
	  if (yywrap())
	    yy_act = YY_END_TOK;
	  else {
	    YY_INIT;
	    yy_act = YY_NEW_FILE;
	  }
	  goto do_action;
	}

	YY_INPUT((yy_ch_buf + yy_c_buf_p + 1), yy_n_chars, YY_MAX_LINE);

	if (yy_n_chars == YY_NULL) {
	  if (yy_saw_eof)
	    YY_FATAL_ERROR("L0030: PCLEX scanner saw EOF twice - shouldn't happen");
	  yy_saw_eof = 1;
	  goto saweof;
	}

	yy_e_buf_p += yy_n_chars;
      }

      ++yy_c_buf_p;
      yy_sym = yy_ch_buf[yy_c_buf_p];
            if(yy_sym == '\000') yy_sym = '\001';

      while (c[b[yy_curst] + yy_sym] != yy_curst)
	yy_curst = d[yy_curst];

      yy_curst = n[b[yy_curst] + yy_sym];
      yy_st_buf[yy_c_buf_p] = yy_curst;

    } while (b[yy_curst] != YY_JAM_BASE);

    if (yy_c_buf_p >= yy_b_buf_p) {
      yy_curst = yy_st_buf[yy_c_buf_p];
      yy_lp = l[yy_curst];

find_rule:
      for ( ; ; ) {
	if (yy_lp && yy_lp < l[yy_curst + 1]) {
	  yy_act = a[yy_lp];
	  goto do_action;
	}

	if (--yy_c_buf_p < yy_b_buf_p)
	  break;

	yy_curst = yy_st_buf[yy_c_buf_p];
	yy_lp = l[yy_curst];
      }
    }
    ++yy_c_buf_p;

    yy_act = YY_DO_DEFAULT;
  }
}
# line 20 "wc.l"


main()
{
  yylex();
  printf( "%d\t%d\t%d\n", nchar, nword, nline );
  exit(0);
}

⌨️ 快捷键说明

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