Anarres-Mud-Driver

 view release on metacpan or  search on metacpan

Compiler/parser.c  view on Meta::CPAN

   101,    84,     0,   142,     6,    96,    81,   137,    82,     0,
     0,   137,   138,     0,   143,    99,    84,     0,     0,    41,
     0,   140,     0,   140,    42,     0,   141,     0,   140,    83,
   141,     0,   143,    98,     0,     0,    38,   142,     0,    37,
     0,    41,     0,     6,    96,     0,     0,   144,    74,     0,
   144,    92,     0,   146,     0,   145,    71,   145,     0,   145,
    72,   145,     0,   147,     0,    33,     0,   146,    33,     0,
    35,     0,    34,     0,    27,   115,    28,     0,    25,   118,
    26,     0,    29,   109,    30,     0
};

#endif

#if YYDEBUG != 0
static const short amd_yyrline[] = { 0,
   460,   461,   465,   466,   467,   468,   469,   473,   480,   490,
   497,   507,   516,   521,   529,   533,   541,   546,   558,   585,
   592,   601,   611,   615,   623,   627,   631,   636,   640,   644,
   651,   655,   659,   663,   667,   672,   676,   686,   690,   694,
   698,   702,   706,   713,   717,   724,   728,   735,   739,   746,
   750,   754,   761,   766,   774,   778,   783,   787,   789,   794,
   809,   815,   824,   828,   830,   835,   840,   848,   857,   868,
   875,   879,   883,   887,   891,   895,   899,   903,   907,   911,
   915,   919,   923,   930,   934,   941,   945,   949,   953,   957,
   961,   969,   973,   977,   981,   985,   989,   993,  1000,  1004,
  1008,  1012,  1016,  1020,  1024,  1028,  1032,  1039,  1043,  1047,
  1051,  1055,  1059,  1063,  1070,  1074,  1078,  1085,  1089,  1093,
  1102,  1103,  1110,  1114,  1121,  1125,  1129,  1133,  1137,  1141,
  1145,  1149,  1153,  1157,  1161,  1165,  1169,  1173,  1177,  1181,
  1188,  1192,  1202,  1250,  1254,  1276,  1321,  1332,  1336,  1353,
  1391,  1395,  1399,  1403,  1411,  1416,  1424,  1439,  1443,  1459,
  1463,  1467,  1484,  1489,  1500,  1514,  1516,  1523,  1529,  1538,
  1540,  1549,  1550,  1554,  1561,  1571
};
#endif

#define YYNTOKENS 93
#define YYNNTS 58
#define YYNRULES 176
#define YYNSTATES 343
#define YYMAXUTOK 320

static const char * const amd_yytname[] = {   "$","error","$undefined.","L_BREAK",
"L_CASE","L_CATCH","L_CLASS","L_CONTINUE","L_DEFAULT","L_DO","L_EFUN","L_ELSE",
"L_FOR","L_FOREACH","L_IF","L_IN","L_INHERIT","L_NEW","L_NIL","L_RETURN","L_RLIMITS",
"L_SWITCH","L_SSCANF","L_TRY","L_WHILE","L_MAP_START","L_MAP_END","L_ARRAY_START",
"L_ARRAY_END","L_FUNCTION_START","L_FUNCTION_END","L_PARAMETER","L_IDENTIFIER",
"L_STRING","L_CHARACTER","L_INTEGER","L_HEXINTEGER","L_BASIC_TYPE","L_TYPE_MODIFIER",
"L_STATIC","L_COLONCOLON","L_VOID","L_ELLIPSIS","L_ARROW","L_RANGE","LOWER_THAN_ELSE",
"L_PLUS_EQ","L_MINUS_EQ","L_DIV_EQ","L_TIMES_EQ","L_MOD_EQ","L_AND_EQ","L_OR_EQ",
"L_XOR_EQ","L_DOT_EQ","L_LOR_EQ","L_LAND_EQ","'?'","L_LOR","L_LAND","'|'","'^'",
"'&'","L_EQ","L_NE","L_GE","L_LE","'<'","'>'","L_LSH","L_RSH","'.'","'+'","'-'",
"'*'","'%'","'/'","'!'","'~'","L_INC","L_DEC","'{'","'}'","','","';'","':'",
"'('","')'","'['","']'","'='","'$'","'#'","program","definition","inheritance",
"identifier","function_declarator","variable_declarator","variable_declarator_list",
"variable_declarator_init","variable_declarator_list_init","function_prologue",
"prototype","function","block","statement_list","statement","opt_else","list_exp",
"opt_list_exp","nv_list_exp","opt_nv_list_exp","arg_list","opt_arg_list","opt_arg_list_comma",
"assoc_exp","assoc_arg_list","opt_assoc_arg_list_comma","function_name","lvalue",
"exp","cond_exp","logical_exp","compare_exp","arith_exp","prefix_exp","postfix_exp",
"array_exp","close_square","opt_endrange","basic_exp","lvalue_list","global_decl",
"local_decls","local_decl","type_decl","class_member_list","class_member","arguments",
"argument_list","argument","type_modifier_list","type_specifier","star_list",
"string_const","string","integer","array","mapping","closure", NULL
};
static const short amd_yytoknum[] = { 0,
   256,     2,   257,   258,   259,   260,   261,   262,   263,   264,
   265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
   275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
   285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
   295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
   305,   306,   307,   308,   309,   310,    63,   311,   312,   124,
    94,    38,   313,   314,   315,   316,    60,    62,   317,   318,
    46,    43,    45,    42,    37,    47,    33,   126,   319,   320,
   123,   125,    44,    59,    58,    40,    41,    91,    93,    61,
    36,    35,     0
};

static const short amd_yyr1[] = {     0,
    93,    93,    94,    94,    94,    94,    94,    95,    95,    96,
    97,    98,    99,    99,   100,   100,   101,   101,   102,   103,
   104,   105,   106,   106,   107,   107,   107,   107,   107,   107,
   107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
   107,   107,   107,   108,   108,   109,   109,   110,   110,   111,
   112,   112,   113,   113,   114,   114,   115,   115,   115,   116,
   117,   117,   118,   118,   118,   119,   119,   119,   119,   120,
   121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
   121,   121,   121,   122,   122,   123,   123,   123,   123,   123,
   123,   124,   124,   124,   124,   124,   124,   124,   125,   125,
   125,   125,   125,   125,   125,   125,   125,   126,   126,   126,
   126,   126,   126,   126,   127,   127,   127,   128,   128,   128,
   129,   129,   130,   130,   131,   131,   131,   131,   131,   131,
   131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
   132,   132,   133,   134,   134,   135,   136,   137,   137,   138,
   139,   139,   139,   139,   140,   140,   141,   142,   142,   143,
   143,   143,   144,   144,   144,   145,   145,   145,   145,   146,
   146,   147,   147,   148,   149,   150
};

static const short amd_yyr2[] = {     0,
     2,     0,     1,     1,     1,     1,     1,     3,     4,     1,
     5,     2,     1,     3,     1,     3,     1,     3,     3,     2,
     2,     4,     0,     2,     2,     1,     6,     7,     5,     9,
     7,     9,     7,     7,     2,     5,     3,     2,     2,     2,
     3,     1,     2,     0,     2,     1,     3,     0,     1,     1,
     0,     1,     1,     3,     0,     1,     0,     1,     2,     3,
     1,     3,     0,     1,     2,     1,     2,     3,     3,     1,
     1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
     3,     3,     3,     1,     5,     1,     3,     3,     3,     3,
     3,     1,     3,     3,     3,     3,     3,     3,     1,     3,
     3,     3,     3,     3,     3,     3,     3,     1,     2,     2,
     2,     2,     2,     2,     1,     2,     2,     1,     5,     8,
     1,     1,     0,     1,     1,     1,     1,     1,     1,     1,
     1,     1,     4,     3,     4,     5,     4,     5,     6,     3,
     0,     3,     4,     0,     2,     3,     6,     0,     2,     3,
     0,     1,     1,     2,     1,     3,     2,     0,     2,     1,
     1,     2,     0,     2,     2,     1,     3,     3,     1,     1,
     2,     1,     1,     3,     3,     3
};

static const short amd_yydefact[] = {     2,

Compiler/parser.c  view on Meta::CPAN

case 138:
#line 1174 "parser.y"
{
			amd_yyval.obj = N_A1("New", amd_yyvsp[-1].sv);
		;
    break;}
case 139:
#line 1178 "parser.y"
{
			amd_yyval.obj = N_A2R("CallOther", amd_yyvsp[-5].obj, amd_yyvsp[-3].sv, amd_yyvsp[-1].av);
		;
    break;}
case 140:
#line 1182 "parser.y"
{
			amd_yyval.obj = N_A2("Member", amd_yyvsp[-2].obj, amd_yyvsp[0].sv);
		;
    break;}
case 141:
#line 1189 "parser.y"
{
			amd_yyval.av = newAV();
		;
    break;}
case 142:
#line 1193 "parser.y"
{
			av_push(amd_yyvsp[-2].av, amd_yyvsp[0].obj);
			amd_yyval.av = amd_yyvsp[-2].av;
		;
    break;}
case 143:
#line 1203 "parser.y"
{
			int		 len;
			int		 i;
			SV		**svp;
			AV		*vdl;
			AV		*vd;
			SV		*name;
			const char		*type;
			SV		*stars;
			SV		*var;

			type = amd_yyvsp[-2].str;
			vdl = amd_yyvsp[-1].av;
			len = av_len(vdl);

			for (i = 0; i <= len; i++) {
				svp = av_fetch(vdl, i, FALSE);
				if (!svp) continue;

				/* The AV returned from variable_declarator */
				vd = (AV *)SvRV(*svp);

				/* These two should be guaranteed dereferencable */
				stars = *( av_fetch(vd, 0, FALSE) );
				name = *( av_fetch(vd, 1, FALSE) );
				var = amd_yyparse_variable(name, type, stars, newSViv(amd_yyvsp[-3].number));

				/* XXX Check global modifiers, and possibly make these
				 * variables static. */

				if (amd_yyvsp[-3].number & M_STATIC) {
					SvREFCNT_dec(
						amd_yyparse_program_apply(amd_yyparse_param,
										"static", name, var));
				}
				else {
					SvREFCNT_dec(
						amd_yyparse_program_apply(amd_yyparse_param,
										"global", name, var));
				}
			}

			/* See local_decl for memory management notes. */
		;
    break;}
case 144:
#line 1251 "parser.y"
{
			amd_yyval.av = newAV();
		;
    break;}
case 145:
#line 1255 "parser.y"
{
			SV		**svp;
			int		 len;
			int		 i;

			len = av_len(amd_yyvsp[0].av);
			av_extend(amd_yyvsp[-1].av, av_len(amd_yyvsp[-1].av) + av_len(amd_yyvsp[0].av) + 1);

			for (i = 0; i <= len; i++) {
				svp = av_fetch(amd_yyvsp[0].av, i, FALSE);
				if (svp)
					av_push(amd_yyvsp[-1].av, *svp);
				else
					av_push(amd_yyvsp[-1].av, &PL_sv_undef);
			}

			amd_yyval.av = amd_yyvsp[-1].av;
		;
    break;}
case 146:
#line 1277 "parser.y"
{
			int		 len;
			int		 i;
			SV		**svp;
			AV		*vdl;
			AV		*vd;
			SV		*name;
			const char		*type;
			SV		*stars;
			SV		*var;

			amd_yyval.av = newAV();

			type = amd_yyvsp[-2].str;
			vdl = amd_yyvsp[-1].av;
			len = av_len(vdl);

			for (i = 0; i <= len; i++) {
				svp = av_fetch(vdl, i, FALSE);
				if (!svp) continue;

				/* The AV returned from variable_declarator_init */
				vd = (AV *)SvRV(*svp);

				/* These two should be guaranteed dereferencable */



( run in 1.049 second using v1.01-cache-2.11-cpan-5a3173703d6 )