/**************************************************************************** * U N R E G I S T E R E D C O P Y * * You are on day 1 of your 30 day trial period. * * This file was produced by an UNREGISTERED COPY of Parser Generator. It is * for evaluation purposes only. If you continue to use Parser Generator 30 * days after installation then you are required to purchase a license. For * more information see the online help or go to the Bumble-Bee Software * homepage at: * * http://www.bumblebeesoftware.com * * This notice must remain present in the file. It cannot be removed. ****************************************************************************/ /**************************************************************************** * Text1.cpp * C++ source file generated from Text1.y. * * Date: 06/26/20 * Time: 21:10:46 * * AYACC Version: 2.07 ****************************************************************************/ #include // namespaces #ifdef YYSTDCPPLIB using namespace std; #endif #ifdef YYNAMESPACE using namespace yl; #endif #line 1 ".\\Text1.y" #include #include #line 43 "Text1.cpp" // repeated because of possible precompiled header #include // namespaces #ifdef YYSTDCPPLIB using namespace std; #endif #ifdef YYNAMESPACE using namespace yl; #endif #include "../../ParserGenerator/Text1.h" #ifndef YYSTYPE #define YYSTYPE int #endif #ifndef YYSTACK_SIZE #define YYSTACK_SIZE 100 #endif #ifndef YYSTACK_MAX #define YYSTACK_MAX 0 #endif /**************************************************************************** * N O T E * * If the compiler generates a YYPARSERNAME error then you have not declared * the name of the parser. The easiest way to do this is to use a name * declaration. This is placed in the declarations section of your YACC * source file and is introduced with the %name keyword. For instance, the * following name declaration declares the parser myparser: * * %name myparser * * For more information see help. ****************************************************************************/ // yyattribute #ifdef YYDEBUG void YYFAR* YYPARSERNAME::yyattribute1(int index) const { YYSTYPE YYFAR* p = &((YYSTYPE YYFAR*)yyattributestackptr)[yytop + index]; return p; } #define yyattribute(index) (*(YYSTYPE YYFAR*)yyattribute1(index)) #else #define yyattribute(index) (((YYSTYPE YYFAR*)yyattributestackptr)[yytop + (index)]) #endif void YYPARSERNAME::yystacktoval(int index) { yyassert(index >= 0); *(YYSTYPE YYFAR*)yyvalptr = ((YYSTYPE YYFAR*)yyattributestackptr)[index]; } void YYPARSERNAME::yyvaltostack(int index) { yyassert(index >= 0); ((YYSTYPE YYFAR*)yyattributestackptr)[index] = *(YYSTYPE YYFAR*)yyvalptr; } void YYPARSERNAME::yylvaltoval() { *(YYSTYPE YYFAR*)yyvalptr = *(YYSTYPE YYFAR*)yylvalptr; } void YYPARSERNAME::yyvaltolval() { *(YYSTYPE YYFAR*)yylvalptr = *(YYSTYPE YYFAR*)yyvalptr; } void YYPARSERNAME::yylvaltostack(int index) { yyassert(index >= 0); ((YYSTYPE YYFAR*)yyattributestackptr)[index] = *(YYSTYPE YYFAR*)yylvalptr; } void YYFAR* YYPARSERNAME::yynewattribute(int count) { yyassert(count >= 0); return new YYFAR YYSTYPE[count]; } void YYPARSERNAME::yydeleteattribute(void YYFAR* attribute) { delete[] (YYSTYPE YYFAR*)attribute; } void YYPARSERNAME::yycopyattribute(void YYFAR* dest, const void YYFAR* src, int count) { for (int i = 0; i < count; i++) { ((YYSTYPE YYFAR*)dest)[i] = ((YYSTYPE YYFAR*)src)[i]; } } #ifdef YYDEBUG void YYPARSERNAME::yyinitdebug(void YYFAR** p, int count) const { yyassert(p != NULL); yyassert(count >= 1); YYSTYPE YYFAR** p1 = (YYSTYPE YYFAR**)p; for (int i = 0; i < count; i++) { p1[i] = &((YYSTYPE YYFAR*)yyattributestackptr)[yytop + i - (count - 1)]; } } #endif void YYPARSERNAME::yyaction(int action) { switch (action) { case 0: { #ifdef YYDEBUG YYSTYPE YYFAR* yya[4]; yyinitdebug((void YYFAR**)yya, 4); #endif { #line 10 ".\\Text1.y" printf("%g\n", yyattribute(2 - 3)); #line 164 "Text1.cpp" } } break; case 1: { #ifdef YYDEBUG YYSTYPE YYFAR* yya[3]; yyinitdebug((void YYFAR**)yya, 3); #endif { #line 13 ".\\Text1.y" yyerror("reenter last line:"); yyerrok(); #line 177 "Text1.cpp" } } break; case 2: { #ifdef YYDEBUG YYSTYPE YYFAR* yya[4]; yyinitdebug((void YYFAR**)yya, 4); #endif { #line 16 ".\\Text1.y" (*(YYSTYPE YYFAR*)yyvalptr) = yyattribute(1 - 3) + yyattribute(3 - 3); #line 190 "Text1.cpp" } } break; case 3: { #ifdef YYDEBUG YYSTYPE YYFAR* yya[4]; yyinitdebug((void YYFAR**)yya, 4); #endif { #line 17 ".\\Text1.y" (*(YYSTYPE YYFAR*)yyvalptr) = yyattribute(1 - 3) - yyattribute(3 - 3); #line 203 "Text1.cpp" } } break; case 4: { #ifdef YYDEBUG YYSTYPE YYFAR* yya[4]; yyinitdebug((void YYFAR**)yya, 4); #endif { #line 18 ".\\Text1.y" (*(YYSTYPE YYFAR*)yyvalptr) = yyattribute(1 - 3) * yyattribute(3 - 3); #line 216 "Text1.cpp" } } break; case 5: { #ifdef YYDEBUG YYSTYPE YYFAR* yya[4]; yyinitdebug((void YYFAR**)yya, 4); #endif { #line 19 ".\\Text1.y" (*(YYSTYPE YYFAR*)yyvalptr) = yyattribute(1 - 3) / yyattribute(3 - 3); #line 229 "Text1.cpp" } } break; case 6: { #ifdef YYDEBUG YYSTYPE YYFAR* yya[4]; yyinitdebug((void YYFAR**)yya, 4); #endif { #line 20 ".\\Text1.y" (*(YYSTYPE YYFAR*)yyvalptr) = yyattribute(2 - 3); #line 242 "Text1.cpp" } } break; case 7: { #ifdef YYDEBUG YYSTYPE YYFAR* yya[3]; yyinitdebug((void YYFAR**)yya, 3); #endif { #line 21 ".\\Text1.y" (*(YYSTYPE YYFAR*)yyvalptr) = yyattribute(2 - 2);yyerror("missing')'"); yyerrok(); #line 255 "Text1.cpp" } } break; case 8: { #ifdef YYDEBUG YYSTYPE YYFAR* yya[3]; yyinitdebug((void YYFAR**)yya, 3); #endif { #line 22 ".\\Text1.y" (*(YYSTYPE YYFAR*)yyvalptr) = -yyattribute(2 - 2); #line 268 "Text1.cpp" } } break; default: yyassert(0); break; } } void YYPARSERNAME::yytables() { yyattribute_size = sizeof(YYSTYPE); yysstack_size = YYSTACK_SIZE; yystack_max = YYSTACK_MAX; #ifdef YYDEBUG static const yysymbol_t YYNEARFAR YYBASED_CODE symbol[] = { { "$end", 0 }, { "\'\\n\'", 10 }, { "\'(\'", 40 }, { "\')\'", 41 }, { "\'*\'", 42 }, { "\'+\'", 43 }, { "\'-\'", 45 }, { "\'/\'", 47 }, { "error", 256 }, { "NUMBER", 257 }, { "UMINUS", 258 }, { NULL, 0 } }; yysymbol = symbol; static const char* const YYNEARFAR YYBASED_CODE rule[] = { "$accept: lines", "lines: lines expr \'\\n\'", "lines: lines \'\\n\'", "lines: lines \'\\n\'", "lines: error \'\\n\'", "expr: expr \'+\' expr", "expr: expr \'-\' expr", "expr: expr \'*\' expr", "expr: expr \'/\' expr", "expr: \'(\' expr \')\'", "expr: \'(\' expr", "expr: \'-\' expr", "expr: NUMBER" }; yyrule = rule; #endif static const yyreduction_t YYNEARFAR YYBASED_CODE reduction[] = { { 0, 1, -1 }, { 1, 3, 0 }, { 1, 2, -1 }, { 1, 2, -1 }, { 1, 2, 1 }, { 2, 3, 2 }, { 2, 3, 3 }, { 2, 3, 4 }, { 2, 3, 5 }, { 2, 3, 6 }, { 2, 2, 7 }, { 2, 2, 8 }, { 2, 1, -1 } }; yyreduction = reduction; yytokenaction_size = 218; static const yytokenaction_t YYNEARFAR YYBASED_CODE tokenaction[] = { { 15, YYAT_SHIFT, 5 }, { 8, YYAT_SHIFT, 11 }, { 9, YYAT_SHIFT, 16 }, { 9, YYAT_SHIFT, 12 }, { 9, YYAT_SHIFT, 13 }, { 15, YYAT_SHIFT, 6 }, { 9, YYAT_SHIFT, 14 }, { 2, YYAT_ACCEPT, 0 }, { 9, YYAT_SHIFT, 15 }, { 19, YYAT_SHIFT, 12 }, { 18, YYAT_SHIFT, 12 }, { 1, YYAT_SHIFT, 3 }, { 0, YYAT_SHIFT, 1 }, { -1, YYAT_ERROR, 0 }, { 19, YYAT_SHIFT, 15 }, { 18, YYAT_SHIFT, 15 }, { -1, YYAT_ERROR, 0 }, { 2, YYAT_SHIFT, 4 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { 8, YYAT_SHIFT, 12 }, { 8, YYAT_SHIFT, 13 }, { -1, YYAT_ERROR, 0 }, { 8, YYAT_SHIFT, 14 }, { -1, YYAT_ERROR, 0 }, { 8, YYAT_SHIFT, 15 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { -1, YYAT_ERROR, 0 }, { 15, YYAT_SHIFT, 7 } }; yytokenaction = tokenaction; static const yystateaction_t YYNEARFAR YYBASED_CODE stateaction[] = { { -244, 1, YYAT_ERROR, 0 }, { 1, 1, YYAT_ERROR, 0 }, { 7, 1, YYAT_DEFAULT, 15 }, { 0, 0, YYAT_REDUCE, 4 }, { 0, 0, YYAT_REDUCE, 2 }, { 0, 0, YYAT_DEFAULT, 15 }, { 0, 0, YYAT_DEFAULT, 15 }, { 0, 0, YYAT_REDUCE, 12 }, { -9, 1, YYAT_ERROR, 0 }, { -39, 1, YYAT_REDUCE, 10 }, { 0, 0, YYAT_REDUCE, 11 }, { 0, 0, YYAT_REDUCE, 1 }, { 0, 0, YYAT_DEFAULT, 15 }, { 0, 0, YYAT_DEFAULT, 15 }, { 0, 0, YYAT_DEFAULT, 15 }, { -40, 1, YYAT_ERROR, 0 }, { 0, 0, YYAT_REDUCE, 9 }, { 0, 0, YYAT_REDUCE, 7 }, { -32, 1, YYAT_REDUCE, 5 }, { -33, 1, YYAT_REDUCE, 6 }, { 0, 0, YYAT_REDUCE, 8 } }; yystateaction = stateaction; yynontermgoto_size = 8; static const yynontermgoto_t YYNEARFAR YYBASED_CODE nontermgoto[] = { { 15, 20 }, { 14, 19 }, { 13, 18 }, { 12, 17 }, { 6, 10 }, { 5, 9 }, { 2, 8 }, { 0, 2 } }; yynontermgoto = nontermgoto; static const yystategoto_t YYNEARFAR YYBASED_CODE stategoto[] = { { 6, -1 }, { 0, -1 }, { 4, -1 }, { 0, -1 }, { 0, -1 }, { 3, -1 }, { 2, -1 }, { 0, -1 }, { 0, -1 }, { 0, -1 }, { 0, -1 }, { 0, -1 }, { 1, -1 }, { 0, -1 }, { -1, -1 }, { -2, -1 }, { 0, -1 }, { 0, -1 }, { 0, -1 }, { 0, -1 }, { 0, -1 } }; yystategoto = stategoto; yydestructorptr = NULL; yytokendestptr = NULL; yytokendest_size = 0; yytokendestbaseptr = NULL; yytokendestbase_size = 0; } #line 25 ".\\Text1.y" int yylex(void) { int c; while ((c = getchar)) == ' '); if (c == '.' || isdigit(c)) { ungetc(c, stdin); scanf("%lf", &yylval); return NUMBER; } return c; }