From 915ea8a609ff1a81c38c064dc1efb4b6a54f3490 Mon Sep 17 00:00:00 2001 From: jriegel Date: Sun, 10 Aug 2014 19:17:40 +0200 Subject: [PATCH] New parser c-files --- src/Base/QuantityLexer.c | 202 +++++++++++++-------------- src/Base/QuantityParser.c | 287 ++++++++++++++++---------------------- 2 files changed, 224 insertions(+), 265 deletions(-) diff --git a/src/Base/QuantityLexer.c b/src/Base/QuantityLexer.c index a1b8c30bd..c70b69d62 100644 --- a/src/Base/QuantityLexer.c +++ b/src/Base/QuantityLexer.c @@ -573,8 +573,8 @@ int yy_flex_debug = 0; #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "" -#line 2 "" +#line 1 "QuantityParser.l" +#line 2 "QuantityParser.l" /* Lexer for the FreeCAD Units language */ /* (c) 2013 Juergen Riegel LGPL */ @@ -768,7 +768,7 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 31 "" +#line 31 "QuantityParser.l" #line 775 "QuantityLexer.c" @@ -852,488 +852,488 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 33 "" +#line 33 "QuantityParser.l" { BEGIN(C_COMMENT); } YY_BREAK case 2: YY_RULE_SETUP -#line 34 "" +#line 34 "QuantityParser.l" { BEGIN(INITIAL); } YY_BREAK case 3: YY_RULE_SETUP -#line 35 "" +#line 35 "QuantityParser.l" { ;} YY_BREAK case 4: YY_RULE_SETUP -#line 38 "" +#line 38 "QuantityParser.l" ; YY_BREAK case 5: /* rule 5 can match eol */ YY_RULE_SETUP -#line 39 "" +#line 39 "QuantityParser.l" ; YY_BREAK case 6: YY_RULE_SETUP -#line 41 "" +#line 41 "QuantityParser.l" { return *yytext; } YY_BREAK case 7: YY_RULE_SETUP -#line 43 "" +#line 43 "QuantityParser.l" return MINUSSIGN; YY_BREAK case 8: YY_RULE_SETUP -#line 44 "" +#line 44 "QuantityParser.l" return MINUSSIGN; YY_BREAK case 9: YY_RULE_SETUP -#line 46 "" +#line 46 "QuantityParser.l" yylval = Quantity::NanoMetre; return UNIT; // nano meter YY_BREAK case 10: YY_RULE_SETUP -#line 47 "" +#line 47 "QuantityParser.l" yylval = Quantity::MicroMetre; return UNIT; // micro meter YY_BREAK case 11: YY_RULE_SETUP -#line 48 "" +#line 48 "QuantityParser.l" yylval = Quantity::MicroMetre; return UNIT; // micro meter (greek micro in UTF8) YY_BREAK case 12: YY_RULE_SETUP -#line 49 "" +#line 49 "QuantityParser.l" yylval = Quantity::MilliMetre; return UNIT; // milli meter (internal standard length) YY_BREAK case 13: YY_RULE_SETUP -#line 50 "" +#line 50 "QuantityParser.l" yylval = Quantity::CentiMetre; return UNIT; // centi meter YY_BREAK case 14: YY_RULE_SETUP -#line 51 "" +#line 51 "QuantityParser.l" yylval = Quantity::DeciMetre; return UNIT; // deci meter YY_BREAK case 15: YY_RULE_SETUP -#line 52 "" +#line 52 "QuantityParser.l" yylval = Quantity::Metre; return UNIT; // metre YY_BREAK case 16: YY_RULE_SETUP -#line 53 "" +#line 53 "QuantityParser.l" yylval = Quantity::KiloMetre; return UNIT; // kilo meter YY_BREAK case 17: YY_RULE_SETUP -#line 55 "" +#line 55 "QuantityParser.l" yylval = Quantity::Liter; return UNIT; // Liter dm^3 YY_BREAK case 18: YY_RULE_SETUP -#line 57 "" +#line 57 "QuantityParser.l" yylval = Quantity::MicroGram; return UNIT; // micro gram YY_BREAK case 19: YY_RULE_SETUP -#line 58 "" +#line 58 "QuantityParser.l" yylval = Quantity::MicroGram; return UNIT; // micro gram YY_BREAK case 20: YY_RULE_SETUP -#line 59 "" +#line 59 "QuantityParser.l" yylval = Quantity::MilliGram; return UNIT; // milli gram YY_BREAK case 21: YY_RULE_SETUP -#line 60 "" +#line 60 "QuantityParser.l" yylval = Quantity::Gram; return UNIT; // gram YY_BREAK case 22: YY_RULE_SETUP -#line 61 "" +#line 61 "QuantityParser.l" yylval = Quantity::KiloGram; return UNIT; // kilo gram (internal standard for mass) YY_BREAK case 23: YY_RULE_SETUP -#line 62 "" +#line 62 "QuantityParser.l" yylval = Quantity::Ton; return UNIT; // Metric Tonne YY_BREAK case 24: YY_RULE_SETUP -#line 64 "" +#line 64 "QuantityParser.l" yylval = Quantity::Second; return UNIT; // second (internal standard time) YY_BREAK case 25: YY_RULE_SETUP -#line 65 "" +#line 65 "QuantityParser.l" yylval = Quantity::Minute; return UNIT; // minute YY_BREAK case 26: YY_RULE_SETUP -#line 66 "" +#line 66 "QuantityParser.l" yylval = Quantity::Hour; return UNIT; // hour YY_BREAK case 27: YY_RULE_SETUP -#line 68 "" +#line 68 "QuantityParser.l" yylval = Quantity::Ampere; return UNIT; // Ampere (internal standard electric current) YY_BREAK case 28: YY_RULE_SETUP -#line 69 "" +#line 69 "QuantityParser.l" yylval = Quantity::MilliAmpere; return UNIT; // milli Ampere YY_BREAK case 29: YY_RULE_SETUP -#line 70 "" +#line 70 "QuantityParser.l" yylval = Quantity::KiloAmpere; return UNIT; // kilo Ampere YY_BREAK case 30: YY_RULE_SETUP -#line 71 "" +#line 71 "QuantityParser.l" yylval = Quantity::MegaAmpere; return UNIT; // Mega Ampere YY_BREAK case 31: YY_RULE_SETUP -#line 73 "" +#line 73 "QuantityParser.l" yylval = Quantity::Kelvin; return UNIT; // Kelvin (internal standard thermodynamic temperature) YY_BREAK case 32: YY_RULE_SETUP -#line 74 "" +#line 74 "QuantityParser.l" yylval = Quantity::MilliKelvin; return UNIT; // Kelvin YY_BREAK case 33: YY_RULE_SETUP -#line 75 "" +#line 75 "QuantityParser.l" yylval = Quantity::MicroKelvin; return UNIT; // Kelvin YY_BREAK case 34: YY_RULE_SETUP -#line 76 "" +#line 76 "QuantityParser.l" yylval = Quantity::MicroKelvin; return UNIT; // Kelvin YY_BREAK case 35: YY_RULE_SETUP -#line 78 "" +#line 78 "QuantityParser.l" yylval = Quantity::Mole; return UNIT; // Mole (internal standard amount of substance) YY_BREAK case 36: YY_RULE_SETUP -#line 80 "" +#line 80 "QuantityParser.l" yylval = Quantity::Candela; return UNIT; // Candela (internal standard luminous intensity) YY_BREAK case 37: YY_RULE_SETUP -#line 82 "" +#line 82 "QuantityParser.l" yylval = Quantity::Inch; return UNIT; // inch YY_BREAK case 38: YY_RULE_SETUP -#line 83 "" +#line 83 "QuantityParser.l" yylval = Quantity::Inch; return UNIT; // inch YY_BREAK case 39: YY_RULE_SETUP -#line 84 "" +#line 84 "QuantityParser.l" yylval = Quantity::Foot; return UNIT; // foot YY_BREAK case 40: YY_RULE_SETUP -#line 85 "" +#line 85 "QuantityParser.l" yylval = Quantity::Foot; return UNIT; // foot YY_BREAK case 41: YY_RULE_SETUP -#line 86 "" +#line 86 "QuantityParser.l" yylval = Quantity::Thou; return UNIT; // thou (in/1000) YY_BREAK case 42: YY_RULE_SETUP -#line 87 "" +#line 87 "QuantityParser.l" yylval = Quantity::Thou; return UNIT; // mil (the thou in US) YY_BREAK case 43: YY_RULE_SETUP -#line 88 "" +#line 88 "QuantityParser.l" yylval = Quantity::Yard; return UNIT; // yard YY_BREAK case 44: YY_RULE_SETUP -#line 89 "" +#line 89 "QuantityParser.l" yylval = Quantity::Mile; return UNIT; // mile YY_BREAK case 45: YY_RULE_SETUP -#line 93 "" +#line 93 "QuantityParser.l" yylval = Quantity::Pound; return UNIT; // pound YY_BREAK case 46: YY_RULE_SETUP -#line 94 "" +#line 94 "QuantityParser.l" yylval = Quantity::Pound; return UNIT; // pound YY_BREAK case 47: YY_RULE_SETUP -#line 95 "" +#line 95 "QuantityParser.l" yylval = Quantity::Ounce; return UNIT; // ounce YY_BREAK case 48: YY_RULE_SETUP -#line 96 "" +#line 96 "QuantityParser.l" yylval = Quantity::Stone; return UNIT; // Stone YY_BREAK case 49: YY_RULE_SETUP -#line 97 "" +#line 97 "QuantityParser.l" yylval = Quantity::Hundredweights; return UNIT; // hundredweights YY_BREAK case 50: YY_RULE_SETUP -#line 99 "" +#line 99 "QuantityParser.l" yylval = Quantity::PoundForce; return UNIT; // pound YY_BREAK case 51: YY_RULE_SETUP -#line 101 "" +#line 101 "QuantityParser.l" yylval = Quantity::Newton; return UNIT; // Newton (kg*m/s^2) YY_BREAK case 52: YY_RULE_SETUP -#line 102 "" +#line 102 "QuantityParser.l" yylval = Quantity::KiloNewton; return UNIT; // Newton YY_BREAK case 53: YY_RULE_SETUP -#line 103 "" +#line 103 "QuantityParser.l" yylval = Quantity::MegaNewton; return UNIT; // Newton YY_BREAK case 54: YY_RULE_SETUP -#line 104 "" +#line 104 "QuantityParser.l" yylval = Quantity::MilliNewton; return UNIT; // Newton YY_BREAK case 55: YY_RULE_SETUP -#line 106 "" +#line 106 "QuantityParser.l" yylval = Quantity::Pascal; return UNIT; // Pascal (kg/m*s^2 or N/m^2) YY_BREAK case 56: YY_RULE_SETUP -#line 107 "" +#line 107 "QuantityParser.l" yylval = Quantity::KiloPascal; return UNIT; // Pascal YY_BREAK case 57: YY_RULE_SETUP -#line 108 "" +#line 108 "QuantityParser.l" yylval = Quantity::MegaPascal; return UNIT; // Pascal YY_BREAK case 58: YY_RULE_SETUP -#line 109 "" +#line 109 "QuantityParser.l" yylval = Quantity::GigaPascal; return UNIT; // Pascal YY_BREAK case 59: YY_RULE_SETUP -#line 111 "" +#line 111 "QuantityParser.l" yylval = Quantity::Torr; return UNIT; // portion of Pascal ( 101325/760 ) YY_BREAK case 60: YY_RULE_SETUP -#line 112 "" +#line 112 "QuantityParser.l" yylval = Quantity::mTorr; return UNIT; // YY_BREAK case 61: YY_RULE_SETUP -#line 113 "" +#line 113 "QuantityParser.l" yylval = Quantity::yTorr; return UNIT; // YY_BREAK case 62: YY_RULE_SETUP -#line 114 "" +#line 114 "QuantityParser.l" yylval = Quantity::yTorr; return UNIT; // YY_BREAK case 63: YY_RULE_SETUP -#line 116 "" +#line 116 "QuantityParser.l" yylval = Quantity::PSI; return UNIT; // pounds/in^2 YY_BREAK case 64: YY_RULE_SETUP -#line 117 "" +#line 117 "QuantityParser.l" yylval = Quantity::KSI; return UNIT; // 1000 x pounds/in^2 YY_BREAK case 65: YY_RULE_SETUP -#line 119 "" +#line 119 "QuantityParser.l" yylval = Quantity::Watt; return UNIT; // Watt (kg*m^2/s^3) YY_BREAK case 66: YY_RULE_SETUP -#line 120 "" +#line 120 "QuantityParser.l" yylval = Quantity::VoltAmpere; return UNIT; // VoltAmpere (kg*m^2/s^3) YY_BREAK case 67: YY_RULE_SETUP -#line 122 "" +#line 122 "QuantityParser.l" yylval = Quantity::Joule; return UNIT; // Joule (kg*m^2/s^2) YY_BREAK case 68: YY_RULE_SETUP -#line 123 "" +#line 123 "QuantityParser.l" yylval = Quantity::NewtonMeter; return UNIT; // N*m = Joule YY_BREAK case 69: YY_RULE_SETUP -#line 124 "" +#line 124 "QuantityParser.l" yylval = Quantity::VoltAmpereSecond; return UNIT; // V*A*s = Joule YY_BREAK case 70: YY_RULE_SETUP -#line 125 "" +#line 125 "QuantityParser.l" yylval = Quantity::WattSecond; return UNIT; // YY_BREAK case 71: YY_RULE_SETUP -#line 126 "" +#line 126 "QuantityParser.l" yylval = Quantity::WattSecond; return UNIT; // W*s = Joule YY_BREAK case 72: YY_RULE_SETUP -#line 128 "" +#line 128 "QuantityParser.l" yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) YY_BREAK case 73: YY_RULE_SETUP -#line 129 "" +#line 129 "QuantityParser.l" yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) YY_BREAK case 74: YY_RULE_SETUP -#line 130 "" +#line 130 "QuantityParser.l" yylval = Quantity::Radian; return UNIT; // radian YY_BREAK case 75: YY_RULE_SETUP -#line 131 "" +#line 131 "QuantityParser.l" yylval = Quantity::Gon; return UNIT; // gon YY_BREAK case 76: YY_RULE_SETUP -#line 133 "" +#line 133 "QuantityParser.l" { yylval = num_change(yytext,'.',',');return NUM; } YY_BREAK case 77: YY_RULE_SETUP -#line 134 "" +#line 134 "QuantityParser.l" { yylval = num_change(yytext,',','.');return NUM; } YY_BREAK case 78: YY_RULE_SETUP -#line 137 "" +#line 137 "QuantityParser.l" {yylval = M_PI ; return NUM;} // constant pi YY_BREAK case 79: YY_RULE_SETUP -#line 138 "" +#line 138 "QuantityParser.l" {yylval = M_E ; return NUM;} // constant e YY_BREAK case 80: YY_RULE_SETUP -#line 140 "" +#line 140 "QuantityParser.l" return ACOS; YY_BREAK case 81: YY_RULE_SETUP -#line 141 "" +#line 141 "QuantityParser.l" return ASIN; YY_BREAK case 82: YY_RULE_SETUP -#line 142 "" +#line 142 "QuantityParser.l" return ATAN; YY_BREAK case 83: YY_RULE_SETUP -#line 143 "" +#line 143 "QuantityParser.l" return ATAN2; YY_BREAK case 84: YY_RULE_SETUP -#line 144 "" +#line 144 "QuantityParser.l" return COS; YY_BREAK case 85: YY_RULE_SETUP -#line 145 "" +#line 145 "QuantityParser.l" return EXP; YY_BREAK case 86: YY_RULE_SETUP -#line 146 "" +#line 146 "QuantityParser.l" return ABS; YY_BREAK case 87: YY_RULE_SETUP -#line 147 "" +#line 147 "QuantityParser.l" return MOD; YY_BREAK case 88: YY_RULE_SETUP -#line 148 "" +#line 148 "QuantityParser.l" return LOG; YY_BREAK case 89: YY_RULE_SETUP -#line 149 "" +#line 149 "QuantityParser.l" return LOG10; YY_BREAK case 90: YY_RULE_SETUP -#line 150 "" +#line 150 "QuantityParser.l" return POW; YY_BREAK case 91: YY_RULE_SETUP -#line 151 "" +#line 151 "QuantityParser.l" return SIN; YY_BREAK case 92: YY_RULE_SETUP -#line 152 "" +#line 152 "QuantityParser.l" return SINH; YY_BREAK case 93: YY_RULE_SETUP -#line 153 "" +#line 153 "QuantityParser.l" return TAN; YY_BREAK case 94: YY_RULE_SETUP -#line 154 "" +#line 154 "QuantityParser.l" return TANH; YY_BREAK case 95: YY_RULE_SETUP -#line 155 "" +#line 155 "QuantityParser.l" return SQRT; YY_BREAK case 96: YY_RULE_SETUP -#line 157 "" +#line 157 "QuantityParser.l" return *yytext; YY_BREAK case 97: YY_RULE_SETUP -#line 158 "" +#line 158 "QuantityParser.l" ECHO; YY_BREAK #line 1340 "QuantityLexer.c" @@ -2295,4 +2295,4 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 158 "" +#line 158 "QuantityParser.l" diff --git a/src/Base/QuantityParser.c b/src/Base/QuantityParser.c index e9ef6f4be..5198db10f 100644 --- a/src/Base/QuantityParser.c +++ b/src/Base/QuantityParser.c @@ -389,18 +389,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 45 +#define YYFINAL 39 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 279 +#define YYLAST 200 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 30 +#define YYNTOKENS 29 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 5 /* YYNRULES -- Number of rules. */ -#define YYNRULES 36 +#define YYNRULES 33 /* YYNRULES -- Number of states. */ -#define YYNSTATES 106 +#define YYNSTATES 88 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -416,7 +416,7 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 27, 28, 23, 22, 29, 2, 2, 24, 2, 2, + 27, 28, 23, 22, 2, 2, 2, 24, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -448,29 +448,27 @@ static const yytype_uint8 yytranslate[] = static const yytype_uint8 yyprhs[] = { 0, 0, 3, 4, 6, 8, 10, 13, 15, 19, - 23, 27, 31, 34, 38, 42, 47, 52, 57, 64, - 69, 74, 81, 86, 91, 98, 103, 108, 113, 118, - 123, 128, 130, 134, 138, 142, 146 + 23, 27, 31, 34, 38, 42, 47, 52, 57, 62, + 67, 72, 77, 82, 87, 92, 97, 102, 107, 109, + 113, 117, 121, 125 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 31, 0, -1, -1, 32, -1, 33, -1, 34, -1, - 34, 34, -1, 4, -1, 32, 22, 32, -1, 32, - 5, 32, -1, 32, 23, 32, -1, 32, 24, 32, - -1, 5, 32, -1, 32, 26, 32, -1, 27, 32, - 28, -1, 6, 27, 32, 28, -1, 7, 27, 32, - 28, -1, 8, 27, 32, 28, -1, 9, 27, 32, - 29, 32, 28, -1, 12, 27, 32, 28, -1, 11, - 27, 32, 28, -1, 13, 27, 32, 29, 32, 28, - -1, 14, 27, 32, 28, -1, 15, 27, 32, 28, - -1, 16, 27, 32, 29, 32, 28, -1, 17, 27, - 32, 28, -1, 18, 27, 32, 28, -1, 19, 27, - 32, 28, -1, 20, 27, 32, 28, -1, 21, 27, - 32, 28, -1, 10, 27, 32, 28, -1, 3, -1, - 33, 23, 33, -1, 33, 24, 33, -1, 33, 26, - 32, -1, 27, 33, 28, -1, 32, 33, -1 + 30, 0, -1, -1, 31, -1, 32, -1, 33, -1, + 33, 33, -1, 4, -1, 31, 22, 31, -1, 31, + 5, 31, -1, 31, 23, 31, -1, 31, 24, 31, + -1, 5, 31, -1, 31, 26, 31, -1, 27, 31, + 28, -1, 6, 27, 31, 28, -1, 7, 27, 31, + 28, -1, 8, 27, 31, 28, -1, 12, 27, 31, + 28, -1, 11, 27, 31, 28, -1, 14, 27, 31, + 28, -1, 15, 27, 31, 28, -1, 17, 27, 31, + 28, -1, 18, 27, 31, 28, -1, 19, 27, 31, + 28, -1, 20, 27, 31, 28, -1, 21, 27, 31, + 28, -1, 10, 27, 31, 28, -1, 3, -1, 32, + 23, 32, -1, 32, 24, 32, -1, 32, 26, 31, + -1, 27, 32, 28, -1, 31, 32, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -478,8 +476,8 @@ static const yytype_uint8 yyrline[] = { 0, 33, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 65, 66, 67, 68, 69, 71 + 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, + 64, 65, 66, 68 }; #endif @@ -491,8 +489,7 @@ static const char *const yytname[] = "$end", "error", "$undefined", "UNIT", "NUM", "MINUSSIGN", "ACOS", "ASIN", "ATAN", "ATAN2", "COS", "EXP", "ABS", "MOD", "LOG", "LOG10", "POW", "SIN", "SINH", "TAN", "TANH", "SQRT", "'+'", "'*'", "'/'", "NEG", - "'^'", "'('", "')'", "','", "$accept", "input", "num", "unit", - "quantity", YY_NULL + "'^'", "'('", "')'", "$accept", "input", "num", "unit", "quantity", YY_NULL }; #endif @@ -503,26 +500,26 @@ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 43, 42, 47, 277, 94, 40, 41, 44 + 275, 276, 43, 42, 47, 277, 94, 40, 41 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 30, 31, 31, 31, 31, 31, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 33, 33, 33, 33, 33, 34 + 0, 29, 30, 30, 30, 30, 30, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, + 32, 32, 32, 33 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 1, 1, 1, 2, 1, 3, 3, - 3, 3, 2, 3, 3, 4, 4, 4, 6, 4, - 4, 6, 4, 4, 6, 4, 4, 4, 4, 4, - 4, 1, 3, 3, 3, 3, 2 + 3, 3, 2, 3, 3, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 1, 3, + 3, 3, 3, 2 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -530,47 +527,43 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 31, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 4, 5, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 36, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 14, 35, 9, 8, 10, 11, - 13, 32, 33, 34, 15, 16, 17, 0, 30, 20, - 19, 0, 22, 23, 0, 25, 26, 27, 28, 29, - 0, 0, 0, 18, 21, 24 + 2, 28, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 4, 5, 0, 12, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 32, 9, 8, 10, + 11, 13, 29, 30, 31, 15, 16, 17, 27, 19, + 18, 20, 21, 22, 23, 24, 25, 26 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 21, 43, 44, 24 + -1, 18, 37, 38, 21 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -26 +#define YYPACT_NINF -19 static const yytype_int16 yypact[] = { - 58, -26, -26, 117, -25, -13, -10, 16, 17, 26, - 29, 32, 54, 56, 57, 59, 62, 63, 65, 66, - 58, 9, 77, -11, 117, 117, -3, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 134, -18, -26, 117, 117, 117, 117, - 117, 18, -11, 18, 18, 117, 77, -26, 141, 148, - 156, -4, 163, 170, 178, 83, 185, 192, 91, 200, - 207, 214, 222, 229, -26, -26, 28, 28, -3, -3, - -3, 69, 69, -15, -26, -26, -26, 117, -26, -26, - -26, 117, -26, -26, 117, -26, -26, -26, -26, -26, - 236, 244, 251, -26, -26, -26 + 49, -19, -19, 67, -15, -9, 13, 14, 22, 31, + 35, 38, 56, 63, 64, 73, 78, 49, 10, -2, + -10, 67, 67, 76, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 75, -17, -19, + 67, 67, 67, 67, 67, 12, -10, 12, 12, 67, + -2, -19, 84, 91, 99, 106, 113, 121, 128, 135, + 143, 150, 157, 165, 172, -19, -19, 69, 69, 76, + 76, 76, 83, 83, -18, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -26, -26, 0, 4, -8 + -19, -19, 2, 0, -4 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -579,89 +572,73 @@ static const yytype_int8 yypgoto[] = #define YYTABLE_NINF -1 static const yytype_uint8 yytable[] = { - 22, 46, 27, 26, 23, 53, 54, 47, 55, 45, - 75, 50, 53, 54, 28, 55, 57, 29, 47, 48, - 49, 1, 50, 50, 56, 87, 52, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 30, 31, 51, 76, 77, 78, 79, - 80, 48, 49, 32, 50, 83, 33, 81, 82, 34, - 52, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 1, 35, 46, 36, 37, 20, 38, 100, 46, 39, - 40, 101, 41, 42, 102, 55, 46, 0, 0, 47, - 48, 49, 0, 50, 51, 47, 48, 49, 0, 50, - 0, 0, 91, 47, 48, 49, 0, 50, 0, 0, - 94, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 46, - 0, 0, 0, 0, 25, 0, 46, 0, 0, 0, - 0, 0, 0, 46, 0, 0, 47, 48, 49, 0, - 50, 46, 74, 47, 48, 49, 0, 50, 46, 84, - 47, 48, 49, 0, 50, 46, 85, 0, 47, 48, - 49, 0, 50, 46, 86, 47, 48, 49, 0, 50, - 46, 88, 47, 48, 49, 0, 50, 46, 89, 0, - 47, 48, 49, 0, 50, 46, 90, 47, 48, 49, - 0, 50, 46, 92, 47, 48, 49, 0, 50, 46, - 93, 0, 47, 48, 49, 0, 50, 46, 95, 47, - 48, 49, 0, 50, 46, 96, 47, 48, 49, 0, - 50, 46, 97, 0, 47, 48, 49, 0, 50, 46, - 98, 47, 48, 49, 0, 50, 46, 99, 47, 48, - 49, 0, 50, 0, 103, 0, 47, 48, 49, 0, - 50, 0, 104, 47, 48, 49, 0, 50, 0, 105 + 20, 1, 19, 40, 41, 23, 47, 48, 44, 49, + 39, 66, 24, 47, 48, 1, 49, 51, 25, 46, + 41, 42, 43, 50, 44, 45, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 45, + 26, 27, 67, 68, 69, 70, 71, 72, 73, 28, + 46, 74, 1, 2, 3, 4, 5, 6, 29, 7, + 8, 9, 30, 10, 11, 31, 12, 13, 14, 15, + 16, 2, 3, 4, 5, 6, 17, 7, 8, 9, + 40, 10, 11, 32, 12, 13, 14, 15, 16, 40, + 33, 34, 42, 43, 22, 44, 40, 41, 42, 43, + 35, 44, 44, 65, 40, 36, 41, 42, 43, 49, + 44, 40, 75, 41, 42, 43, 0, 44, 40, 76, + 0, 41, 42, 43, 0, 44, 40, 77, 41, 42, + 43, 0, 44, 40, 78, 41, 42, 43, 0, 44, + 40, 79, 0, 41, 42, 43, 0, 44, 40, 80, + 41, 42, 43, 0, 44, 40, 81, 41, 42, 43, + 0, 44, 40, 82, 0, 41, 42, 43, 0, 44, + 40, 83, 41, 42, 43, 0, 44, 40, 84, 41, + 42, 43, 0, 44, 0, 85, 0, 41, 42, 43, + 0, 44, 0, 86, 41, 42, 43, 0, 44, 0, + 87 }; #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-26))) + (!!((Yystate) == (-19))) #define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int8 yycheck[] = { - 0, 5, 27, 3, 0, 23, 24, 22, 26, 0, - 28, 26, 23, 24, 27, 26, 24, 27, 22, 23, - 24, 3, 26, 26, 24, 29, 22, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 27, 27, 27, 46, 47, 48, 49, - 50, 23, 24, 27, 26, 55, 27, 53, 54, 27, - 56, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 3, 27, 5, 27, 27, 27, 27, 87, 5, 27, - 27, 91, 27, 27, 94, 26, 5, -1, -1, 22, - 23, 24, -1, 26, 27, 22, 23, 24, -1, 26, - -1, -1, 29, 22, 23, 24, -1, 26, -1, -1, - 29, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 5, - -1, -1, -1, -1, 27, -1, 5, -1, -1, -1, - -1, -1, -1, 5, -1, -1, 22, 23, 24, -1, + 0, 3, 0, 5, 22, 3, 23, 24, 26, 26, + 0, 28, 27, 23, 24, 3, 26, 21, 27, 19, + 22, 23, 24, 21, 26, 27, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 27, + 27, 27, 40, 41, 42, 43, 44, 47, 48, 27, + 50, 49, 3, 4, 5, 6, 7, 8, 27, 10, + 11, 12, 27, 14, 15, 27, 17, 18, 19, 20, + 21, 4, 5, 6, 7, 8, 27, 10, 11, 12, + 5, 14, 15, 27, 17, 18, 19, 20, 21, 5, + 27, 27, 23, 24, 27, 26, 5, 22, 23, 24, + 27, 26, 26, 28, 5, 27, 22, 23, 24, 26, 26, 5, 28, 22, 23, 24, -1, 26, 5, 28, - 22, 23, 24, -1, 26, 5, 28, -1, 22, 23, + -1, 22, 23, 24, -1, 26, 5, 28, 22, 23, 24, -1, 26, 5, 28, 22, 23, 24, -1, 26, - 5, 28, 22, 23, 24, -1, 26, 5, 28, -1, + 5, 28, -1, 22, 23, 24, -1, 26, 5, 28, 22, 23, 24, -1, 26, 5, 28, 22, 23, 24, - -1, 26, 5, 28, 22, 23, 24, -1, 26, 5, - 28, -1, 22, 23, 24, -1, 26, 5, 28, 22, - 23, 24, -1, 26, 5, 28, 22, 23, 24, -1, - 26, 5, 28, -1, 22, 23, 24, -1, 26, 5, - 28, 22, 23, 24, -1, 26, 5, 28, 22, 23, - 24, -1, 26, -1, 28, -1, 22, 23, 24, -1, - 26, -1, 28, 22, 23, 24, -1, 26, -1, 28 + -1, 26, 5, 28, -1, 22, 23, 24, -1, 26, + 5, 28, 22, 23, 24, -1, 26, 5, 28, 22, + 23, 24, -1, 26, -1, 28, -1, 22, 23, 24, + -1, 26, -1, 28, 22, 23, 24, -1, 26, -1, + 28 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 27, 31, 32, 33, 34, 27, 32, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 32, 33, 0, 5, 22, 23, 24, - 26, 27, 33, 23, 24, 26, 32, 34, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 28, 28, 32, 32, 32, 32, - 32, 33, 33, 32, 28, 28, 28, 29, 28, 28, - 28, 29, 28, 28, 29, 28, 28, 28, 28, 28, - 32, 32, 32, 28, 28, 28 + 0, 3, 4, 5, 6, 7, 8, 10, 11, 12, + 14, 15, 17, 18, 19, 20, 21, 27, 30, 31, + 32, 33, 27, 31, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 31, 32, 0, + 5, 22, 23, 24, 26, 27, 32, 23, 24, 26, + 31, 33, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 28, 28, 31, 31, 31, + 31, 31, 32, 32, 31, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28 }; #define yyerrok (yyerrstatus = 0) @@ -1551,120 +1528,102 @@ yyreduce: case 18: /* Line 1787 of yacc.c */ #line 50 "QuantityParser.y" - { (yyval) = atan2((yyvsp[(3) - (6)]).getValue(),(yyvsp[(5) - (6)]).getValue());} + { (yyval) = fabs((yyvsp[(3) - (4)]).getValue()); } break; case 19: /* Line 1787 of yacc.c */ #line 51 "QuantityParser.y" - { (yyval) = fabs((yyvsp[(3) - (4)]).getValue()); } + { (yyval) = exp((yyvsp[(3) - (4)]).getValue()); } break; case 20: /* Line 1787 of yacc.c */ #line 52 "QuantityParser.y" - { (yyval) = exp((yyvsp[(3) - (4)]).getValue()); } + { (yyval) = log((yyvsp[(3) - (4)]).getValue()); } break; case 21: /* Line 1787 of yacc.c */ #line 53 "QuantityParser.y" - { (yyval) = fmod((yyvsp[(3) - (6)]).getValue(),(yyvsp[(5) - (6)]).getValue()); } + { (yyval) = log10((yyvsp[(3) - (4)]).getValue()); } break; case 22: /* Line 1787 of yacc.c */ #line 54 "QuantityParser.y" - { (yyval) = log((yyvsp[(3) - (4)]).getValue()); } + { (yyval) = sin((yyvsp[(3) - (4)]).getValue()); } break; case 23: /* Line 1787 of yacc.c */ #line 55 "QuantityParser.y" - { (yyval) = log10((yyvsp[(3) - (4)]).getValue()); } + { (yyval) = sinh((yyvsp[(3) - (4)]).getValue()); } break; case 24: /* Line 1787 of yacc.c */ #line 56 "QuantityParser.y" - { (yyval) = pow((yyvsp[(3) - (6)]).getValue(),(yyvsp[(5) - (6)]).getValue()); } + { (yyval) = tan((yyvsp[(3) - (4)]).getValue()); } break; case 25: /* Line 1787 of yacc.c */ #line 57 "QuantityParser.y" - { (yyval) = sin((yyvsp[(3) - (4)]).getValue()); } + { (yyval) = tanh((yyvsp[(3) - (4)]).getValue()); } break; case 26: /* Line 1787 of yacc.c */ #line 58 "QuantityParser.y" - { (yyval) = sinh((yyvsp[(3) - (4)]).getValue()); } + { (yyval) = sqrt((yyvsp[(3) - (4)]).getValue()); } break; case 27: /* Line 1787 of yacc.c */ #line 59 "QuantityParser.y" - { (yyval) = tan((yyvsp[(3) - (4)]).getValue()); } + { (yyval) = cos((yyvsp[(3) - (4)]).getValue()); } break; case 28: /* Line 1787 of yacc.c */ -#line 60 "QuantityParser.y" - { (yyval) = tanh((yyvsp[(3) - (4)]).getValue()); } +#line 62 "QuantityParser.y" + { (yyval) = (yyvsp[(1) - (1)]); } break; case 29: /* Line 1787 of yacc.c */ -#line 61 "QuantityParser.y" - { (yyval) = tanh((yyvsp[(3) - (4)]).getValue()); } +#line 63 "QuantityParser.y" + { (yyval) = (yyvsp[(1) - (3)]) * (yyvsp[(3) - (3)]); } break; case 30: /* Line 1787 of yacc.c */ -#line 62 "QuantityParser.y" - { (yyval) = cos((yyvsp[(3) - (4)]).getValue()); } +#line 64 "QuantityParser.y" + { (yyval) = (yyvsp[(1) - (3)]) / (yyvsp[(3) - (3)]); } break; case 31: /* Line 1787 of yacc.c */ #line 65 "QuantityParser.y" - { (yyval) = (yyvsp[(1) - (1)]); } + { (yyval) = (yyvsp[(1) - (3)]).pow ((yyvsp[(3) - (3)])); } break; case 32: /* Line 1787 of yacc.c */ #line 66 "QuantityParser.y" - { (yyval) = (yyvsp[(1) - (3)]) * (yyvsp[(3) - (3)]); } + { (yyval) = (yyvsp[(2) - (3)]); } break; case 33: /* Line 1787 of yacc.c */ -#line 67 "QuantityParser.y" - { (yyval) = (yyvsp[(1) - (3)]) / (yyvsp[(3) - (3)]); } - break; - - case 34: -/* Line 1787 of yacc.c */ #line 68 "QuantityParser.y" - { (yyval) = (yyvsp[(1) - (3)]).pow ((yyvsp[(3) - (3)])); } - break; - - case 35: -/* Line 1787 of yacc.c */ -#line 69 "QuantityParser.y" - { (yyval) = (yyvsp[(2) - (3)]); } - break; - - case 36: -/* Line 1787 of yacc.c */ -#line 71 "QuantityParser.y" { (yyval) = (yyvsp[(1) - (2)])*(yyvsp[(2) - (2)]); } break; /* Line 1787 of yacc.c */ -#line 1668 "QuantityParser.c" +#line 1627 "QuantityParser.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -1896,5 +1855,5 @@ yyreturn: /* Line 2050 of yacc.c */ -#line 75 "QuantityParser.y" +#line 72 "QuantityParser.y"