Go to the source code of this file.
Classes | |
struct | YYLTYPE |
union | yyalloc |
Typedefs | |
typedef int | YYSTYPE |
typedef YYTYPE_UINT8 | yytype_uint8 |
typedef unsigned char | yytype_uint8 |
typedef YYTYPE_INT8 | yytype_int8 |
typedef signed char | yytype_int8 |
typedef short int | yytype_int8 |
typedef YYTYPE_UINT16 | yytype_uint16 |
typedef unsigned short int | yytype_uint16 |
typedef YYTYPE_INT16 | yytype_int16 |
typedef short int | yytype_int16 |
Enumerations | |
enum | yytokentype { UNSIGNED_INTEGER = 258, NEGATIVE_INTEGER = 259, REAL = 260, STRING = 261, UNKNOWN_TOKEN = 262, COMMA = 263, TERM = 264, CODE_START = 265, LPAREN = 266, RPAREN = 267, WS = 268, AT = 269, REG_LOCAL = 270, REG_STATUS = 271, REG_LITERAL = 272, REG_INPUT = 273, REG_OUTPUT = 274, VALUES = 275, TYPE_FIXED = 276, TYPE_VARIABLE = 277, OPCODE = 278, NAME = 279, UNSIGNED_INTEGER = 258, NEGATIVE_INTEGER = 259, REAL = 260, STRING = 261, UNKNOWN_TOKEN = 262, COMMA = 263, TERM = 264, CODE_START = 265, LPAREN = 266, RPAREN = 267, WS = 268, AT = 269, REG_LOCAL = 270, REG_STATUS = 271, REG_LITERAL = 272, REG_INPUT = 273, REG_OUTPUT = 274, VALUES = 275, TYPE_FIXED = 276, TYPE_VARIABLE = 277, OPCODE = 278, NAME = 279, UNSIGNED_INTEGER = 258, NEGATIVE_INTEGER = 259, REAL = 260, STRING = 261, UNKNOWN_TOKEN = 262, COMMA = 263, TERM = 264, CODE_START = 265, LPAREN = 266, RPAREN = 267, WS = 268, AT = 269, REG_LOCAL = 270, REG_STATUS = 271, REG_LITERAL = 272, REG_INPUT = 273, REG_OUTPUT = 274, VALUES = 275, TYPE_FIXED = 276, TYPE_VARIABLE = 277, OPCODE = 278, NAME = 279, UNSIGNED_INTEGER = 258, NEGATIVE_INTEGER = 259, REAL = 260, STRING = 261, UNKNOWN_TOKEN = 262, COMMA = 263, TERM = 264, CODE_START = 265, LPAREN = 266, RPAREN = 267, WS = 268, AT = 269, REG_LOCAL = 270, REG_STATUS = 271, REG_LITERAL = 272, REG_INPUT = 273, REG_OUTPUT = 274, VALUES = 275, TYPE_FIXED = 276, TYPE_VARIABLE = 277, OPCODE = 278, NAME = 279, UNSIGNED_INTEGER = 258, NEGATIVE_INTEGER = 259, REAL = 260, STRING = 261, UNKNOWN_TOKEN = 262, COMMA = 263, TERM = 264, CODE_START = 265, LPAREN = 266, RPAREN = 267, WS = 268, AT = 269, REG_LOCAL = 270, REG_STATUS = 271, REG_LITERAL = 272, REG_INPUT = 273, REG_OUTPUT = 274, VALUES = 275, TYPE_FIXED = 276, TYPE_VARIABLE = 277, OPCODE = 278, NAME = 279, UNSIGNED_INTEGER = 258, NEGATIVE_INTEGER = 259, REAL = 260, STRING = 261, UNKNOWN_TOKEN = 262, COMMA = 263, TERM = 264, CODE_START = 265, LPAREN = 266, RPAREN = 267, WS = 268, AT = 269, REG_LOCAL = 270, REG_STATUS = 271, REG_LITERAL = 272, REG_INPUT = 273, REG_OUTPUT = 274, VALUES = 275, TYPE_FIXED = 276, TYPE_VARIABLE = 277, OPCODE = 278, NAME = 279 } |
Functions | |
FENNEL_BEGIN_CPPFILE ("$Id: //open/dev/fennel/calculator/CalcGrammar.ypp#2 $") | |
int | CalcYYlex (YYSTYPE *, YYLTYPE *, void *) |
void | CalcYYerror (const char *) |
static int | YYID (int i) static int YYID(i) int i |
void | free (void *) |
static void | yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const *const yyvaluep, YYLTYPE const *const yylocationp) static void yy_symbol_value_print(yyoutput |
static YYSIZE_T | yystrlen (const char *yystr) static YYSIZE_T yystrlen(yystr) const char *yystr |
int | yyparse () |
int | yyparse (void *YYPARSE_PARAM) int yyparse(YYPARSE_PARAM) void *YYPARSE_PARAM |
FENNEL_END_CPPFILE ("$Id: //open/dev/fennel/calculator/CalcGrammar.ypp#2 $") | |
Variables | |
static const yytype_uint8 | yytranslate [] |
static const yytype_uint8 | yyprhs [] |
static const yytype_int8 | yyrhs [] |
static const yytype_uint8 | yyrline [] |
static const char *const | yytname [] |
static const yytype_uint16 | yytoknum [] |
static const yytype_uint8 | yyr1 [] |
static const yytype_uint8 | yyr2 [] |
static const yytype_uint8 | yydefact [] |
static const yytype_int8 | yydefgoto [] |
static const yytype_int8 | yypact [] |
static const yytype_int8 | yypgoto [] |
static const yytype_int8 | yytable [] |
static const yytype_int8 | yycheck [] |
static const yytype_uint8 | yystos [] |
static void | yytype |
static void | yyvaluep |
static void yylocationp FILE * | yyoutput |
int | yytype |
YYSTYPE const *const | yyvaluep |
YYLTYPE const *const | yylocationp |
int | yytype |
YYSTYPE const *const | yyvaluep |
YYLTYPE const *const | yylocationp |
yytype_int16 * | top |
YYLTYPE * | yylsp |
int | yyrule |
const char * | yysrc |
int | yytype |
YYSTYPE * | yyvaluep |
YYLTYPE * | yylocationp |
typedef int YYSTYPE |
Definition at line 178 of file CalcGrammar.cpp.
typedef short int yytype_int16 |
Definition at line 232 of file CalcGrammar.cpp.
typedef YYTYPE_INT16 yytype_int16 |
Definition at line 230 of file CalcGrammar.cpp.
typedef short int yytype_int8 |
Definition at line 220 of file CalcGrammar.cpp.
typedef signed char yytype_int8 |
Definition at line 218 of file CalcGrammar.cpp.
typedef YYTYPE_INT8 yytype_int8 |
Definition at line 215 of file CalcGrammar.cpp.
typedef unsigned short int yytype_uint16 |
Definition at line 226 of file CalcGrammar.cpp.
typedef YYTYPE_UINT16 yytype_uint16 |
Definition at line 224 of file CalcGrammar.cpp.
typedef unsigned char yytype_uint8 |
Definition at line 211 of file CalcGrammar.cpp.
typedef YYTYPE_UINT8 yytype_uint8 |
Definition at line 209 of file CalcGrammar.cpp.
enum yytokentype |
Definition at line 76 of file CalcGrammar.cpp.
00076 { 00077 UNSIGNED_INTEGER = 258, 00078 NEGATIVE_INTEGER = 259, 00079 REAL = 260, 00080 STRING = 261, 00081 UNKNOWN_TOKEN = 262, 00082 COMMA = 263, 00083 TERM = 264, 00084 CODE_START = 265, 00085 LPAREN = 266, 00086 RPAREN = 267, 00087 WS = 268, 00088 AT = 269, 00089 REG_LOCAL = 270, 00090 REG_STATUS = 271, 00091 REG_LITERAL = 272, 00092 REG_INPUT = 273, 00093 REG_OUTPUT = 274, 00094 VALUES = 275, 00095 TYPE_FIXED = 276, 00096 TYPE_VARIABLE = 277, 00097 OPCODE = 278, 00098 NAME = 279 00099 };
void CalcYYerror | ( | const char * | ) |
Definition at line 1912 of file CalcGrammar.cpp.
01913 { 01914 throw CalcAssemblerException(s); 01915 }
Definition at line 1895 of file CalcGrammar.cpp.
References CalcAssembler::getLexer(), CalcLexer::getLocation(), CalcLexer::getValue(), and CalcLexer::yylex().
01896 { 01897 /* Check that we are being passed valid input */ 01898 assert(lvalp); 01899 assert(llocp); 01900 assert(parm); 01901 01902 CalcAssembler* pAssembler = (CalcAssembler*) parm; 01903 CalcLexer& lexer = pAssembler->getLexer(); 01904 01905 int token = lexer.yylex(); 01906 *lvalp = lexer.getValue(); 01907 *llocp = lexer.getLocation(); 01908 01909 return token; 01910 }
FENNEL_BEGIN_CPPFILE | ( | "$Id: //open/dev/fennel/calculator/CalcGrammar.ypp#2 $" | ) |
FENNEL_END_CPPFILE | ( | "$Id: //open/dev/fennel/calculator/CalcGrammar.ypp#2 $" | ) |
void free | ( | void * | ) |
Referenced by CalcYYfree(), VMAllocator::deallocate(), operator delete[](), FlatFileBuffer::read(), and Backtrace::writeDemangled().
static void yy_symbol_value_print | ( | FILE * | yyoutput, | |
int | yytype, | |||
YYSTYPE const *const | yyvaluep, | |||
YYLTYPE const *const | yylocationp | |||
) | [static] |
static int YYID | ( | int | i | ) | [static] |
Referenced by yyparse().
int yyparse | ( | void * | YYPARSE_PARAM | ) |
int yyparse | ( | ) |
Definition at line 1227 of file CalcGrammar.cpp.
References YYLTYPE::first_column, YYLTYPE::first_line, YYLTYPE::last_column, YYLTYPE::last_line, YYID(), yyalloc::yyls, and yylsp.
01234 { 01235 /* The look-ahead symbol. */ 01236 int yychar; 01237 01238 /* The semantic value of the look-ahead symbol. */ 01239 YYSTYPE yylval; 01240 01241 /* Number of syntax errors so far. */ 01242 int yynerrs; 01243 /* Location data for the look-ahead symbol. */ 01244 YYLTYPE yylloc; 01245 01246 int yystate; 01247 int yyn; 01248 int yyresult; 01249 /* Number of tokens to shift before error messages enabled. */ 01250 int yyerrstatus; 01251 /* Look-ahead token as an internal (translated) token number. */ 01252 int yytoken = 0; 01253 #if YYERROR_VERBOSE 01254 /* Buffer for error messages, and its allocated size. */ 01255 char yymsgbuf[128]; 01256 char *yymsg = yymsgbuf; 01257 YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 01258 #endif 01259 01260 /* Three stacks and their tools: 01261 `yyss': related to states, 01262 `yyvs': related to semantic values, 01263 `yyls': related to locations. 01264 01265 Refer to the stacks thru separate pointers, to allow yyoverflow 01266 to reallocate them elsewhere. */ 01267 01268 /* The state stack. */ 01269 yytype_int16 yyssa[YYINITDEPTH]; 01270 yytype_int16 *yyss = yyssa; 01271 yytype_int16 *yyssp; 01272 01273 /* The semantic value stack. */ 01274 YYSTYPE yyvsa[YYINITDEPTH]; 01275 YYSTYPE *yyvs = yyvsa; 01276 YYSTYPE *yyvsp; 01277 01278 /* The location stack. */ 01279 YYLTYPE yylsa[YYINITDEPTH]; 01280 YYLTYPE *yyls = yylsa; 01281 YYLTYPE *yylsp; 01282 /* The locations where the error started and ended. */ 01283 YYLTYPE yyerror_range[2]; 01284 01285 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) 01286 01287 YYSIZE_T yystacksize = YYINITDEPTH; 01288 01289 /* The variables used to return semantic value and location from the 01290 action routines. */ 01291 YYSTYPE yyval; 01292 YYLTYPE yyloc; 01293 01294 /* The number of symbols on the RHS of the reduced rule. 01295 Keep to zero when no symbol should be popped. */ 01296 int yylen = 0; 01297 01298 YYDPRINTF ((stderr, "Starting parse\n")); 01299 01300 yystate = 0; 01301 yyerrstatus = 0; 01302 yynerrs = 0; 01303 yychar = YYEMPTY; /* Cause a token to be read. */ 01304 01305 /* Initialize stack pointers. 01306 Waste one element of value and location stack 01307 so that they stay on the same level as the state stack. 01308 The wasted elements are never initialized. */ 01309 01310 yyssp = yyss; 01311 yyvsp = yyvs; 01312 yylsp = yyls; 01313 #if YYLTYPE_IS_TRIVIAL 01314 /* Initialize the default location before parsing starts. */ 01315 yylloc.first_line = yylloc.last_line = 1; 01316 yylloc.first_column = yylloc.last_column = 0; 01317 #endif 01318 01319 goto yysetstate; 01320 01321 /*------------------------------------------------------------. 01322 | yynewstate -- Push a new state, which is found in yystate. | 01323 `------------------------------------------------------------*/ 01324 yynewstate: 01325 /* In all cases, when you get here, the value and location stacks 01326 have just been pushed. So pushing a state here evens the stacks. */ 01327 yyssp++; 01328 01329 yysetstate: 01330 *yyssp = yystate; 01331 01332 if (yyss + yystacksize - 1 <= yyssp) 01333 { 01334 /* Get the current used size of the three stacks, in elements. */ 01335 YYSIZE_T yysize = yyssp - yyss + 1; 01336 01337 #ifdef yyoverflow 01338 { 01339 /* Give user a chance to reallocate the stack. Use copies of 01340 these so that the &'s don't force the real ones into 01341 memory. */ 01342 YYSTYPE *yyvs1 = yyvs; 01343 yytype_int16 *yyss1 = yyss; 01344 YYLTYPE *yyls1 = yyls; 01345 01346 /* Each stack pointer address is followed by the size of the 01347 data in use in that stack, in bytes. This used to be a 01348 conditional around just the two extra args, but that might 01349 be undefined if yyoverflow is a macro. */ 01350 yyoverflow (YY_("memory exhausted"), 01351 &yyss1, yysize * sizeof (*yyssp), 01352 &yyvs1, yysize * sizeof (*yyvsp), 01353 &yyls1, yysize * sizeof (*yylsp), 01354 &yystacksize); 01355 yyls = yyls1; 01356 yyss = yyss1; 01357 yyvs = yyvs1; 01358 } 01359 #else /* no yyoverflow */ 01360 # ifndef YYSTACK_RELOCATE 01361 goto yyexhaustedlab; 01362 # else 01363 /* Extend the stack our own way. */ 01364 if (YYMAXDEPTH <= yystacksize) 01365 goto yyexhaustedlab; 01366 yystacksize *= 2; 01367 if (YYMAXDEPTH < yystacksize) 01368 yystacksize = YYMAXDEPTH; 01369 01370 { 01371 yytype_int16 *yyss1 = yyss; 01372 union yyalloc *yyptr = 01373 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 01374 if (! yyptr) 01375 goto yyexhaustedlab; 01376 YYSTACK_RELOCATE (yyss); 01377 YYSTACK_RELOCATE (yyvs); 01378 YYSTACK_RELOCATE (yyls); 01379 # undef YYSTACK_RELOCATE 01380 if (yyss1 != yyssa) 01381 YYSTACK_FREE (yyss1); 01382 } 01383 # endif 01384 #endif /* no yyoverflow */ 01385 01386 yyssp = yyss + yysize - 1; 01387 yyvsp = yyvs + yysize - 1; 01388 yylsp = yyls + yysize - 1; 01389 01390 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 01391 (unsigned long int) yystacksize)); 01392 01393 if (yyss + yystacksize - 1 <= yyssp) 01394 YYABORT; 01395 } 01396 01397 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 01398 01399 goto yybackup; 01400 01401 /*-----------. 01402 | yybackup. | 01403 `-----------*/ 01404 yybackup: 01405 01406 /* Do appropriate processing given the current state. Read a 01407 look-ahead token if we need one and don't already have one. */ 01408 01409 /* First try to decide what to do without reference to look-ahead token. */ 01410 yyn = yypact[yystate]; 01411 if (yyn == YYPACT_NINF) 01412 goto yydefault; 01413 01414 /* Not known => get a look-ahead token if don't already have one. */ 01415 01416 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 01417 if (yychar == YYEMPTY) 01418 { 01419 YYDPRINTF ((stderr, "Reading a token: ")); 01420 yychar = YYLEX; 01421 } 01422 01423 if (yychar <= YYEOF) 01424 { 01425 yychar = yytoken = YYEOF; 01426 YYDPRINTF ((stderr, "Now at end of input.\n")); 01427 } 01428 else 01429 { 01430 yytoken = YYTRANSLATE (yychar); 01431 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 01432 } 01433 01434 /* If the proper action on seeing token YYTOKEN is to reduce or to 01435 detect an error, take that action. */ 01436 yyn += yytoken; 01437 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 01438 goto yydefault; 01439 yyn = yytable[yyn]; 01440 if (yyn <= 0) 01441 { 01442 if (yyn == 0 || yyn == YYTABLE_NINF) 01443 goto yyerrlab; 01444 yyn = -yyn; 01445 goto yyreduce; 01446 } 01447 01448 if (yyn == YYFINAL) 01449 YYACCEPT; 01450 01451 /* Count tokens shifted since error; after three, turn off error 01452 status. */ 01453 if (yyerrstatus) 01454 yyerrstatus--; 01455 01456 /* Shift the look-ahead token. */ 01457 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 01458 01459 /* Discard the shifted token unless it is eof. */ 01460 if (yychar != YYEOF) 01461 yychar = YYEMPTY; 01462 01463 yystate = yyn; 01464 *++yyvsp = yylval; 01465 *++yylsp = yylloc; 01466 goto yynewstate; 01467 01468 01469 /*-----------------------------------------------------------. 01470 | yydefault -- do the default action for the current state. | 01471 `-----------------------------------------------------------*/ 01472 yydefault: 01473 yyn = yydefact[yystate]; 01474 if (yyn == 0) 01475 goto yyerrlab; 01476 goto yyreduce; 01477 01478 01479 /*-----------------------------. 01480 | yyreduce -- Do a reduction. | 01481 `-----------------------------*/ 01482 yyreduce: 01483 /* yyn is the number of a rule to reduce with. */ 01484 yylen = yyr2[yyn]; 01485 01486 /* If YYLEN is nonzero, implement the default value of the action: 01487 `$$ = $1'. 01488 01489 Otherwise, the following line sets YYVAL to garbage. 01490 This behavior is undocumented and Bison 01491 users should not rely upon it. Assigning to YYVAL 01492 unconditionally makes the parser a bit smaller, and it avoids a 01493 GCC warning that YYVAL may be used uninitialized. */ 01494 yyval = yyvsp[1-yylen]; 01495 01496 /* Default location. */ 01497 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 01498 YY_REDUCE_PRINT (yyn); 01499 switch (yyn) 01500 { 01501 case 2: 01502 #line 107 "CalcGrammar.ypp" 01503 { ((CalcAssembler*) parm)->init(); ;} 01504 break; 01505 01506 case 3: 01507 #line 109 "CalcGrammar.ypp" 01508 { ((CalcAssembler*) parm)->bindRegisters(); ;} 01509 break; 01510 01511 case 8: 01512 #line 120 "CalcGrammar.ypp" 01513 { ((CalcAssembler*) parm)->selectRegisterSet((yyvsp[(1) - (1)].u.v_regset)); ;} 01514 break; 01515 01516 case 10: 01517 #line 124 "CalcGrammar.ypp" 01518 { ((CalcAssembler*) parm)->allocateTuples(); ;} 01519 break; 01520 01521 case 11: 01522 #line 125 "CalcGrammar.ypp" 01523 { ((CalcAssembler*) parm)->allocateTuples(); ;} 01524 break; 01525 01526 case 13: 01527 #line 128 "CalcGrammar.ypp" 01528 { ((CalcAssembler*) parm)->selectRegisterSet((yyvsp[(1) - (1)].u.v_regset)); ;} 01529 break; 01530 01531 case 15: 01532 #line 132 "CalcGrammar.ypp" 01533 { ((CalcAssembler*) parm)->bindLiteralDone(); ;} 01534 break; 01535 01536 case 19: 01537 #line 138 "CalcGrammar.ypp" 01538 { ((CalcAssembler*) parm)->bindNextLiteral<uint64_t>((yyvsp[(1) - (1)].u.v_uint64)); ;} 01539 break; 01540 01541 case 20: 01542 #line 139 "CalcGrammar.ypp" 01543 { ((CalcAssembler*) parm)->bindNextLiteral<int64_t>((yyvsp[(1) - (1)].u.v_int64)); ;} 01544 break; 01545 01546 case 21: 01547 #line 140 "CalcGrammar.ypp" 01548 { ((CalcAssembler*) parm)->bindNextLiteral<double>((yyvsp[(1) - (1)].u.v_double)); ;} 01549 break; 01550 01551 case 22: 01552 #line 141 "CalcGrammar.ypp" 01553 { ((CalcAssembler*) parm)->bindNextLiteral<string>((yyvsp[(1) - (1)].v_string)); ;} 01554 break; 01555 01556 case 23: 01557 #line 142 "CalcGrammar.ypp" 01558 { ((CalcAssembler*) parm)->bindNextLiteral<PConstBuffer>(NULL); ;} 01559 break; 01560 01561 case 28: 01562 #line 148 "CalcGrammar.ypp" 01563 { ((CalcAssembler*) parm)->addRegister((yyvsp[(1) - (1)].u.v_type)); ;} 01564 break; 01565 01566 case 29: 01567 #line 150 "CalcGrammar.ypp" 01568 { ((CalcAssembler*) parm)->addRegister((yyvsp[(1) - (3)].u.v_type), (yyvsp[(3) - (3)].u.v_uint64)); ;} 01569 break; 01570 01571 case 33: 01572 #line 160 "CalcGrammar.ypp" 01573 { ((CalcAssembler*) parm)->addInstruction((yyvsp[(1) - (1)].u.p_inst)); ;} 01574 break; 01575 01576 case 34: 01577 #line 162 "CalcGrammar.ypp" 01578 { ((CalcAssembler*) parm)->addInstruction((yyvsp[(2) - (2)].u.p_inst)); ;} 01579 break; 01580 01581 case 35: 01582 #line 166 "CalcGrammar.ypp" 01583 { 01584 (yyval.u.p_inst) = ((CalcAssembler*) parm)->createInstruction((yyvsp[(1) - (7)].v_opcode), (yyvsp[(2) - (7)].u.p_regref), (yyvsp[(4) - (7)].u.p_regref), (yyvsp[(6) - (7)].u.p_regref), (yyloc)); 01585 ;} 01586 break; 01587 01588 case 36: 01589 #line 171 "CalcGrammar.ypp" 01590 { 01591 (yyval.u.p_inst) = ((CalcAssembler*) parm)->createInstruction((yyvsp[(1) - (5)].v_opcode), (yyvsp[(2) - (5)].u.p_regref), (yyvsp[(4) - (5)].u.p_regref), (yyloc)); 01592 ;} 01593 break; 01594 01595 case 37: 01596 #line 176 "CalcGrammar.ypp" 01597 { 01598 (yyval.u.p_inst) = ((CalcAssembler*) parm)->createInstruction((yyvsp[(1) - (3)].v_opcode), (yyvsp[(2) - (3)].u.p_regref), (yyloc)); 01599 ;} 01600 break; 01601 01602 case 38: 01603 #line 181 "CalcGrammar.ypp" 01604 { 01605 (yyval.u.p_inst) = ((CalcAssembler*) parm)->createInstruction((yyvsp[(1) - (3)].v_opcode), (yyvsp[(2) - (3)].u.v_pc), (yyloc)); 01606 ;} 01607 break; 01608 01609 case 39: 01610 #line 186 "CalcGrammar.ypp" 01611 { 01612 (yyval.u.p_inst) = ((CalcAssembler*) parm)->createInstruction((yyvsp[(1) - (5)].v_opcode), (yyvsp[(2) - (5)].u.v_pc), (yyvsp[(4) - (5)].u.p_regref), (yyloc)); 01613 ;} 01614 break; 01615 01616 case 40: 01617 #line 191 "CalcGrammar.ypp" 01618 { 01619 (yyval.u.p_inst) = ((CalcAssembler*) parm)->createInstruction((yyvsp[(1) - (6)].v_opcode), (yyvsp[(2) - (6)].v_string), (yyvsp[(4) - (6)].v_register_list), (yyloc)); 01620 ;} 01621 break; 01622 01623 case 41: 01624 #line 196 "CalcGrammar.ypp" 01625 { 01626 (yyval.u.p_inst) = ((CalcAssembler*) parm)->createInstruction((yyvsp[(1) - (2)].v_opcode), (yyloc)); 01627 ;} 01628 break; 01629 01630 case 43: 01631 #line 204 "CalcGrammar.ypp" 01632 { (yyval.u.v_pc) = (yyvsp[(2) - (2)].u.v_uint64); ((CalcAssembler*) parm)->saveMaxPC((yyval.u.v_pc)); ;} 01633 break; 01634 01635 case 52: 01636 #line 213 "CalcGrammar.ypp" 01637 { (yyval.v_register_list).push_back((yyvsp[(1) - (1)].u.p_regref)); ;} 01638 break; 01639 01640 case 53: 01641 #line 214 "CalcGrammar.ypp" 01642 { (yyval.v_register_list) = (yyvsp[(1) - (3)].v_register_list); (yyval.v_register_list).push_back((yyvsp[(3) - (3)].u.p_regref)); ;} 01643 break; 01644 01645 case 54: 01646 #line 217 "CalcGrammar.ypp" 01647 { (yyval.u.p_regref) = ((CalcAssembler*) parm)->getRegister((yyvsp[(1) - (2)].u.v_regset), (yyvsp[(2) - (2)].u.v_uint64)); ;} 01648 break; 01649 01650 case 55: 01651 #line 218 "CalcGrammar.ypp" 01652 { (yyval.u.p_regref) = ((CalcAssembler*) parm)->getRegister((yyvsp[(1) - (2)].u.v_regset), (yyvsp[(2) - (2)].u.v_uint64)); ;} 01653 break; 01654 01655 case 56: 01656 #line 219 "CalcGrammar.ypp" 01657 { (yyval.u.p_regref) = ((CalcAssembler*) parm)->getRegister((yyvsp[(1) - (2)].u.v_regset), (yyvsp[(2) - (2)].u.v_uint64)); ;} 01658 break; 01659 01660 case 57: 01661 #line 220 "CalcGrammar.ypp" 01662 { (yyval.u.p_regref) = ((CalcAssembler*) parm)->getRegister((yyvsp[(1) - (2)].u.v_regset), (yyvsp[(2) - (2)].u.v_uint64)); ;} 01663 break; 01664 01665 case 58: 01666 #line 221 "CalcGrammar.ypp" 01667 { (yyval.u.p_regref) = ((CalcAssembler*) parm)->getRegister((yyvsp[(1) - (2)].u.v_regset), (yyvsp[(2) - (2)].u.v_uint64)); ;} 01668 break; 01669 01670 01671 /* Line 1267 of yacc.c. */ 01672 #line 1673 "CalcGrammar.tab.cpp" 01673 default: break; 01674 } 01675 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 01676 01677 YYPOPSTACK (yylen); 01678 yylen = 0; 01679 YY_STACK_PRINT (yyss, yyssp); 01680 01681 *++yyvsp = yyval; 01682 *++yylsp = yyloc; 01683 01684 /* Now `shift' the result of the reduction. Determine what state 01685 that goes to, based on the state we popped back to and the rule 01686 number reduced by. */ 01687 01688 yyn = yyr1[yyn]; 01689 01690 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 01691 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 01692 yystate = yytable[yystate]; 01693 else 01694 yystate = yydefgoto[yyn - YYNTOKENS]; 01695 01696 goto yynewstate; 01697 01698 01699 /*------------------------------------. 01700 | yyerrlab -- here on detecting error | 01701 `------------------------------------*/ 01702 yyerrlab: 01703 /* If not already recovering from an error, report this error. */ 01704 if (!yyerrstatus) 01705 { 01706 ++yynerrs; 01707 #if ! YYERROR_VERBOSE 01708 yyerror (YY_("syntax error")); 01709 #else 01710 { 01711 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 01712 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 01713 { 01714 YYSIZE_T yyalloc = 2 * yysize; 01715 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 01716 yyalloc = YYSTACK_ALLOC_MAXIMUM; 01717 if (yymsg != yymsgbuf) 01718 YYSTACK_FREE (yymsg); 01719 yymsg = (char *) YYSTACK_ALLOC (yyalloc); 01720 if (yymsg) 01721 yymsg_alloc = yyalloc; 01722 else 01723 { 01724 yymsg = yymsgbuf; 01725 yymsg_alloc = sizeof yymsgbuf; 01726 } 01727 } 01728 01729 if (0 < yysize && yysize <= yymsg_alloc) 01730 { 01731 (void) yysyntax_error (yymsg, yystate, yychar); 01732 yyerror (yymsg); 01733 } 01734 else 01735 { 01736 yyerror (YY_("syntax error")); 01737 if (yysize != 0) 01738 goto yyexhaustedlab; 01739 } 01740 } 01741 #endif 01742 } 01743 01744 yyerror_range[0] = yylloc; 01745 01746 if (yyerrstatus == 3) 01747 { 01748 /* If just tried and failed to reuse look-ahead token after an 01749 error, discard it. */ 01750 01751 if (yychar <= YYEOF) 01752 { 01753 /* Return failure if at end of input. */ 01754 if (yychar == YYEOF) 01755 YYABORT; 01756 } 01757 else 01758 { 01759 yydestruct ("Error: discarding", 01760 yytoken, &yylval, &yylloc); 01761 yychar = YYEMPTY; 01762 } 01763 } 01764 01765 /* Else will try to reuse look-ahead token after shifting the error 01766 token. */ 01767 goto yyerrlab1; 01768 01769 01770 /*---------------------------------------------------. 01771 | yyerrorlab -- error raised explicitly by YYERROR. | 01772 `---------------------------------------------------*/ 01773 yyerrorlab: 01774 01775 /* Pacify compilers like GCC when the user code never invokes 01776 YYERROR and the label yyerrorlab therefore never appears in user 01777 code. */ 01778 if (/*CONSTCOND*/ 0) 01779 goto yyerrorlab; 01780 01781 yyerror_range[0] = yylsp[1-yylen]; 01782 /* Do not reclaim the symbols of the rule which action triggered 01783 this YYERROR. */ 01784 YYPOPSTACK (yylen); 01785 yylen = 0; 01786 YY_STACK_PRINT (yyss, yyssp); 01787 yystate = *yyssp; 01788 goto yyerrlab1; 01789 01790 01791 /*-------------------------------------------------------------. 01792 | yyerrlab1 -- common code for both syntax error and YYERROR. | 01793 `-------------------------------------------------------------*/ 01794 yyerrlab1: 01795 yyerrstatus = 3; /* Each real token shifted decrements this. */ 01796 01797 for (;;) 01798 { 01799 yyn = yypact[yystate]; 01800 if (yyn != YYPACT_NINF) 01801 { 01802 yyn += YYTERROR; 01803 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 01804 { 01805 yyn = yytable[yyn]; 01806 if (0 < yyn) 01807 break; 01808 } 01809 } 01810 01811 /* Pop the current state because it cannot handle the error token. */ 01812 if (yyssp == yyss) 01813 YYABORT; 01814 01815 yyerror_range[0] = *yylsp; 01816 yydestruct ("Error: popping", 01817 yystos[yystate], yyvsp, yylsp); 01818 YYPOPSTACK (1); 01819 yystate = *yyssp; 01820 YY_STACK_PRINT (yyss, yyssp); 01821 } 01822 01823 if (yyn == YYFINAL) 01824 YYACCEPT; 01825 01826 *++yyvsp = yylval; 01827 01828 yyerror_range[1] = yylloc; 01829 /* Using YYLLOC is tempting, but would change the location of 01830 the look-ahead. YYLOC is available though. */ 01831 YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); 01832 *++yylsp = yyloc; 01833 01834 /* Shift the error token. */ 01835 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 01836 01837 yystate = yyn; 01838 goto yynewstate; 01839 01840 01841 /*-------------------------------------. 01842 | yyacceptlab -- YYACCEPT comes here. | 01843 `-------------------------------------*/ 01844 yyacceptlab: 01845 yyresult = 0; 01846 goto yyreturn; 01847 01848 /*-----------------------------------. 01849 | yyabortlab -- YYABORT comes here. | 01850 `-----------------------------------*/ 01851 yyabortlab: 01852 yyresult = 1; 01853 goto yyreturn; 01854 01855 #ifndef yyoverflow 01856 /*-------------------------------------------------. 01857 | yyexhaustedlab -- memory exhaustion comes here. | 01858 `-------------------------------------------------*/ 01859 yyexhaustedlab: 01860 yyerror (YY_("memory exhausted")); 01861 yyresult = 2; 01862 /* Fall through. */ 01863 #endif 01864 01865 yyreturn: 01866 if (yychar != YYEOF && yychar != YYEMPTY) 01867 yydestruct ("Cleanup: discarding lookahead", 01868 yytoken, &yylval, &yylloc); 01869 /* Do not reclaim the symbols of the rule which action triggered 01870 this YYABORT or YYACCEPT. */ 01871 YYPOPSTACK (yylen); 01872 YY_STACK_PRINT (yyss, yyssp); 01873 while (yyssp != yyss) 01874 { 01875 yydestruct ("Cleanup: popping", 01876 yystos[*yyssp], yyvsp, yylsp); 01877 YYPOPSTACK (1); 01878 } 01879 #ifndef yyoverflow 01880 if (yyss != yyssa) 01881 YYSTACK_FREE (yyss); 01882 #endif 01883 #if YYERROR_VERBOSE 01884 if (yymsg != yymsgbuf) 01885 YYSTACK_FREE (yymsg); 01886 #endif 01887 /* Make sure YYID is used. */ 01888 return YYID (yyresult); 01889 }
static YYSIZE_T yystrlen | ( | const char * | yystr | ) | const [static] |
Definition at line 859 of file CalcGrammar.cpp.
const yytype_int8 yycheck[] [static] |
Initial value:
{ 71, 72, 0, 74, 15, 16, 17, 18, 19, 21, 22, 8, 20, 9, 85, 12, 10, 88, 14, 15, 16, 17, 18, 19, 3, 4, 5, 6, 24, 15, 16, 17, 18, 19, 47, 48, 49, 50, 51, 15, 16, 9, 18, 19, 8, 9, 8, 9, 8, 9, 8, 9, 8, 23, 3, 8, 3, 11, 8, 62, 34, 9, 19, 9, 9, 9, 9, 9, 9, 9, 9, 30, -1, -1, -1, -1, -1, 32, -1, -1, 32, 32 }
Definition at line 639 of file CalcGrammar.cpp.
const yytype_uint8 yydefact[] [static] |
Initial value:
{ 2, 0, 0, 1, 24, 25, 26, 27, 3, 10, 6, 8, 0, 13, 7, 5, 11, 0, 0, 0, 0, 28, 0, 30, 0, 0, 0, 23, 12, 0, 0, 9, 0, 4, 32, 33, 14, 19, 20, 21, 22, 15, 17, 29, 31, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 49, 46, 51, 45, 34, 23, 0, 42, 43, 58, 56, 57, 55, 54, 0, 0, 38, 0, 37, 18, 16, 52, 0, 47, 50, 48, 0, 0, 0, 0, 39, 0, 36, 53, 40, 0, 35 }
Definition at line 572 of file CalcGrammar.cpp.
const yytype_int8 yydefgoto[] [static] |
Initial value:
{ -1, 1, 2, 12, 8, 9, 10, 17, 15, 20, 16, 19, 28, 63, 41, 42, 11, 23, 24, 33, 34, 35, 65, 53, 54, 55, 79, 80, 57, 81, 59, 82 }
Definition at line 587 of file CalcGrammar.cpp.
Definition at line 1169 of file CalcGrammar.cpp.
YYLTYPE const* const yylocationp |
Definition at line 833 of file CalcGrammar.cpp.
YYLTYPE const* const yylocationp |
Definition at line 799 of file CalcGrammar.cpp.
void yylocationp FILE* yyoutput |
Definition at line 795 of file CalcGrammar.cpp.
const yytype_int8 yypact[] [static] |
Initial value:
{ -72, 2, 24, -72, -72, -72, -72, -72, -72, -11, -72, -72, 6, -72, -72, -72, -72, -12, 32, -12, -8, -72, 44, -72, 36, 30, 38, 21, -72, 51, -12, -72, 4, -72, 30, -72, -72, -72, -72, -72, -72, 47, -72, -72, -72, -72, 53, 53, 53, 53, 53, 53, 46, 40, 50, 52, 54, -72, 55, -72, 56, -72, 21, 57, -72, -72, -72, -72, -72, -72, -72, 14, 14, -72, 14, -72, -72, -72, -72, 3, -72, -72, -72, 58, 42, 14, 59, -72, 14, -72, -72, -72, 60, -72 }
Definition at line 598 of file CalcGrammar.cpp.
const yytype_int8 yypgoto[] [static] |
Initial value:
{ -72, -72, -72, -72, -72, -72, 61, -72, -72, -72, -72, -72, -72, -72, -72, -3, -72, 41, 43, -72, -72, 26, -13, -72, -72, -71, -72, 45, -72, 48, -72, 49 }
Definition at line 613 of file CalcGrammar.cpp.
const yytype_uint8 yyprhs[] [static] |
Initial value:
{ 0, 0, 3, 4, 5, 12, 15, 17, 20, 21, 26, 27, 28, 32, 33, 38, 39, 44, 46, 50, 52, 54, 56, 58, 59, 61, 63, 65, 67, 69, 73, 75, 79, 81, 83, 86, 94, 100, 104, 108, 114, 121, 124, 126, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 151, 154, 157, 160, 163 }
Definition at line 473 of file CalcGrammar.cpp.
const yytype_uint8 yyr1[] [static] |
Initial value:
{ 0, 25, 27, 28, 26, 29, 30, 30, 32, 31, 33, 34, 33, 36, 35, 38, 37, 39, 39, 40, 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 43, 43, 44, 45, 45, 46, 46, 46, 46, 46, 46, 46, 47, 48, 49, 49, 49, 50, 50, 50, 50, 50, 51, 51, 52, 53, 54, 55, 56 }
Definition at line 548 of file CalcGrammar.cpp.
const yytype_uint8 yyr2[] [static] |
Initial value:
{ 0, 2, 0, 0, 6, 2, 1, 2, 0, 4, 0, 0, 3, 0, 4, 0, 4, 1, 3, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 2, 7, 5, 3, 3, 5, 6, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2 }
Definition at line 559 of file CalcGrammar.cpp.
const yytype_int8 yyrhs[] [static] |
Initial value:
{ 26, 0, -1, -1, -1, 27, 29, 28, 10, 9, 44, -1, 30, 33, -1, 31, -1, 30, 31, -1, -1, 41, 32, 43, 9, -1, -1, -1, 35, 34, 37, -1, -1, 17, 36, 43, 9, -1, -1, 20, 39, 38, 9, -1, 40, -1, 39, 8, 40, -1, 3, -1, 4, -1, 5, -1, 6, -1, -1, 15, -1, 16, -1, 18, -1, 19, -1, 21, -1, 22, 8, 3, -1, 42, -1, 43, 8, 42, -1, 45, -1, 46, -1, 45, 46, -1, 23, 49, 8, 50, 8, 50, 9, -1, 23, 49, 8, 50, 9, -1, 23, 50, 9, -1, 23, 48, 9, -1, 23, 48, 8, 50, 9, -1, 23, 24, 11, 51, 12, 9, -1, 23, 9, -1, 3, -1, 14, 47, -1, 52, -1, 56, -1, 54, -1, 52, -1, 56, -1, 53, -1, 54, -1, 55, -1, 50, -1, 51, 8, 50, -1, 19, 47, -1, 18, 47, -1, 16, 47, -1, 17, 47, -1, 15, 47, -1 }
Definition at line 484 of file CalcGrammar.cpp.
const yytype_uint8 yyrline[] [static] |
Initial value:
{ 0, 107, 107, 109, 107, 114, 117, 117, 120, 120, 124, 125, 125, 128, 128, 132, 132, 135, 135, 138, 139, 140, 141, 142, 145, 145, 145, 145, 148, 149, 153, 154, 157, 160, 161, 165, 170, 175, 180, 185, 190, 195, 201, 204, 207, 207, 207, 210, 210, 210, 210, 210, 213, 214, 217, 218, 219, 220, 221 }
Definition at line 506 of file CalcGrammar.cpp.
int yyrule |
Definition at line 889 of file CalcGrammar.cpp.
const char* yysrc |
Definition at line 981 of file CalcGrammar.cpp.
const yytype_uint8 yystos[] [static] |
Initial value:
{ 0, 26, 27, 0, 15, 16, 18, 19, 29, 30, 31, 41, 28, 17, 31, 33, 35, 32, 10, 36, 34, 21, 22, 42, 43, 9, 43, 20, 37, 8, 8, 9, 23, 44, 45, 46, 9, 3, 4, 5, 6, 39, 40, 3, 42, 9, 14, 15, 16, 17, 18, 19, 24, 48, 49, 50, 52, 53, 54, 55, 56, 46, 8, 38, 3, 47, 47, 47, 47, 47, 47, 11, 8, 9, 8, 9, 40, 9, 50, 51, 52, 54, 56, 50, 50, 8, 12, 9, 8, 9, 50, 9, 50, 9 }
Definition at line 654 of file CalcGrammar.cpp.
const yytype_int8 yytable[] [static] |
Initial value:
{ 78, 83, 3, 84, 4, 5, 13, 6, 7, 21, 22, 85, 27, 45, 90, 86, 18, 92, 46, 47, 48, 49, 50, 51, 37, 38, 39, 40, 52, 47, 48, 49, 50, 51, 66, 67, 68, 69, 70, 4, 5, 25, 6, 7, 30, 31, 30, 36, 72, 73, 88, 89, 29, 32, 43, 62, 64, 71, 74, 76, 61, 75, 26, -47, -50, -48, 77, 87, 91, 93, 14, 44, 0, 0, 0, 0, 0, 56, 0, 0, 58, 60 }
Definition at line 626 of file CalcGrammar.cpp.
const char* const yytname[] [static] |
Initial value:
{ "$end", "error", "$undefined", "UNSIGNED_INTEGER", "NEGATIVE_INTEGER", "REAL", "STRING", "UNKNOWN_TOKEN", "COMMA", "TERM", "CODE_START", "LPAREN", "RPAREN", "WS", "AT", "REG_LOCAL", "REG_STATUS", "REG_LITERAL", "REG_INPUT", "REG_OUTPUT", "VALUES", "TYPE_FIXED", "TYPE_VARIABLE", "OPCODE", "NAME", "$accept", "program", "@1", "@2", "preamble", "register_sets", "register_set", "@3", "literal_set_values", "@4", "literal_set", "@5", "literal_values", "@6", "literal_defs", "literal_def", "set_name", "type_size", "type_size_list", "program_text", "instructions", "instruction", "index", "location", "result", "operand", "operand_list", "output_reg", "input_reg", "status_reg", "literal_reg", "local_reg", 0 }
Definition at line 520 of file CalcGrammar.cpp.
const yytype_uint16 yytoknum[] [static] |
Initial value:
{ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 }
Definition at line 539 of file CalcGrammar.cpp.
const yytype_uint8 yytranslate[] [static] |
Definition at line 438 of file CalcGrammar.cpp.
int yytype |
Definition at line 1166 of file CalcGrammar.cpp.
int yytype |
Definition at line 830 of file CalcGrammar.cpp.
int yytype |
Definition at line 797 of file CalcGrammar.cpp.
void yytype |
Definition at line 795 of file CalcGrammar.cpp.
Definition at line 1168 of file CalcGrammar.cpp.
Definition at line 832 of file CalcGrammar.cpp.
Definition at line 798 of file CalcGrammar.cpp.
void yyvaluep |
Definition at line 795 of file CalcGrammar.cpp.