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

📄 y.tab.c

📁 使用yacc和lex编写的cmm语言的词法分析和语法分析程序.
💻 C
📖 第 1 页 / 共 4 页
字号:
     240,   246,   252,   258,   261,   264,   266,   268,   272,   275,     277};/* YYRHS -- A `-1'-separated list of the rules' RHS.  */static const yytype_int8 yyrhs[] ={      40,     0,    -1,    52,    41,    -1,    42,    -1,    41,    42,      -1,    54,    60,    67,    -1,    22,    -1,    21,    -1,    30,      -1,    31,    -1,    46,    -1,    -1,    46,    -1,    49,    -1,      46,    32,    49,    -1,    50,    -1,    43,    48,    -1,    47,      -1,    48,    -1,    49,    21,    49,    -1,    49,    22,    49,      -1,    49,    23,    49,    -1,    49,    24,    49,    -1,    49,      25,    49,    -1,    49,    18,    49,    -1,    49,    20,    49,      -1,    49,    19,    49,    -1,    49,     7,    49,    -1,    49,       8,    49,    -1,    49,     6,    49,    -1,    49,     5,    49,      -1,    49,     9,    49,    -1,    49,    10,    49,    -1,     3,      -1,     4,    -1,    28,    44,    33,    -1,    50,    29,    44,      34,    -1,    50,    28,    45,    33,    -1,    53,    -1,    51,      -1,    52,    51,    -1,    54,    56,    35,    -1,    55,    -1,      11,    -1,    12,    -1,    57,    -1,    56,    32,    57,    -1,      60,    18,    58,    -1,    60,    -1,    49,    -1,    36,    37,      -1,    36,    59,    37,    -1,    36,    59,    32,    37,    -1,      58,    -1,    59,    32,    58,    -1,    61,    -1,     3,    -1,      61,    29,    44,    34,    -1,    61,    29,    34,    -1,    61,      28,    74,    -1,    28,    61,    33,    -1,    63,    -1,    62,      63,    -1,    70,    71,    64,    -1,    73,    -1,    65,    -1,       3,    38,    -1,    -1,    62,    -1,    36,    52,    66,    37,      -1,    36,    66,    37,    -1,    69,    72,    -1,    16,    28,      44,    33,    -1,    -1,    -1,    70,    71,    73,    -1,    67,      -1,    44,    35,    -1,    68,    17,    72,    -1,    68,    -1,      13,    28,    44,    33,    72,    -1,    14,    28,    44,    33,      35,    -1,    15,    28,    77,    33,    35,    -1,    75,    33,      -1,    77,    33,    -1,    33,    -1,    76,    -1,    75,    32,      76,    -1,    54,    61,    -1,     3,    -1,    77,    32,     3,      -1};/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */static const yytype_uint16 yyrline[] ={       0,    41,    41,    45,    46,    49,    52,    56,    60,    64,      70,    73,    75,    79,    80,    84,    85,    89,    93,    94,      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,     105,   106,   107,   110,   115,   123,   127,   128,   132,   136,     137,   141,   145,   149,   150,   154,   155,   159,   160,   164,     165,   166,   167,   170,   171,   175,   179,   180,   181,   182,     183,   187,   188,   192,   196,   197,   201,   204,   206,   210,     211,   215,   219,   222,   226,   231,   235,   236,   237,   238,     239,   240,   241,   244,   245,   246,   250,   251,   255,   259,     260};#endif#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */static const char *const yytname[] ={  "$end", "error", "$undefined", "IDENTIFIER", "CONSTANT", "GE_OP",  "LE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "INT", "REAL", "WHILE",  "WRITE", "READ", "IF", "ELSE", "'='", "'>'", "'<'", "'+'", "'-'", "'*'",  "'/'", "'%'", "UNARY", "'.'", "'('", "'['", "'~'", "'!'", "','", "')'",  "']'", "';'", "'{'", "'}'", "':'", "$accept", "program", "fndefs",  "fndef", "unop", "expr", "exprlist", "nonnull_exprlist", "unary_expr",  "cast_expr", "expr_no_commas", "primary", "lineno_decl", "decls", "decl",  "typed_declspecs", "typespec", "initdecls", "initdcl", "init",  "initlist", "declarator", "notype_declarator", "stmts",  "lineno_stmt_or_label", "stmt_or_label", "label", "xstmts", "compstmt",  "simple_if", "if_prefix", "save_filename", "save_lineno",  "lineno_labeled_stmt", "stmt", "parmlist_or_identifiers", "parms",  "parm", "identifiers", 0};#endif# ifdef YYPRINT/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to   token YYLEX-NUM.  */static const yytype_uint16 yytoknum[] ={       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,     265,   266,   267,   268,   269,   270,   271,   272,    61,    62,      60,    43,    45,    42,    47,    37,   273,    46,    40,    91,     126,    33,    44,    41,    93,    59,   123,   125,    58};# endif/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */static const yytype_uint8 yyr1[] ={       0,    39,    40,    41,    41,    42,    43,    43,    43,    43,      44,    45,    45,    46,    46,    47,    47,    48,    49,    49,      49,    49,    49,    49,    49,    49,    49,    49,    49,    49,      49,    49,    49,    50,    50,    50,    50,    50,    51,    52,      52,    53,    54,    55,    55,    56,    56,    57,    57,    58,      58,    58,    58,    59,    59,    60,    61,    61,    61,    61,      61,    62,    62,    63,    64,    64,    65,    66,    66,    67,      67,    68,    69,    70,    71,    72,    73,    73,    73,    73,      73,    73,    73,    74,    74,    74,    75,    75,    76,    77,      77};/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */static const yytype_uint8 yyr2[] ={       0,     2,     2,     1,     2,     3,     1,     1,     1,     1,       1,     0,     1,     1,     3,     1,     2,     1,     1,     3,       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,       3,     3,     3,     1,     1,     3,     4,     4,     1,     1,       2,     3,     1,     1,     1,     1,     3,     3,     1,     1,       2,     3,     4,     1,     3,     1,     1,     4,     3,     3,       3,     1,     2,     3,     1,     1,     2,     0,     1,     4,       3,     2,     4,     0,     0,     3,     1,     2,     3,     1,       5,     5,     5,     2,     2,     1,     1,     3,     2,     1,       3};/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero   means the default is an error.  */static const yytype_uint8 yydefact[] ={       0,    43,    44,     0,    39,     0,    38,     0,    42,     1,       2,     3,    40,     0,    56,     0,     0,    45,    48,    55,       4,     0,    48,     0,     0,    41,     0,     0,     0,     0,      73,     5,    60,    46,    33,    34,     7,     6,     0,     8,       9,     0,     0,    17,    18,    49,    15,    47,    89,    85,       0,    59,     0,    86,     0,    58,     0,    10,    13,    73,      73,    61,     0,    74,     0,    50,    53,     0,    16,     0,       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,       0,     0,     0,    11,     0,    88,     0,    83,     0,    84,      57,     0,     0,    62,    70,     0,    35,     0,    51,    30,      29,    27,    28,    31,    32,    24,    26,    25,    19,    20,      21,    22,    23,     0,    12,     0,    87,    90,    14,    69,      33,     0,     0,     0,     0,     0,    63,    65,    76,    79,      73,    64,    52,    54,    37,    36,    66,     0,     0,     0,       0,    77,    73,    74,    71,     0,     0,     0,     0,    78,       0,    73,     0,     0,    72,    75,    80,    81,    82};/* YYDEFGOTO[NTERM-NUM].  */static const yytype_int16 yydefgoto[] ={      -1,     3,    10,    11,    42,   125,   113,    57,    43,    44,      58,    46,     4,     5,     6,     7,     8,    16,    17,    47,      67,    18,    19,    60,    61,   126,   127,    62,    31,   129,     130,    63,    95,   144,   131,    51,    52,    53,    54};/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing   STATE-NUM.  */#define YYPACT_NINF -130static const yytype_int16 yypact[] ={      65,  -130,  -130,    28,  -130,    65,  -130,    15,  -130,  -130,      65,  -130,  -130,    15,  -130,    15,    43,  -130,    24,    55,    -130,    15,    -9,    22,    15,  -130,   100,     0,   131,     8,      -7,  -130,  -130,  -130,  -130,  -130,  -130,  -130,   142,  -130,    -130,     4,   142,  -130,  -130,   169,    68,  -130,  -130,  -130,      15,  -130,    69,  -130,   105,  -130,    12,    20,   169,    -7,      57,  -130,    63,  -130,    16,  -130,  -130,    -1,  -130,   142,     142,   142,   142,   142,   142,   142,   142,   142,   142,   142,     142,   142,   142,   142,   142,    55,    65,  -130,   103,  -130,    -130,   142,    74,  -130,  -130,    77,  -130,    17,  -130,    95,      95,    95,    95,   197,   176,   169,    95,    95,    64,    64,    -130,  -130,  -130,    90,    20,   106,  -130,  -130,   169,  -130,      91,   115,   122,   123,   126,   109,  -130,  -130,  -130,   138,    -130,  -130,  -130,  -130,  -130,  -130,  -130,   142,   142,   153,     142,  -130,  -130,  -130,  -130,   124,   125,   116,   127,  -130,     111,  -130,   132,   133,  -130,  -130,  -130,  -130,  -130};/* YYPGOTO[NTERM-NUM].  */static const yytype_int16 yypgoto[] ={    -130,  -130,  -130,   156,  -130,   -28,  -130,    86,  -130,   129,     -12,  -130,    14,   150,  -130,    -4,  -130,  -130,   162,   -26,    -130,     3,   -13,  -130,   146,  -130,  -130,   148,   -78,  -130,    -130,   -56,    66,  -129,    58,  -130,  -130,   128,    71};/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If   positive, shift that token.  If negative, reduce the rule which   number is the opposite.  If zero, do what YYDEFACT says.   If YYTABLE_NINF, syntax error.  */#define YYTABLE_NINF -69static const yytype_int16 yytable[] ={      56,    13,    23,    48,     1,     2,    21,    34,    35,    26,      64,     1,     2,   149,    45,    66,    22,   128,    14,    12,      34,    35,   156,    50,    29,    36,    37,    30,     9,    45,     -67,    97,    38,    49,    39,    40,    98,    85,    36,    37,      41,    65,    26,    15,    30,    38,    90,    39,    40,    96,      27,    28,    91,    41,   132,    32,   115,    99,   100,   101,     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,     112,   133,   128,    12,   143,    24,     1,     2,    25,   118,     120,    35,    50,    27,    28,    45,   143,    80,    81,    82,     121,   122,   123,   124,   -68,   143,    83,    84,    36,    37,      94,    86,    87,    34,    35,    38,   117,    39,    40,   145,     146,   119,   148,    30,    34,    35,    78,    79,    80,    81,      82,    36,    37,   134,   121,   122,   123,   124,    38,   136,      39,    40,    36,    37,    34,    35,    41,    88,    89,    38,     135,    39,    40,   137,   141,    34,    35,    30,    88,   153,     138,   139,    36,    37,   140,   142,    48,   151,   152,    38,     154,    39,    40,    36,    37,    55,    20,   157,   158,   114,      38,    68,    39,    40,    69,    70,    71,    72,    73,    74,      59,    69,    70,    71,    72,    73,    33,    75,    76,    77,      78,    79,    80,    81,    82,    76,    77,    78,    79,    80,      81,    82,    69,    70,    71,    72,    93,    92,   155,   150,     147,     0,     0,     0,   116,     0,    76,    77,    78,    79,      80,    81,    82};static const yytype_int16 yycheck[] ={      28,     5,    15,     3,    11,    12,    10,     3,     4,    18,      38,    11,    12,   142,    26,    41,    13,    95,     3,     5,       3,     4,   151,    27,    21,    21,    22,    36,     0,    41,      37,    32,    28,    33,    30,    31,    37,    50,    21,    22,      36,    37,    18,    28,    36,    28,    34,    30,    31,    33,      28,    29,    32,    36,    37,    33,    84,    69,    70,    71,      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,      82,    97,   150,    59,   130,    32,    11,    12,    35,    91,       3,     4,    86,    28,    29,    97,   142,    23,    24,    25,      13,    14,    15,    16,    37,   151,    28,    29,    21,    22,      37,    32,    33,     3,     4,    28,     3,    30,    31,   137,     138,    37,   140,    36,     3,     4,    21,    22,    23,    24,      25,    21,    22,    33,    13,    14,    15,    16,    28,    38,      30,    31,    21,    22,     3,     4,    36,    32,    33,    28,      34,    30,    31,    28,    35,     3,     4,    36,    32,    33,      28,    28,    21,    22,    28,    17,     3,    33,    33,    28,      33,    30,    31,    21,    22,    34,    10,    35,    35,    83,      28,    42,    30,    31,     5,     6,     7,     8,     9,    10,      30,     5,     6,     7,     8,     9,    24,    18,    19,    20,      21,    22,    23,    24,    25,    19,    20,    21,    22,    23,      24,    25,     5,     6,     7,     8,    60,    59,   150,   143,     139,    -1,    -1,    -1,    86,    -1,    19,    20,    21,    22,      23,    24,    25};/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing   symbol of state STATE-NUM.  */static const yytype_uint8 yystos[] ={       0,    11,    12,    40,    51,    52,    53,    54,    55,     0,      41,    42,    51,    54,     3,    28,    56,    57,    60,    61,      42,    54,    60,    61,    32,    35,    18,    28,    29,    60,      36,    67,    33,    57,     3,     4,    21,    22,    28,    30,      31,    36,    43,    47,    48,    49,    50,    58,     3,    33,      54,    74,    75,    76,    77,    34,    44,    46,    49,    52,      62,    63,    66,    70,    44,    37,    58,    59,    48,     5,       6,     7,     8,     9,    10,    18,    19,    20,    21,    22,      23,    24,    25,    28,    29,    61,    32,    33,    32,    33,      34,    32,    66,    63,    37,    71,    33,    32,    37,    49,      49,    49,    49,    49,    49,    49,    49,    49,    49,    49,      49,    49,    49,    45,    46,    44,    76,     3,    49,    37,       3,    13,    14,    15,    16,    44,    64,    65,    67,    68,      69,    73,    37,    58,    33,    34,    38,    28,    28,    28,      28,    35,    17,    70,    72,    44,    44,    77,    44,    72,      71,    33,    33,    33,    33,    73,    72,    35,    35};#define yyerrok		(yyerrstatus = 0)#define yyclearin	(yychar = YYEMPTY)#define YYEMPTY		(-2)#define YYEOF		0#define YYACCEPT	goto yyacceptlab#define YYABORT		goto yyabortlab#define YYERROR		goto yyerrorlab/* Like YYERROR except do call yyerror.  This remains here temporarily   to ease the transition to the new meaning of YYERROR, for GCC.   Once GCC version 2 has supplanted version 1, this can go.  */#define YYFAIL		goto yyerrlab#define YYRECOVERING()  (!!yyerrstatus)#define YYBACKUP(Token, Value)					\do								\  if (yychar == YYEMPTY && yylen == 1)				\    {								\      yychar = (Token);						\      yylval = (Value);						\      yytoken = YYTRANSLATE (yychar);				\      YYPOPSTACK (1);						\      goto yybackup;						\    }								\  else								\    {								\      yyerror (YY_("syntax error: cannot back up")); \      YYERROR;							\    }								\while (YYID (0))#define YYTERROR	1#define YYERRCODE	256/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].   If N is 0, then set CURRENT to the empty location which ends   the previous symbol: RHS[0] (always defined).  */#define YYRHSLOC(Rhs, K) ((Rhs)[K])#ifndef YYLLOC_DEFAULT# define YYLLOC_DEFAULT(Current, Rhs, N)				\    do									\      if (YYID (N))                                                    \	{								\	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\	}								\      else								\	{								\	  (Current).first_line   = (Current).last_line   =		\	    YYRHSLOC (Rhs, 0).last_line;				\	  (Current).first_column = (Current).last_column =		\	    YYRHSLOC (Rhs, 0).last_column;				\	}								\    while (YYID (0))#endif/* YY_LOCATION_PRINT -- Print the location on the stream.   This macro was not mandated originally: define only if we know   we won't break user code: when these are the locations we know.  */#ifndef YY_LOCATION_PRINT# if YYLTYPE_IS_TRIVIAL#  define YY_LOCATION_PRINT(File, Loc)			\     fprintf (File, "%d.%d-%d.%d",			\	      (Loc).first_line, (Loc).first_column,	\	      (Loc).last_line,  (Loc).last_column)# else#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)# endif#endif/* YYLEX -- calling `yylex' with the right arguments.  */#ifdef YYLEX_PARAM# define YYLEX yylex (YYLEX_PARAM)#else# define YYLEX yylex ()#endif/* Enable debugging if requested.  */#if YYDEBUG# ifndef YYFPRINTF#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */#  define YYFPRINTF fprintf# endif# define YYDPRINTF(Args)			\do {						\  if (yydebug)					\    YYFPRINTF Args;				\} while (YYID (0))# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \do {									  \  if (yydebug)								  \    {									  \      YYFPRINTF (stderr, "%s ", Title);					  \      yy_symbol_print (stderr,						  \		  Type, Value); \      YYFPRINTF (stderr, "\n");						  \    }									  \} while (YYID (0))/*--------------------------------.| Print this symbol on YYOUTPUT.  |`--------------------------------*//*ARGSUSED*/#if (defined __STDC__ || defined __C99__FUNC__ \     || defined __cplusplus || defined _MSC_VER)static voidyy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)#elsestatic voidyy_symbol_value_print (yyoutput, yytype, yyvaluep)    FILE *yyoutput;    int yytype;    YYSTYPE const * const yyvaluep;#endif{  if (!yyvaluep)    return;# ifdef YYPRINT  if (yytype < YYNTOKENS)    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);# else  YYUSE (yyoutput);# endif  switch (yytype)    {      default:	break;    }}/*--------------------------------.| Print this symbol on YYOUTPUT.  |`--------------------------------*/#if (defined __STDC__ || defined __C99__FUNC__ \     || defined __cplusplus || defined _MSC_VER)static voidyy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)#elsestatic voidyy_symbol_print (yyoutput, yytype, yyvaluep)    FILE *yyoutput;    int yytype;    YYSTYPE const * const yyvaluep;#endif{  if (yytype < YYNTOKENS)    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);  else    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);  yy_symbol_value_print (yyoutput, yytype, yyvaluep);  YYFPRINTF (yyoutput, ")");}/*------------------------------------------------------------------.| yy_stack_print -- Print the state stack from its BOTTOM up to its || TOP (included).                                                   |`------------------------------------------------------------------*/#if (defined __STDC__ || defined __C99__FUNC__ \     || defined __cplusplus || defined _MSC_VER)static voidyy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)#elsestatic voidyy_stack_print (yybottom, yytop)    yytype_int16 *yybottom;    yytype_int16 *yytop;#endif{  YYFPRINTF (stderr, "Stack now");  for (; yybottom <= yytop; yybottom++)

⌨️ 快捷键说明

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