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

📄 y.tab.c

📁 针对“虎书”中的tiger语言写的语法分析器 根据书中对tiger语言的描述写了72条文法
💻 C
📖 第 1 页 / 共 2 页
字号:
#ifndef lint
static char yysccsid[] = "@(#)yaccpar	1.8 (Berkeley) 01/02/91\n\
 Modified 11/4/96 by Wensong Zhang to make getenv() function right\n\
 and to remove the warning of unreferenced yyerrlab and yynewerror labels";
#endif
#define YYBYACC 1
#line 2 "tiger.grm"
#include <stdio.h>
#include "util.h"
#include "errormsg.h"

int yylex(void); /* function prototype */

void yyerror(char *s)
{
 EM_error(EM_tokPos, "%s", s);
}
#line 15 "tiger.grm"
typedef union {
	int pos;
	int ival;
	string sval;
	} YYSTYPE;
#line 25 "y.tab.c"
#define ID 257
#define STRING 258
#define INT 259
#define COMMA 260
#define COLON 261
#define SEMICOLON 262
#define LPAREN 263
#define RPAREN 264
#define LBRACK 265
#define RBRACK 266
#define LBRACE 267
#define RBRACE 268
#define DOT 269
#define PLUS 270
#define MINUS 271
#define TIMES 272
#define DIVIDE 273
#define EQ 274
#define NEQ 275
#define LT 276
#define LE 277
#define GT 278
#define GE 279
#define AND 280
#define OR 281
#define ASSIGN 282
#define ARRAY 283
#define IF 284
#define THEN 285
#define ELSE 286
#define WHILE 287
#define FOR 288
#define TO 289
#define DO 290
#define LET 291
#define IN 292
#define END 293
#define OF 294
#define BREAK 295
#define NIL 296
#define FUNCTION 297
#define VAR 298
#define TYPE 299
#define UMINUS 300
#define YYERRCODE 256
short yylhs[] = {                                        -1,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    1,    1,
    1,    1,    2,    2,    2,    2,    2,    2,    2,    2,
    2,    2,    2,    2,    2,    3,    3,    4,    4,    9,
    9,    5,    5,   10,   10,    6,    6,   11,   11,    7,
    7,    8,    8,   12,   12,   13,   13,   13,   14,   17,
   17,   17,   17,   18,   18,   15,   15,   16,   16,   16,
   16,
};
short yylen[] = {                                         2,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    6,    1,    4,    8,    1,    1,    3,    3,    3,    4,
    3,    4,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    2,    3,    3,    3,    4,    1,
    3,    2,    3,    1,    3,    3,    4,    3,    5,    4,
    6,    4,    5,    1,    2,    1,    1,    1,    4,    1,
    2,    3,    3,    3,    5,    4,    6,    6,    8,    7,
    9,
};
short yydefred[] = {                                      0,
    0,    0,    2,    3,    0,    0,    0,    0,    0,    0,
   15,    4,    0,    0,    6,    7,    8,    9,   10,   12,
   16,    0,    0,    0,    0,    0,    0,    0,   42,    0,
    0,   35,    0,    0,    0,    0,    0,    0,    0,    0,
   56,   57,   58,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   38,
    0,    0,    0,    0,   46,    0,   19,    0,   17,    0,
   43,    0,    0,    0,    0,    0,    0,    0,   55,    0,
    0,   33,   34,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   21,    0,    0,   39,    0,    0,   47,   45,
    0,    0,    0,    0,    0,    0,    0,   52,    0,   22,
   41,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   60,    0,    0,   59,   53,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   61,    0,    0,   49,    0,    0,
    0,    0,    0,    0,    0,   62,   63,    0,    0,    0,
    0,    0,   65,    0,    0,    0,
};
short yydgoto[] = {                                      30,
   14,   15,   16,   17,   18,   19,   20,   21,   62,   31,
   66,   39,   40,   41,   42,   43,  124,  118,
};
short yysindex[] = {                                    -92,
 -242, -183,    0,    0, -252,  -92,  -92,  -92, -234, -192,
    0,    0,  725, -248,    0,    0,    0,    0,    0,    0,
    0,  -92, -193,  -92, -254, -217,  -92, -131,    0,  483,
 -219,    0,  605,  -51, -220, -190, -185, -178, -205, -192,
    0,    0,    0,  -92,  -92,  -92,  -92,  -92,  -92,  -92,
  -92,  -92,  -92,  -92,  -92,  -92, -161,  -92,  725,    0,
  -90, -163,  645, -162,    0, -153,    0,  725,    0,  -92,
    0,  -92,  -92,  -92, -128, -245, -142, -133,    0, -180,
 -180,    0,    0, -123, -123, -123, -123, -123, -123,  765,
  443,  685,    0,  725,  -92,    0, -154,  -92,    0,    0,
  567,  725,  523, -196, -118,  -92, -198,    0, -148,    0,
    0,  -92,  -63,  -92,  -92, -108, -246, -105, -126,  725,
    0, -235, -125,    0,    0,  725,  -85,  725,  -28,  -81,
  -80,  -92, -243,  -92,    0,  -75,  -79,    0,  -92,  -66,
  -76,  725,  -57,  -92,  725,    0,    0,  725,  -55,  -92,
  -69,  725,    0,  725,  -92,  725,
};
short yyrindex[] = {                                      0,
    0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   81,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, -251,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  -86,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  524,    0,
  -33,    0,    0,    0,    0,    0,    0,  566,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  121,
  161,    0,    0,  201,  241,  284,  324,  364,  404,  444,
  484,    0,    0,  606,    0,    0,    1,    0,    0,    0,
  806,  646,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  -36,    0,    0,    0,    0,    0,    0, -209,
    0,    0,    0,    0,    0,  686,    0,  726,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, -191,
    0, -188,    0,    0, -179,    0,    0,  766,    0,    0,
    0, -170,    0, -155,    0, -124,
};
short yygindex[] = {                                      2,
    0,    0,    0,    0,    0,    0,    0,    0,  138,  -40,
  107,  195,    0,    0,    0,    0,    0, -122,
};
#define YYTABLESIZE 1105
short yytable[] = {                                     136,
   20,   13,   64,   28,    2,    3,    4,   32,   33,   34,
    5,   29,   44,   65,  131,  105,   56,  143,    6,   22,
   57,  116,   35,   59,   61,   63,  153,  132,   68,  100,
  144,    7,  135,   58,    8,    9,  106,  109,   10,   67,
    1,   44,   11,   12,   71,   80,   81,   82,   83,   84,
   85,   86,   87,   88,   89,   90,   91,   92,  121,   94,
  116,   74,    1,    2,    3,    4,   75,  117,  122,    5,
   60,   76,   64,  101,  102,  103,   64,    6,   77,   23,
    5,   24,   66,   25,  123,   26,   78,   66,   66,   66,
    7,   46,   47,    8,    9,   93,   61,   10,   27,  113,
   96,   11,   12,   68,   36,   37,   38,  120,   68,   68,
   68,   98,   67,  126,   99,  128,  129,   67,   67,   67,
   31,   70,    1,    2,    3,    4,   70,   70,   70,    5,
   22,  107,   69,  142,  104,  145,   69,    6,  119,  112,
  148,   69,   69,   69,  125,  152,   44,   45,   46,   47,
    7,  154,  130,    8,    9,  134,  156,   10,  133,  108,
   32,   11,   12,    1,    2,    3,    4,   71,  137,   95,
    5,   64,   71,   71,   71,  140,  141,  147,    6,   44,
   45,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,    7,  146,  149,    8,    9,  127,  150,   10,  151,
   25,  116,   11,   12,  155,   54,   44,   45,   46,   47,
   48,   49,   50,   51,   52,   53,   54,   55,   44,   45,
   46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
   40,   48,  111,  138,   79,    0,    0,    0,   73,    0,
   30,   44,   45,   46,   47,   48,   49,   50,   51,   52,
   53,   54,   55,    0,    0,    0,    0,    0,    0,    0,
   20,  139,   20,    0,   20,   20,   20,    0,   20,   20,
   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
   20,   20,   20,   26,    0,   20,   20,    0,    0,   20,
   20,    0,   20,   20,    0,    0,    0,   20,   20,   20,
    1,    0,    1,    0,    1,    0,    1,    0,    1,    0,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    0,   27,    0,    1,    1,    0,    0,    1,
    1,    0,    1,    1,    0,    0,    0,    1,    1,    1,
    5,    0,    5,    0,    5,    0,    5,    0,    5,    0,
    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    5,    5,    0,   28,    0,    5,    5,    0,    0,    5,
    5,    0,    5,    5,    0,    0,    0,    5,    5,    5,
   31,    0,   31,    0,   31,    0,   31,    0,   31,    0,
   31,   31,    0,    0,   31,   31,   31,   31,   31,   31,
   31,   31,    0,   29,    0,   31,   31,    0,    0,   31,
   31,    0,   31,   31,    0,    0,    0,   31,   31,   31,
   32,    0,   32,    0,   32,    0,   32,    0,   32,    0,
   32,   32,    0,    0,   32,   32,   32,   32,   32,   32,
   32,   32,    0,   24,    0,   32,   32,    0,    0,   32,
   32,    0,   32,   32,    0,    0,    0,   32,   32,   32,
   25,    0,   25,    0,   25,    0,   25,    0,   25,    0,
    0,    0,    0,    0,   25,   25,   25,   25,   25,   25,
   25,   25,    0,   23,    0,   25,   25,    0,    0,   25,
   25,    0,   25,   25,    0,    0,    0,   25,   25,   25,
   30,    0,   30,    0,   30,    0,   30,    0,   30,    0,
    0,    0,    0,    0,   30,   30,   30,   30,   30,   30,
   30,   30,    0,   18,    0,   30,   30,    0,    0,   30,
   30,    0,   30,   30,    0,    0,    0,   30,   30,   30,
    0,    0,    0,   26,    0,   26,    0,   26,    0,   26,
    0,   26,    0,    0,    0,    0,    0,   26,   26,   26,
   26,   26,   26,   26,   26,   37,    0,    0,   26,   26,
    0,    0,   26,   26,    0,   26,   26,    0,    0,    0,
   26,   26,   26,   27,    0,   27,    0,   27,    0,   27,
    0,   27,    0,    0,    0,    0,    0,   27,   27,   27,
   27,   27,   27,   27,   27,   36,    0,    0,   27,   27,
    0,    0,   27,   27,    0,   27,   27,    0,    0,    0,
   27,   27,   27,   28,    0,   28,    0,   28,    0,   28,
    0,   28,    0,    0,    0,    0,    0,   28,   28,   28,
   28,   28,   28,   28,   28,   13,    0,    0,   28,   28,
    0,    0,   28,   28,    0,   28,   28,    0,    0,    0,
   28,   28,   28,   29,    0,   29,    0,   29,    0,   29,
    0,   29,    0,    0,    0,    0,    0,   29,   29,   29,
   29,   29,   29,   29,   29,   11,    0,    0,   29,   29,
    0,    0,   29,   29,    0,   29,   29,    0,    0,    0,
   29,   29,   29,   24,    0,   24,    0,   24,    0,   24,
    0,   24,   44,   45,   46,   47,   48,   49,   50,   51,
   52,   53,   54,   24,   24,   51,    0,    0,   24,   24,
    0,    0,   24,   24,    0,   24,   24,    0,    0,    0,
   24,   24,   24,   23,   70,   23,    0,   23,    0,   23,
    0,   23,   44,   45,   46,   47,   48,   49,   50,   51,
   52,   53,   54,   55,   23,   14,    0,    0,   23,   23,
    0,    0,   23,   23,    0,   23,   23,    0,    0,    0,
   23,   23,   23,   18,    0,   18,    0,   18,    0,   18,
    0,   18,   44,   45,   46,   47,   48,   49,   50,   51,
   52,   53,   54,   55,    0,   50,    0,    0,   18,   18,
    0,  115,   18,   18,    0,   18,   18,    0,    0,    0,
   18,   18,   18,    0,    0,   37,    0,   37,    0,   37,
    0,   37,    0,   37,    0,    0,   44,   45,   46,   47,
   48,   49,   50,   51,   52,   53,   54,   55,    0,    0,
   37,   37,  114,    0,   37,   37,    0,   37,   37,    0,
    0,    0,   37,   37,   37,   36,    0,   36,    0,   36,
    0,   36,    0,   36,   44,   45,   46,   47,   48,   49,
   50,   51,   52,   53,   54,   55,    0,    0,    0,   72,
   36,   36,    0,    0,   36,   36,    0,   36,   36,    0,
    0,    0,   36,   36,   36,   13,    0,   13,    0,   13,
   97,   13,    0,   13,   44,   45,   46,   47,   48,   49,
   50,   51,   52,   53,   54,   55,    0,    0,    0,    0,
   13,   13,    0,    0,   13,   13,    0,   13,   13,    0,
    0,    0,   13,   13,   13,   11,    0,   11,    0,   11,
  110,   11,    0,   11,   44,   45,   46,   47,   48,   49,
   50,   51,   52,   53,   54,   55,    0,    0,    0,    0,
   11,   11,    0,    0,   11,   11,    0,   11,   11,    0,
    0,    0,   11,   11,   11,   51,    0,   51,    0,   51,
    0,   51,    0,   51,   44,   45,   46,   47,   48,   49,
   50,   51,   52,   53,   54,   55,    0,    0,    0,    0,
   51,   51,    0,    0,   51,   51,    0,   51,   51,    0,
    0,    0,   51,   51,   51,   14,    0,   14,    0,   14,
    0,   14,    0,   14,   44,   45,   46,   47,   48,   49,
   50,   51,   52,   53,    0,    0,    0,    0,    0,    0,
   14,   14,    0,    0,   14,   14,    0,   14,   14,    0,
    0,    0,   14,   14,   14,   50,    0,   50,    0,   50,
    0,   50,    0,   50,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   50,    0,    0,    0,   50,   50,    0,   50,   50,    0,
    0,    0,   50,   50,   50,
};
short yycheck[] = {                                     122,
    0,    0,  257,  256,  257,  258,  259,    6,    7,    8,
  263,  264,  264,  268,  261,  261,  265,  261,  271,  262,
  269,  257,  257,   22,   23,   24,  149,  274,   27,   70,
  274,  284,  268,  282,  287,  288,  282,   78,  291,  257,
    0,  293,  295,  296,  264,   44,   45,   46,   47,   48,
   49,   50,   51,   52,   53,   54,   55,   56,  257,   58,
  257,  282,  256,  257,  258,  259,  257,  264,  267,  263,
  264,  257,  264,   72,   73,   74,  268,  271,  257,  263,
    0,  265,  292,  267,  283,  269,  292,  297,  298,  299,
  284,  272,  273,  287,  288,  257,   95,  291,  282,   98,
  264,  295,  296,  292,  297,  298,  299,  106,  297,  298,
  299,  274,  292,  112,  268,  114,  115,  297,  298,  299,
    0,  292,  256,  257,  258,  259,  297,  298,  299,  263,
  262,  274,  264,  132,  263,  134,  292,  271,  257,  294,
  139,  297,  298,  299,  293,  144,  270,  271,  272,  273,
  284,  150,  261,  287,  288,  282,  155,  291,  264,  293,
    0,  295,  296,  256,  257,  258,  259,  292,  294,  260,
  263,  257,  297,  298,  299,  257,  257,  257,  271,  270,
  271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
  281,  284,  268,  260,  287,  288,  260,  274,  291,  257,
    0,  257,  295,  296,  274,  292,  270,  271,  272,  273,
  274,  275,  276,  277,  278,  279,  280,  281,  270,  271,
  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
  264,  268,   95,  127,   40,   -1,   -1,   -1,  290,   -1,
    0,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  279,  280,  281,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  260,  290,  262,   -1,  264,  265,  266,   -1,  268,  269,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,  282,    0,   -1,  285,  286,   -1,   -1,  289,
  290,   -1,  292,  293,   -1,   -1,   -1,  297,  298,  299,
  260,   -1,  262,   -1,  264,   -1,  266,   -1,  268,   -1,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,   -1,    0,   -1,  285,  286,   -1,   -1,  289,
  290,   -1,  292,  293,   -1,   -1,   -1,  297,  298,  299,
  260,   -1,  262,   -1,  264,   -1,  266,   -1,  268,   -1,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,   -1,    0,   -1,  285,  286,   -1,   -1,  289,
  290,   -1,  292,  293,   -1,   -1,   -1,  297,  298,  299,
  260,   -1,  262,   -1,  264,   -1,  266,   -1,  268,   -1,
  270,  271,   -1,   -1,  274,  275,  276,  277,  278,  279,
  280,  281,   -1,    0,   -1,  285,  286,   -1,   -1,  289,
  290,   -1,  292,  293,   -1,   -1,   -1,  297,  298,  299,
  260,   -1,  262,   -1,  264,   -1,  266,   -1,  268,   -1,
  270,  271,   -1,   -1,  274,  275,  276,  277,  278,  279,
  280,  281,   -1,    0,   -1,  285,  286,   -1,   -1,  289,
  290,   -1,  292,  293,   -1,   -1,   -1,  297,  298,  299,
  260,   -1,  262,   -1,  264,   -1,  266,   -1,  268,   -1,
   -1,   -1,   -1,   -1,  274,  275,  276,  277,  278,  279,
  280,  281,   -1,    0,   -1,  285,  286,   -1,   -1,  289,
  290,   -1,  292,  293,   -1,   -1,   -1,  297,  298,  299,
  260,   -1,  262,   -1,  264,   -1,  266,   -1,  268,   -1,
   -1,   -1,   -1,   -1,  274,  275,  276,  277,  278,  279,
  280,  281,   -1,    0,   -1,  285,  286,   -1,   -1,  289,
  290,   -1,  292,  293,   -1,   -1,   -1,  297,  298,  299,
   -1,   -1,   -1,  260,   -1,  262,   -1,  264,   -1,  266,
   -1,  268,   -1,   -1,   -1,   -1,   -1,  274,  275,  276,
  277,  278,  279,  280,  281,    0,   -1,   -1,  285,  286,
   -1,   -1,  289,  290,   -1,  292,  293,   -1,   -1,   -1,
  297,  298,  299,  260,   -1,  262,   -1,  264,   -1,  266,
   -1,  268,   -1,   -1,   -1,   -1,   -1,  274,  275,  276,
  277,  278,  279,  280,  281,    0,   -1,   -1,  285,  286,
   -1,   -1,  289,  290,   -1,  292,  293,   -1,   -1,   -1,
  297,  298,  299,  260,   -1,  262,   -1,  264,   -1,  266,
   -1,  268,   -1,   -1,   -1,   -1,   -1,  274,  275,  276,
  277,  278,  279,  280,  281,    0,   -1,   -1,  285,  286,
   -1,   -1,  289,  290,   -1,  292,  293,   -1,   -1,   -1,
  297,  298,  299,  260,   -1,  262,   -1,  264,   -1,  266,
   -1,  268,   -1,   -1,   -1,   -1,   -1,  274,  275,  276,
  277,  278,  279,  280,  281,    0,   -1,   -1,  285,  286,
   -1,   -1,  289,  290,   -1,  292,  293,   -1,   -1,   -1,
  297,  298,  299,  260,   -1,  262,   -1,  264,   -1,  266,
   -1,  268,  270,  271,  272,  273,  274,  275,  276,  277,
  278,  279,  280,  280,  281,    0,   -1,   -1,  285,  286,
   -1,   -1,  289,  290,   -1,  292,  293,   -1,   -1,   -1,
  297,  298,  299,  260,  262,  262,   -1,  264,   -1,  266,
   -1,  268,  270,  271,  272,  273,  274,  275,  276,  277,
  278,  279,  280,  281,  281,    0,   -1,   -1,  285,  286,
   -1,   -1,  289,  290,   -1,  292,  293,   -1,   -1,   -1,
  297,  298,  299,  260,   -1,  262,   -1,  264,   -1,  266,
   -1,  268,  270,  271,  272,  273,  274,  275,  276,  277,

⌨️ 快捷键说明

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