Changeset 1158 for XIOS/dev/dev_olga/src/parse_expr
- Timestamp:
- 06/06/17 17:58:16 (7 years ago)
- Location:
- XIOS/dev/dev_olga/src/parse_expr
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/parse_expr/filter_expr_node.cpp
r643 r1158 2 2 #include "unary_arithmetic_filter.hpp" 3 3 #include "binary_arithmetic_filter.hpp" 4 #include "ternary_arithmetic_filter.hpp" 4 5 #include "field.hpp" 5 6 … … 40 41 boost::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 41 42 { 42 if (!CField::has(fieldId)) 43 boost::shared_ptr<COutputPin> outputPin; 44 45 if (fieldId == "this") 46 outputPin = thisField.getSelfTemporalDataFilter(gc, thisField.freq_op.isEmpty() ? TimeStep : thisField.freq_op); 47 else if (CField::has(fieldId)) 48 { 49 CField* field = CField::get(fieldId); 50 if (field == &thisField) 51 ERROR("boost::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const", 52 << "The field " << fieldId << " has an invalid reference to itself. " 53 << "Use the keyword \"this\" if you want to reference the input data sent to this field."); 54 55 field->buildFilterGraph(gc, false); 56 outputPin = field->getTemporalDataFilter(gc, thisField.freq_op.isEmpty() ? TimeStep : thisField.freq_op); 57 } 58 else 43 59 ERROR("boost::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const", 44 60 << "The field " << fieldId << " does not exist."); 45 61 46 CField* field = CField::get(fieldId); 47 if (field == &thisField) 48 ERROR("boost::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const", 49 << "The field " << fieldId << " has an invalid reference to itself."); 50 51 field->buildFilterGraph(gc, false); 52 return field->getTemporalDataFilter(gc, thisField.freq_op.isEmpty() ? TimeStep : thisField.freq_op); 62 return outputPin; 53 63 } 54 64 … … 120 130 return filter; 121 131 } 132 133 134 135 136 CFilterScalarScalarFieldOpExprNode::CFilterScalarScalarFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3) 137 : child1(child1) 138 , opId(opId) 139 , child2(child2) 140 , child3(child3) 141 { 142 if (!child1 || !child2 || !child3) 143 ERROR(" CFilterScalarScalarFieldOpExprNode::CFilterScalarScalarFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3)", 144 "Impossible to create the new expression node, an invalid child node was provided."); 145 } 146 147 boost::shared_ptr<COutputPin> CFilterScalarScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 148 { 149 boost::shared_ptr<CScalarScalarFieldArithmeticFilter> filter(new CScalarScalarFieldArithmeticFilter(gc, opId, child1->reduce(),child2->reduce())); 150 child3->reduce(gc, thisField)->connectOutput(filter, 0); 151 return filter; 152 } 153 154 155 CFilterScalarFieldScalarOpExprNode::CFilterScalarFieldScalarOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3) 156 : child1(child1) 157 , opId(opId) 158 , child2(child2) 159 , child3(child3) 160 { 161 if (!child1 || !child2 || !child3) 162 ERROR(" CFilterScalarFieldScalarOpExprNode::CFilterScalarFieldScalarOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3)", 163 "Impossible to create the new expression node, an invalid child node was provided."); 164 } 165 166 boost::shared_ptr<COutputPin> CFilterScalarFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 167 { 168 boost::shared_ptr<CScalarFieldScalarArithmeticFilter> filter(new CScalarFieldScalarArithmeticFilter(gc, opId, child1->reduce(),child3->reduce())); 169 child2->reduce(gc, thisField)->connectOutput(filter, 0); 170 return filter; 171 } 172 173 174 CFilterScalarFieldFieldOpExprNode::CFilterScalarFieldFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3) 175 : child1(child1) 176 , opId(opId) 177 , child2(child2) 178 , child3(child3) 179 { 180 if (!child1 || !child2 || !child3) 181 ERROR(" CFilterScalarFieldFieldOpExprNode::CFilterScalarFieldFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3)", 182 "Impossible to create the new expression node, an invalid child node was provided."); 183 } 184 185 boost::shared_ptr<COutputPin> CFilterScalarFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 186 { 187 boost::shared_ptr<CScalarFieldFieldArithmeticFilter> filter(new CScalarFieldFieldArithmeticFilter(gc, opId, child1->reduce())); 188 child2->reduce(gc, thisField)->connectOutput(filter, 0); 189 child3->reduce(gc, thisField)->connectOutput(filter, 1); 190 return filter; 191 } 192 193 194 195 CFilterFieldScalarScalarOpExprNode::CFilterFieldScalarScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IScalarExprNode* child3) 196 : child1(child1) 197 , opId(opId) 198 , child2(child2) 199 , child3(child3) 200 { 201 if (!child1 || !child2 || !child3) 202 ERROR(" CFilterFieldScalarScalarOpExprNode::CFilterFieldScalarScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IScalarExprNode* child3)", 203 "Impossible to create the new expression node, an invalid child node was provided."); 204 } 205 206 boost::shared_ptr<COutputPin> CFilterFieldScalarScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 207 { 208 boost::shared_ptr<CFieldScalarScalarArithmeticFilter> filter(new CFieldScalarScalarArithmeticFilter(gc, opId, child2->reduce(),child3->reduce())); 209 child1->reduce(gc, thisField)->connectOutput(filter, 0); 210 return filter; 211 } 212 213 214 215 CFilterFieldScalarFieldOpExprNode::CFilterFieldScalarFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3) 216 : child1(child1) 217 , opId(opId) 218 , child2(child2) 219 , child3(child3) 220 { 221 if (!child1 || !child2 || !child3) 222 ERROR(" CFilterFieldScalarFieldOpExprNode::CFilterFieldScalarFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3)", 223 "Impossible to create the new expression node, an invalid child node was provided."); 224 } 225 226 boost::shared_ptr<COutputPin> CFilterFieldScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 227 { 228 boost::shared_ptr<CFieldScalarFieldArithmeticFilter> filter(new CFieldScalarFieldArithmeticFilter(gc, opId, child2->reduce())); 229 child1->reduce(gc, thisField)->connectOutput(filter, 0); 230 child3->reduce(gc, thisField)->connectOutput(filter, 1); 231 return filter; 232 } 233 234 235 236 CFilterFieldFieldScalarOpExprNode::CFilterFieldFieldScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3) 237 : child1(child1) 238 , opId(opId) 239 , child2(child2) 240 , child3(child3) 241 { 242 if (!child1 || !child2 || !child3) 243 ERROR(" CFilterFieldFieldScalarOpExprNode::CFilterFieldFieldScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3)", 244 "Impossible to create the new expression node, an invalid child node was provided."); 245 } 246 247 boost::shared_ptr<COutputPin> CFilterFieldFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 248 { 249 boost::shared_ptr<CFieldFieldScalarArithmeticFilter> filter(new CFieldFieldScalarArithmeticFilter(gc, opId, child3->reduce())); 250 child1->reduce(gc, thisField)->connectOutput(filter, 0); 251 child2->reduce(gc, thisField)->connectOutput(filter, 1); 252 return filter; 253 } 254 255 256 CFilterFieldFieldFieldOpExprNode::CFilterFieldFieldFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3) 257 : child1(child1) 258 , opId(opId) 259 , child2(child2) 260 , child3(child3) 261 { 262 if (!child1 || !child2 || !child3) 263 ERROR(" CFilterFieldFieldFieldOpExprNode::CFilterFieldFieldFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3)", 264 "Impossible to create the new expression node, an invalid child node was provided."); 265 } 266 267 boost::shared_ptr<COutputPin> CFilterFieldFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 268 { 269 boost::shared_ptr<CFieldFieldFieldArithmeticFilter> filter(new CFieldFieldFieldArithmeticFilter(gc, opId)); 270 child1->reduce(gc, thisField)->connectOutput(filter, 0); 271 child2->reduce(gc, thisField)->connectOutput(filter, 1); 272 child3->reduce(gc, thisField)->connectOutput(filter, 2); 273 return filter; 274 } 275 122 276 } -
XIOS/dev/dev_olga/src/parse_expr/filter_expr_node.hpp
r643 r1158 169 169 boost::scoped_ptr<IFilterExprNode> child1, child2; //!< The field child nodes to which the operator is applied 170 170 }; 171 172 173 174 /*! 175 * Expression node corresponding to a ternary operation on a scalar-scalar-field. 176 */ 177 class CFilterScalarScalarFieldOpExprNode : public IFilterExprNode 178 { 179 public: 180 /*! 181 * Constructs an expression node corresponding to the specified ternary operation 182 * applied to the provided fields and scalars child nodes. 183 * Note that the child nodes will be destroyed automatically when the parent node 184 * is destroyed. 185 * 186 * \param child1 the scalar child node to which the operator is applied 187 * \param opId the identifier of the operator 188 * \param child2 the scalar child node to which the operator is applied 189 * \param child3 the field child node to which the operator is applied 190 */ 191 CFilterScalarScalarFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3); 192 193 virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const; 194 195 private: 196 std::string opId; //!< The identifier of the field 197 boost::scoped_ptr<IScalarExprNode> child1; //!< The scalar child node to which the operator is applied 198 boost::scoped_ptr<IScalarExprNode> child2; //!< The scalar child node to which the operator is applied 199 boost::scoped_ptr<IFilterExprNode> child3; //!< The field child node to which the operator is applied 200 }; 201 202 203 /*! 204 * Expression node corresponding to a ternary operation on a scalar-field-scalar. 205 */ 206 class CFilterScalarFieldScalarOpExprNode : public IFilterExprNode 207 { 208 public: 209 /*! 210 * Constructs an expression node corresponding to the specified ternary operation 211 * applied to the provided fields and scalars child nodes. 212 * Note that the child nodes will be destroyed automatically when the parent node 213 * is destroyed. 214 * 215 * \param child1 the scalar child node to which the operator is applied 216 * \param opId the identifier of the operator 217 * \param child2 the field child node to which the operator is applied 218 * \param child3 the scalar child node to which the operator is applied 219 */ 220 CFilterScalarFieldScalarOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3); 221 222 virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const; 223 224 private: 225 std::string opId; //!< The identifier of the field 226 boost::scoped_ptr<IScalarExprNode> child1; //!< The scalar child node to which the operator is applied 227 boost::scoped_ptr<IFilterExprNode> child2; //!< The field child node to which the operator is applied 228 boost::scoped_ptr<IScalarExprNode> child3; //!< The scalar child node to which the operator is applied 229 }; 230 231 232 /*! 233 * Expression node corresponding to a ternary operation on a scalar-field-field. 234 */ 235 class CFilterScalarFieldFieldOpExprNode : public IFilterExprNode 236 { 237 public: 238 /*! 239 * Constructs an expression node corresponding to the specified ternary operation 240 * applied to the provided fields and scalars child nodes. 241 * Note that the child nodes will be destroyed automatically when the parent node 242 * is destroyed. 243 * 244 * \param child1 the scalar child node to which the operator is applied 245 * \param opId the identifier of the operator 246 * \param child2 the field child node to which the operator is applied 247 * \param child3 the field child node to which the operator is applied 248 */ 249 CFilterScalarFieldFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3); 250 251 virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const; 252 253 private: 254 std::string opId; //!< The identifier of the field 255 boost::scoped_ptr<IScalarExprNode> child1; //!< The scalar child node to which the operator is applied 256 boost::scoped_ptr<IFilterExprNode> child2; //!< The field child node to which the operator is applied 257 boost::scoped_ptr<IFilterExprNode> child3; //!< The field child node to which the operator is applied 258 }; 259 260 261 262 /*! 263 * Expression node corresponding to a ternary operation on a field-scalar-scalar. 264 */ 265 class CFilterFieldScalarScalarOpExprNode : public IFilterExprNode 266 { 267 public: 268 /*! 269 * Constructs an expression node corresponding to the specified ternary operation 270 * applied to the provided fields and scalars child nodes. 271 * Note that the child nodes will be destroyed automatically when the parent node 272 * is destroyed. 273 * 274 * \param child1 the field child node to which the operator is applied 275 * \param opId the identifier of the operator 276 * \param child2 the scalar child node to which the operator is applied 277 * \param child3 the scalar child node to which the operator is applied 278 */ 279 CFilterFieldScalarScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IScalarExprNode* child3); 280 281 virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const; 282 283 private: 284 std::string opId; //!< The identifier of the field 285 boost::scoped_ptr<IFilterExprNode> child1; //!< The field child node to which the operator is applied 286 boost::scoped_ptr<IScalarExprNode> child2; //!< The scalar child node to which the operator is applied 287 boost::scoped_ptr<IScalarExprNode> child3; //!< The scalar child node to which the operator is applied 288 }; 289 290 291 /*! 292 * Expression node corresponding to a ternary operation on a field-scalar-field. 293 */ 294 class CFilterFieldScalarFieldOpExprNode : public IFilterExprNode 295 { 296 public: 297 /*! 298 * Constructs an expression node corresponding to the specified ternary operation 299 * applied to the provided fields and scalars child nodes. 300 * Note that the child nodes will be destroyed automatically when the parent node 301 * is destroyed. 302 * 303 * \param child1 the field child node to which the operator is applied 304 * \param opId the identifier of the operator 305 * \param child2 the scalar child node to which the operator is applied 306 * \param child3 the field child node to which the operator is applied 307 */ 308 CFilterFieldScalarFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3); 309 310 virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const; 311 312 private: 313 std::string opId; //!< The identifier of the field 314 boost::scoped_ptr<IFilterExprNode> child1; //!< The field child node to which the operator is applied 315 boost::scoped_ptr<IScalarExprNode> child2; //!< The scalar child node to which the operator is applied 316 boost::scoped_ptr<IFilterExprNode> child3; //!< The field child node to which the operator is applied 317 }; 318 319 /*! 320 * Expression node corresponding to a ternary operation on a field-field-scalar. 321 */ 322 class CFilterFieldFieldScalarOpExprNode : public IFilterExprNode 323 { 324 public: 325 /*! 326 * Constructs an expression node corresponding to the specified ternary operation 327 * applied to the provided fields and scalars child nodes. 328 * Note that the child nodes will be destroyed automatically when the parent node 329 * is destroyed. 330 * 331 * \param child1 the field child node to which the operator is applied 332 * \param opId the identifier of the operator 333 * \param child2 the field child node to which the operator is applied 334 * \param child3 the scalar child node to which the operator is applied 335 */ 336 CFilterFieldFieldScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3); 337 338 virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const; 339 340 private: 341 std::string opId; //!< The identifier of the field 342 boost::scoped_ptr<IFilterExprNode> child1; //!< The field child node to which the operator is applied 343 boost::scoped_ptr<IFilterExprNode> child2; //!< The field child node to which the operator is applied 344 boost::scoped_ptr<IScalarExprNode> child3; //!< The scalar child node to which the operator is applied 345 }; 346 347 348 /*! 349 * Expression node corresponding to a ternary operation on a field-field-field. 350 */ 351 class CFilterFieldFieldFieldOpExprNode : public IFilterExprNode 352 { 353 public: 354 /*! 355 * Constructs an expression node corresponding to the specified ternary operation 356 * applied to the provided fields and scalars child nodes. 357 * Note that the child nodes will be destroyed automatically when the parent node 358 * is destroyed. 359 * 360 * \param child1 the field child node to which the operator is applied 361 * \param opId the identifier of the operator 362 * \param child2 the field child node to which the operator is applied 363 * \param child3 the field child node to which the operator is applied 364 */ 365 CFilterFieldFieldFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3); 366 367 virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const; 368 369 private: 370 std::string opId; //!< The identifier of the field 371 boost::scoped_ptr<IFilterExprNode> child1; //!< The field child node to which the operator is applied 372 boost::scoped_ptr<IFilterExprNode> child2; //!< The field child node to which the operator is applied 373 boost::scoped_ptr<IFilterExprNode> child3; //!< The field child node to which the operator is applied 374 }; 375 376 377 171 378 } 172 379 -
XIOS/dev/dev_olga/src/parse_expr/generate_lex_yacc.sh
r501 r1158 1 bison - d yacc_parser.yacc -o yacc_parser.cpp1 bison --verbose -d yacc_parser.yacc -o yacc_parser.cpp 2 2 flex -o lex_parser.cpp -f lex_parser.lex -
XIOS/dev/dev_olga/src/parse_expr/lex_parser.cpp
r728 r1158 10 10 #define YY_FLEX_MAJOR_VERSION 2 11 11 #define YY_FLEX_MINOR_VERSION 5 12 #define YY_FLEX_SUBMINOR_VERSION 3 912 #define YY_FLEX_SUBMINOR_VERSION 37 13 13 #if YY_FLEX_SUBMINOR_VERSION > 0 14 14 #define FLEX_BETA … … 143 143 /* Size of default input buffer. */ 144 144 #ifndef YY_BUF_SIZE 145 #ifdef __ia64__146 /* On IA-64, the buffer size is 16k, not 8k.147 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.148 * Ditto for the __ia64__ case accordingly.149 */150 #define YY_BUF_SIZE 32768151 #else152 145 #define YY_BUF_SIZE 16384 153 #endif /* __ia64__ */154 146 #endif 155 147 … … 177 169 178 170 #define YY_LESS_LINENO(n) 179 #define YY_LINENO_REWIND_TO(ptr)180 171 181 172 /* Return all but the first "n" matched characters back to the input stream. */ … … 356 347 extern char *yytext; 357 348 #define yytext_ptr yytext 358 359 349 static yyconst flex_int16_t yy_nxt[][128] = 360 350 { … … 382 372 4, 4, 5, 4, 4, 4, 6, 4, 4, 4, 383 373 7, 8, 9, 10, 4, 11, 4, 12, 13, 13, 384 13, 13, 13, 13, 13, 13, 13, 13, 385 1 4, 15, 16, 4, 17, 18, 18, 18, 18, 18,386 387 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,388 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,389 18, 4, 4, 4, 19, 4, 4, 18, 18, 18,390 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,391 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,392 18, 18, 18, 4, 4, 4, 4, 4374 13, 13, 13, 13, 13, 13, 13, 13, 14, 4, 375 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 376 377 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 378 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 379 20, 4, 4, 4, 21, 4, 4, 20, 20, 20, 380 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 381 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 382 20, 20, 20, 4, 4, 4, 4, 4 393 383 }, 394 384 … … 400 390 401 391 7, 8, 9, 10, 4, 11, 4, 12, 13, 13, 402 13, 13, 13, 13, 13, 13, 13, 13, 403 1 4, 15, 16, 4, 17, 18, 18, 18, 18, 18,404 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,405 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,406 18, 4, 4, 4, 19, 4, 4, 18, 18, 18,407 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,408 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,409 18, 18, 18, 4, 4, 4, 4, 4392 13, 13, 13, 13, 13, 13, 13, 13, 14, 4, 393 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 394 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 395 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 396 20, 4, 4, 4, 21, 4, 4, 20, 20, 20, 397 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 398 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 399 20, 20, 20, 4, 4, 4, 4, 4 410 400 }, 411 401 … … 446 436 447 437 { 448 3, -5, -5, -5, -5, -5, -5, -5, -5, 2 1,438 3, -5, -5, -5, -5, -5, -5, -5, -5, 23, 449 439 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 450 440 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 451 -5, -5, 2 1, -5, -5, -5, -5, -5, -5, -5,441 -5, -5, 23, -5, -5, -5, -5, -5, -5, -5, 452 442 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 453 443 … … 470 460 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, 471 461 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, 472 -6, -6, -6, -6, -6, 2 2, 22, 22, 22, 22,473 2 2, 22, 22, 22, 22, 22, 22, 22, 22, 22,474 2 2, 22, 22, 22, 22, 22, 22, 22, 22, 22,475 2 2, -6, -6, -6, -6, -6, -6, 22, 22, 22,476 2 2, 22, 22, 22, 22, 22, 22, 22, 22, 22,477 2 2, 22, 22, 22, 22, 22, 22, 22, 22, 22,478 479 2 2, 22, 22, -6, -6, -6, -6, -6462 -6, -6, -6, -6, -6, 24, 24, 24, 24, 24, 463 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 464 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 465 24, -6, -6, -6, -6, -6, -6, 24, 24, 24, 466 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 467 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 468 469 24, 24, 24, -6, -6, -6, -6, -6 480 470 }, 481 471 … … 574 564 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, 575 565 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, 576 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,566 -12, 25, -12, -12, -12, -12, -12, -12, -12, -12, 577 567 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, 578 568 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, … … 589 579 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 590 580 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 591 -13, -13, -13, -13, -13, -13, 2 3, -13, 24, 24,592 2 4, 24, 24, 24, 24, 24, 24, 24, -13, -13,593 -13, -13, -13, -13, -13, -13, -13, -13, -13, 2 5,581 -13, -13, -13, -13, -13, -13, 26, -13, 27, 27, 582 27, 27, 27, 27, 27, 27, 27, 27, -13, -13, 583 -13, -13, -13, -13, -13, -13, -13, -13, -13, 28, 594 584 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 595 585 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 596 586 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 597 -13, 2 5, -13, -13, -13, -13, -13, -13, -13, -13,587 -13, 28, -13, -13, -13, -13, -13, -13, -13, -13, 598 588 599 589 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, … … 608 598 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 609 599 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 610 -14, 26, -14, -14, -14, -14, -14, -14, -14, -14,600 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 611 601 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 612 602 … … 626 616 627 617 -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, 628 -15, 2 7, -15, -15, -15, -15, -15, -15, -15, -15,618 -15, 29, -15, -15, -15, -15, -15, -15, -15, -15, 629 619 -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, 630 620 -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, … … 643 633 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 644 634 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 645 -16, 28, -16, -16, -16, -16, -16, -16, -16, -16,635 -16, 30, -16, -16, -16, -16, -16, -16, -16, -16, 646 636 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 647 637 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, … … 660 650 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 661 651 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 662 -17, -17, -17, -17, -17, 29, 29, 29, 29, 29,663 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,664 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,665 666 29, -17, -17, -17, -17, -17, -17, 29, 29, 29,667 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,668 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,669 29, 29, 29, -17, -17, -17, -17, -17652 -17, 31, -17, -17, -17, -17, -17, -17, -17, -17, 653 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 654 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 655 656 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 657 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 658 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 659 -17, -17, -17, -17, -17, -17, -17, -17 670 660 }, 671 661 … … 675 665 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 676 666 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 677 -18, -18, -18, -18, -18, -18, -18, -18, 30, 30,678 30, 30, 30, 30, 30, 30, 30, 30, -18, -18,679 680 -18, -18, -18, -18, -18, 30, 30, 30, 30, 30,681 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,682 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,683 30, -18, -18, -18, -18, 30, -18, 30, 30, 30,684 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,685 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,686 30, 30, 30, -18, -18, -18, -18, -18667 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 668 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 669 670 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 671 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 672 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 673 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 674 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 675 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 676 -18, -18, -18, -18, -18, -18, -18, -18 687 677 }, 688 678 … … 695 685 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, 696 686 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, 697 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,698 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,699 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,700 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,701 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,702 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,703 -19, -19, -19, -19, -19, -19, -19, -19687 -19, -19, -19, -19, -19, 32, 32, 32, 32, 32, 688 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 689 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 690 32, -19, -19, -19, -19, -19, -19, 32, 32, 32, 691 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 692 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 693 32, 32, 32, -19, -19, -19, -19, -19 704 694 705 695 }, … … 710 700 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, 711 701 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, 712 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,713 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,714 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,715 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,716 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,717 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,718 719 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,720 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,721 -20, -20, -20, -20, -20, -20, -20, -20722 }, 723 724 { 725 3, -21, -21, -21, -21, -21, -21, -21, -21, 702 -20, -20, -20, -20, -20, -20, -20, -20, 33, 33, 703 33, 33, 33, 33, 33, 33, 33, 33, -20, -20, 704 -20, -20, -20, -20, -20, 33, 33, 33, 33, 33, 705 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 706 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 707 33, -20, -20, -20, -20, 33, -20, 33, 33, 33, 708 709 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 710 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 711 33, 33, 33, -20, -20, -20, -20, -20 712 }, 713 714 { 715 3, -21, -21, -21, -21, -21, -21, -21, -21, -21, 726 716 -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, 727 717 -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, 728 -21, -21, 718 -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, 729 719 -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, 730 720 -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, … … 745 735 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 746 736 747 -22, -22, -22, -22, -22, -22, -22, -22, 31, 31,748 31, 31, 31, 31, 31, 31, 31, 31, -22, -22,749 -22, -22, -22, -22, -22, 31, 31, 31, 31, 31,750 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,751 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,752 31, -22, -22, -22, -22, 31, -22, 31, 31, 31,753 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,754 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,755 31, 31, 31, -22, -22, -22, -22, -22756 }, 757 758 { 759 3, -23, -23, -23, -23, -23, -23, -23, -23, -23,737 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 738 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 739 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 740 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 741 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 742 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 743 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 744 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 745 -22, -22, -22, -22, -22, -22, -22, -22 746 }, 747 748 { 749 3, -23, -23, -23, -23, -23, -23, -23, -23, 23, 760 750 761 751 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 762 752 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 763 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 764 -23, -23, -23, -23, -23, -23, -23, -23, 32, 32, 765 32, 32, 32, 32, 32, 32, 32, 32, -23, -23, 753 -23, -23, 23, -23, -23, -23, -23, -23, -23, -23, 766 754 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 767 755 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, … … 769 757 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 770 758 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 759 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 760 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 771 761 772 762 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, … … 779 769 -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, 780 770 -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, 781 -24, -24, -24, -24, -24, -24, 23, -24, 24, 24,782 24, 24, 24, 24, 24, 24, 24, 24, -24, -24,783 -24, -24, -24, -24, -24, -24, -24, -24, -24, 25,784 -24, -24, -24, -24, -24, -24, -24, -24, -24, -24,785 786 -24, -24, -24, -24, -24, -24, -24, -24, -24, -24,787 -24, -24, -24, -24, -24, -24, -24, -24, -24, -24,788 -24, 25, -24, -24, -24, -24, -24, -24, -24, -24,789 -24, -24, -24, -24, -24, -24, -24, -24, -24, -24,790 -24, -24, -24, -24, -24, -24, -24, -24771 -24, -24, -24, -24, -24, -24, -24, -24, 34, 34, 772 34, 34, 34, 34, 34, 34, 34, 34, -24, -24, 773 -24, -24, -24, -24, -24, 34, 34, 34, 34, 34, 774 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 775 776 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 777 34, -24, -24, -24, -24, 34, -24, 34, 34, 34, 778 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 779 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 780 34, 34, 34, -24, -24, -24, -24, -24 791 781 }, 792 782 … … 796 786 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, 797 787 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, 798 -25, -25, -25, 33, -25, 33, -25, -25, 34, 34,799 800 34, 34, 34, 34, 34, 34, 34, 34, -25, -25,788 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, 789 790 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, 801 791 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, 802 792 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, … … 814 804 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, 815 805 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, 806 -26, -26, -26, -26, -26, -26, -26, -26, 35, 35, 807 35, 35, 35, 35, 35, 35, 35, 35, -26, -26, 816 808 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, 817 809 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, … … 820 812 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, 821 813 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, 822 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,823 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,824 814 825 815 -26, -26, -26, -26, -26, -26, -26, -26 … … 831 821 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 832 822 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 823 -27, -27, -27, -27, -27, -27, 26, -27, 27, 27, 824 27, 27, 27, 27, 27, 27, 27, 27, -27, -27, 825 -27, -27, -27, -27, -27, -27, -27, -27, -27, 28, 833 826 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 834 827 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 828 835 829 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 836 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 837 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 838 839 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 840 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 830 -27, 28, -27, -27, -27, -27, -27, -27, -27, -27, 841 831 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 842 832 -27, -27, -27, -27, -27, -27, -27, -27 … … 848 838 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, 849 839 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, 850 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,851 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,840 -28, -28, -28, 36, -28, 36, -28, -28, 37, 37, 841 37, 37, 37, 37, 37, 37, 37, 37, -28, -28, 852 842 853 843 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, … … 866 856 867 857 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, 868 -29, -29, -29, -29, -29, -29, -29, -29, 35, 35,869 35, 35, 35, 35, 35, 35, 35, 35, -29, -29,870 -29, -29, -29, -29, -29, 35, 35, 35, 35, 35,871 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,872 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,873 35, -29, -29, -29, -29, 35, -29, 35, 35, 35,874 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,875 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,876 35, 35, 35, -29, -29, -29, -29, -29858 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, 859 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, 860 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, 861 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, 862 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, 863 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, 864 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, 865 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, 866 -29, -29, -29, -29, -29, -29, -29, -29 877 867 878 868 }, … … 883 873 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 884 874 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 885 -30, -30, -30, -30, -30, -30, -30, -30, 30,30,886 30, 30, 30, 30, 30, 30, 30,30, -30, -30,887 -30, -30, -30, -30, -30, 30, 30, 30, 30,30,888 30, 30, 30, 30, 30, 30, 30, 30, 30,30,889 30, 30, 30, 30, 30, 30, 30, 30, 30,30,890 30, -30, -30, -30, -30, 30, -30, 30, 30,30,891 892 30, 30, 30, 30, 30, 30, 30, 30, 30,30,893 30, 30, 30, 30, 30, 30, 30, 30, 30,30,894 30, 30,30, -30, -30, -30, -30, -30875 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 876 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 877 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 878 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 879 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 880 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 881 882 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 883 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, 884 -30, -30, -30, -30, -30, -30, -30, -30 895 885 }, 896 886 … … 900 890 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 901 891 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 902 -31, -31, -31, -31, -31, -31, -31, -31, 31,31,903 31, 31, 31, 31, 31, 31, 31,31, -31, -31,904 -31, -31, -31, -31, -31, 31, 31, 31, 31,31,905 906 31, 31, 31, 31, 31, 31, 31, 31, 31,31,907 31, 31, 31, 31, 31, 31, 31, 31, 31,31,908 31, -31, -31, -31, -31, 31, -31, 31, 31,31,909 31, 31, 31, 31, 31, 31, 31, 31, 31,31,910 31, 31, 31, 31, 31, 31, 31, 31, 31,31,911 31, 31,31, -31, -31, -31, -31, -31892 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 893 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 894 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 895 896 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 897 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 898 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 899 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 900 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 901 -31, -31, -31, -31, -31, -31, -31, -31 912 902 }, 913 903 … … 918 908 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, 919 909 920 -32, -32, -32, -32, -32, -32, -32, -32, 3 2, 32,921 3 2, 32, 32, 32, 32, 32, 32, 32, -32, -32,922 -32, -32, -32, -32, -32, -32, -32, -32, -32, 25,923 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,924 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,925 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,926 -32, 25, -32, -32, -32, -32, -32, -32, -32, -32,927 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,928 -32, -32, -32, -32, -32, -32, -32, -32910 -32, -32, -32, -32, -32, -32, -32, -32, 38, 38, 911 38, 38, 38, 38, 38, 38, 38, 38, -32, -32, 912 -32, -32, -32, -32, -32, 38, 38, 38, 38, 38, 913 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 914 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 915 38, -32, -32, -32, -32, 38, -32, 38, 38, 38, 916 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 917 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 918 38, 38, 38, -32, -32, -32, -32, -32 929 919 }, 930 920 … … 935 925 -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, 936 926 -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, 937 -33, -33, -33, -33, -33, -33, -33, -33, 3 4, 34,938 3 4, 34, 34, 34, 34, 34, 34, 34, -33, -33,939 -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,940 -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,941 -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,942 -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,943 -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,944 945 -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,946 -33, -33, -33, -33, -33, -33, -33, -33927 -33, -33, -33, -33, -33, -33, -33, -33, 33, 33, 928 33, 33, 33, 33, 33, 33, 33, 33, -33, -33, 929 -33, -33, -33, -33, -33, 33, 33, 33, 33, 33, 930 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 931 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 932 33, -33, -33, -33, -33, 33, -33, 33, 33, 33, 933 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 934 935 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 936 33, 33, 33, -33, -33, -33, -33, -33 947 937 }, 948 938 … … 954 944 -34, -34, -34, -34, -34, -34, -34, -34, 34, 34, 955 945 34, 34, 34, 34, 34, 34, 34, 34, -34, -34, 956 -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,957 -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,958 959 -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,960 -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,961 -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,962 -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,963 -34, -34, -34, -34, -34, -34, -34, -34946 -34, -34, -34, -34, -34, 34, 34, 34, 34, 34, 947 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 948 949 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 950 34, -34, -34, -34, -34, 34, -34, 34, 34, 34, 951 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 952 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 953 34, 34, 34, -34, -34, -34, -34, -34 964 954 }, 965 955 … … 972 962 973 963 35, 35, 35, 35, 35, 35, 35, 35, -35, -35, 974 -35, -35, -35, -35, -35, 35, 35, 35, 35, 35, 975 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 976 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 977 35, -35, -35, -35, -35, 35, -35, 35, 35, 35, 978 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 979 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 980 35, 35, 35, -35, -35, -35, -35, -35 964 -35, -35, -35, -35, -35, -35, -35, -35, -35, 28, 965 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, 966 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, 967 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, 968 -35, 28, -35, -35, -35, -35, -35, -35, -35, -35, 969 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, 970 -35, -35, -35, -35, -35, -35, -35, -35 971 }, 972 973 { 974 3, -36, -36, -36, -36, -36, -36, -36, -36, -36, 975 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 976 977 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 978 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 979 -36, -36, -36, -36, -36, -36, -36, -36, 37, 37, 980 37, 37, 37, 37, 37, 37, 37, 37, -36, -36, 981 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 982 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 983 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 984 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 985 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 986 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 987 988 -36, -36, -36, -36, -36, -36, -36, -36 989 }, 990 991 { 992 3, -37, -37, -37, -37, -37, -37, -37, -37, -37, 993 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 994 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 995 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 996 -37, -37, -37, -37, -37, -37, -37, -37, 37, 37, 997 37, 37, 37, 37, 37, 37, 37, 37, -37, -37, 998 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 999 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 1000 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 1001 1002 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 1003 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 1004 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 1005 -37, -37, -37, -37, -37, -37, -37, -37 1006 }, 1007 1008 { 1009 3, -38, -38, -38, -38, -38, -38, -38, -38, -38, 1010 -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, 1011 -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, 1012 -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, 1013 -38, -38, -38, -38, -38, -38, -38, -38, 38, 38, 1014 38, 38, 38, 38, 38, 38, 38, 38, -38, -38, 1015 1016 -38, -38, -38, -38, -38, 38, 38, 38, 38, 38, 1017 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1018 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1019 38, -38, -38, -38, -38, 38, -38, 38, 38, 38, 1020 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1021 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1022 38, 38, 38, -38, -38, -38, -38, -38 981 1023 }, 982 1024 … … 998 1040 (yy_c_buf_p) = yy_cp; 999 1041 1000 #define YY_NUM_RULES 191001 #define YY_END_OF_BUFFER 2 01042 #define YY_NUM_RULES 22 1043 #define YY_END_OF_BUFFER 23 1002 1044 /* This struct is not used in this scanner, 1003 1045 but its presence is necessary. */ … … 1007 1049 flex_int32_t yy_nxt; 1008 1050 }; 1009 static yyconst flex_int16_t yy_accept[3 6] =1051 static yyconst flex_int16_t yy_accept[39] = 1010 1052 { 0, 1011 0, 0, 2 0, 19, 1, 19, 16, 17, 8, 6,1012 7, 9, 2, 1 2, 19, 13, 19, 5, 10, 18,1013 1, 4, 0, 2, 0, 14, 11, 15, 3, 5,1014 4, 2, 0, 2, 31053 0, 0, 23, 22, 1, 22, 19, 20, 8, 6, 1054 7, 9, 2, 18, 12, 22, 13, 17, 22, 5, 1055 10, 21, 1, 4, 16, 0, 2, 0, 14, 11, 1056 15, 3, 5, 4, 2, 0, 2, 3 1015 1057 } ; 1016 1058 … … 1018 1060 static char *yy_last_accepting_cpos; 1019 1061 1020 static yyconst yy_state_type yy_NUL_trans[3 6] =1062 static yyconst yy_state_type yy_NUL_trans[39] = 1021 1063 { 0, 1022 2 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,1064 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 1023 1065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024 1066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1025 0, 0, 0, 0, 0 1067 0, 0, 0, 0, 0, 0, 0, 0 1026 1068 } ; 1027 1069 … … 1053 1095 #include "yacc_parser.hpp" 1054 1096 1055 #line 10 56"lex_parser.cpp"1097 #line 1098 "lex_parser.cpp" 1056 1098 1057 1099 #define INITIAL 0 … … 1134 1176 /* Amount of stuff to slurp up with each read. */ 1135 1177 #ifndef YY_READ_BUF_SIZE 1136 #ifdef __ia64__1137 /* On IA-64, the buffer size is 16k, not 8k */1138 #define YY_READ_BUF_SIZE 163841139 #else1140 1178 #define YY_READ_BUF_SIZE 8192 1141 #endif /* __ia64__ */1142 1179 #endif 1143 1180 … … 1224 1261 register int yy_act; 1225 1262 1263 #line 29 "lex_parser.lex" 1264 1265 1266 #line 1267 "lex_parser.cpp" 1267 1226 1268 if ( !(yy_init) ) 1227 1269 { … … 1249 1291 yy_load_buffer_state( ); 1250 1292 } 1251 1252 {1253 #line 29 "lex_parser.lex"1254 1255 1256 #line 1257 "lex_parser.cpp"1257 1293 1258 1294 while ( 1 ) /* loops until end-of-file is reached */ … … 1388 1424 case 16: 1389 1425 YY_RULE_SETUP 1390 #line 6 8"lex_parser.lex"1391 return LEFT_PARENTHESIS;1426 #line 67 "lex_parser.lex" 1427 return NE; 1392 1428 YY_BREAK 1393 1429 case 17: 1394 1430 YY_RULE_SETUP 1395 #line 6 9"lex_parser.lex"1396 return RIGHT_PARENTHESIS;1431 #line 68 "lex_parser.lex" 1432 return QUESTION_MARK; 1397 1433 YY_BREAK 1398 1434 case 18: 1399 1435 YY_RULE_SETUP 1400 #line 71"lex_parser.lex"1401 return END;1436 #line 69 "lex_parser.lex" 1437 return COLON; 1402 1438 YY_BREAK 1403 1439 case 19: 1404 1440 YY_RULE_SETUP 1405 #line 72 "lex_parser.lex" 1441 #line 70 "lex_parser.lex" 1442 return LEFT_PARENTHESIS; 1443 YY_BREAK 1444 case 20: 1445 YY_RULE_SETUP 1446 #line 71 "lex_parser.lex" 1447 return RIGHT_PARENTHESIS; 1448 YY_BREAK 1449 case 21: 1450 YY_RULE_SETUP 1451 #line 73 "lex_parser.lex" 1452 return END; 1453 YY_BREAK 1454 case 22: 1455 YY_RULE_SETUP 1456 #line 74 "lex_parser.lex" 1406 1457 ECHO; 1407 1458 YY_BREAK 1408 #line 14 09"lex_parser.cpp"1459 #line 1460 "lex_parser.cpp" 1409 1460 case YY_STATE_EOF(INITIAL): 1410 1461 yyterminate(); … … 1537 1588 } /* end of action switch */ 1538 1589 } /* end of scanning one token */ 1539 } /* end of user's declarations */1540 1590 } /* end of yylex */ 1541 1591 … … 2166 2216 char *buf; 2167 2217 yy_size_t n; 2168 yy_size_t i;2218 int i; 2169 2219 2170 2220 /* Get memory for full buffer, including space for trailing EOB's. */ … … 2396 2446 #define YYTABLES_NAME "yytables" 2397 2447 2398 #line 7 1"lex_parser.lex"2448 #line 74 "lex_parser.lex" -
XIOS/dev/dev_olga/src/parse_expr/lex_parser.lex
r728 r1158 65 65 "<=" return LE; 66 66 ">=" return GE; 67 67 "/=" return NE; 68 "?" return QUESTION_MARK; 69 ":" return COLON; 68 70 "(" return LEFT_PARENTHESIS; 69 71 ")" return RIGHT_PARENTHESIS; -
XIOS/dev/dev_olga/src/parse_expr/operator_expr.hpp
r728 r1158 17 17 typedef double (*functionScalar)(double); 18 18 typedef double (*functionScalarScalar)(double, double); 19 typedef double (*functionScalarScalarScalar)(double, double,double); 19 20 typedef CArray<double,1> (*functionField)(const CArray<double,1>&); 20 21 typedef CArray<double,1> (*functionFieldField)(const CArray<double,1>&, const CArray<double,1>&); 21 22 typedef CArray<double,1> (*functionFieldScalar)(const CArray<double,1>&, double); 22 23 typedef CArray<double,1> (*functionScalarField)(double, const CArray<double,1>&); 23 24 typedef CArray<double,1> (*functionScalarScalarField)(double, double, const CArray<double,1>&); 25 typedef CArray<double,1> (*functionScalarFieldScalar)(double, const CArray<double,1>&, double); 26 typedef CArray<double,1> (*functionScalarFieldField)(double, const CArray<double,1>&, const CArray<double,1>&); 27 typedef CArray<double,1> (*functionFieldScalarScalar)(const CArray<double,1>&, double, double); 28 typedef CArray<double,1> (*functionFieldScalarField)(const CArray<double,1>&, double, const CArray<double,1>&); 29 typedef CArray<double,1> (*functionFieldFieldScalar)(const CArray<double,1>&, const CArray<double,1>&, double); 30 typedef CArray<double,1> (*functionFieldFieldField)(const CArray<double,1>&, const CArray<double,1>&, const CArray<double,1>&); 31 24 32 COperatorExpr(void) 25 33 { … … 43 51 opScalarScalar[string("le")] = le_ss; 44 52 opScalarScalar[string("ge")] = ge_ss; 45 53 opScalarScalar[string("ne")] = ne_ss; 54 opScalarScalarScalar[string("cond")] = cond_sss; 55 46 56 opField[string("neg")] = neg_f; 47 57 opField[string("cos")] = cos_f; … … 63 73 opFieldField[string("le")] = le_ff; 64 74 opFieldField[string("ge")] = ge_ff; 75 opFieldField[string("ne")] = ne_ff; 65 76 66 77 opFieldScalar[string("add")] = add_fs; … … 74 85 opFieldScalar[string("le")] = le_fs; 75 86 opFieldScalar[string("ge")] = ge_fs; 87 opFieldScalar[string("ne")] = ne_fs; 76 88 77 89 opScalarField[string("add")] = add_sf; … … 84 96 opScalarField[string("le")] = le_sf; 85 97 opScalarField[string("ge")] = ge_sf; 98 opScalarField[string("ne")] = ne_sf; 99 100 opScalarScalarField[string("cond")] = cond_ssf; 101 opScalarFieldScalar[string("cond")] = cond_sfs; 102 opScalarFieldField[string("cond")] = cond_sff; 103 opFieldScalarScalar[string("cond")] = cond_fss; 104 opFieldScalarField[string("cond")] = cond_fsf; 105 opFieldFieldScalar[string("cond")] = cond_ffs; 106 opFieldFieldField[string("cond")] = cond_fff; 107 108 86 109 } 87 110 … … 102 125 } 103 126 127 functionScalarScalarScalar getOpScalarScalarScalar(const string& id) 128 { 129 map<string,double (*)(double,double,double)>::iterator it; 130 it = opScalarScalarScalar.find(id); 131 if (it == opScalarScalarScalar.end()) ERROR("functionScalarScalarScalar getOpScalarScalarScalar(const string& id)", << "unknown operator : " << id) 132 return it->second; 133 } 134 104 135 functionField getOpField(const string& id) 105 136 { … … 134 165 } 135 166 167 functionScalarScalarField getOpScalarScalarField(const string& id) 168 { 169 map<string,functionScalarScalarField>::iterator it; 170 it = opScalarScalarField.find(id); 171 if (it == opScalarScalarField.end()) ERROR("functionScalarScalarField getOpScalarScalarField(const string& id)", << "unknown operator : " << id) 172 return it->second; 173 } 174 175 functionScalarFieldScalar getOpScalarFieldScalar(const string& id) 176 { 177 map<string,functionScalarFieldScalar>::iterator it; 178 it = opScalarFieldScalar.find(id); 179 if (it == opScalarFieldScalar.end()) ERROR("functionScalarFieldScalar getOpScalarScalarField(const string& id)", << "unknown operator : " << id) 180 return it->second; 181 } 182 183 functionScalarFieldField getOpScalarFieldField(const string& id) 184 { 185 map<string,functionScalarFieldField>::iterator it; 186 it = opScalarFieldField.find(id); 187 if (it == opScalarFieldField.end()) ERROR("functionScalarFieldField getOpScalarFieldField(const string& id)", << "unknown operator : " << id) 188 return it->second; 189 } 190 191 functionFieldScalarScalar getOpFieldScalarScalar(const string& id) 192 { 193 map<string,functionFieldScalarScalar>::iterator it; 194 it = opFieldScalarScalar.find(id); 195 if (it == opFieldScalarScalar.end()) ERROR("functionFieldScalarScalar getOpFieldScalarScalar(const string& id)", << "unknown operator : " << id) 196 return it->second; 197 } 198 199 functionFieldScalarField getOpFieldScalarField(const string& id) 200 { 201 map<string,functionFieldScalarField>::iterator it; 202 it = opFieldScalarField.find(id); 203 if (it == opFieldScalarField.end()) ERROR("functionFieldScalarField getOpFieldScalarField(const string& id)", << "unknown operator : " << id) 204 return it->second; 205 } 206 207 functionFieldFieldScalar getOpFieldFieldScalar(const string& id) 208 { 209 map<string,functionFieldFieldScalar>::iterator it; 210 it = opFieldFieldScalar.find(id); 211 if (it == opFieldFieldScalar.end()) ERROR("functionFieldFieldScalar getOpFieldFieldScalar(const string& id)", << "unknown operator : " << id) 212 return it->second; 213 } 214 215 functionFieldFieldField getOpFieldFieldField(const string& id) 216 { 217 map<string,functionFieldFieldField>::iterator it; 218 it = opFieldFieldField.find(id); 219 if (it == opFieldFieldField.end()) ERROR("functionFieldFieldField getOpFieldFieldField(const string& id)", << "unknown operator : " << id) 220 return it->second; 221 } 222 223 136 224 map<string,functionScalar> opScalar; 137 225 map<string,functionScalarScalar> opScalarScalar; 226 map<string,functionScalarScalarScalar> opScalarScalarScalar; 138 227 map<string,functionField> opField; 139 228 map<string,functionFieldField> opFieldField; 140 229 map<string,functionFieldScalar> opFieldScalar; 141 230 map<string,functionScalarField> opScalarField; 231 map<string,functionScalarScalarField> opScalarScalarField; 232 map<string,functionScalarFieldScalar> opScalarFieldScalar; 233 map<string,functionScalarFieldField> opScalarFieldField; 234 map<string,functionFieldScalarScalar> opFieldScalarScalar; 235 map<string,functionFieldScalarField> opFieldScalarField; 236 map<string,functionFieldFieldScalar> opFieldFieldScalar; 237 map<string,functionFieldFieldField> opFieldFieldField; 238 239 142 240 143 241 static inline double neg_s(double x) { return -x; } … … 160 258 static inline double le_ss(double x, double y) { return x <= y; } 161 259 static inline double ge_ss(double x, double y) { return x >= y; } 260 static inline double ne_ss(double x, double y) { return x != y; } 162 261 163 262 static inline CArray<double,1> neg_f(const CArray<double,1>& x) { return Array<double,1>(-x); } … … 180 279 static inline CArray<double,1> le_ff(const CArray<double,1>& x, const CArray<double,1>& y) { return Array<double,1>(x <= y); } 181 280 static inline CArray<double,1> ge_ff(const CArray<double,1>& x, const CArray<double,1>& y) { return Array<double,1>(x >= y); } 281 static inline CArray<double,1> ne_ff(const CArray<double,1>& x, const CArray<double,1>& y) { return Array<double,1>(x != y); } 182 282 183 283 static inline CArray<double,1> add_fs(const CArray<double,1>& x, double y) { return Array<double,1>(x + y); } … … 191 291 static inline CArray<double,1> le_fs(const CArray<double,1>& x, double y) { return Array<double,1>(x <= y); } 192 292 static inline CArray<double,1> ge_fs(const CArray<double,1>& x, double y) { return Array<double,1>(x >= y); } 293 static inline CArray<double,1> ne_fs(const CArray<double,1>& x, double y) { return Array<double,1>(x != y); } 193 294 194 295 static inline CArray<double,1> add_sf(double x, const CArray<double,1>& y) { return Array<double,1>(x + y); } … … 201 302 static inline CArray<double,1> le_sf(double x, const CArray<double,1>& y) { return Array<double,1>(x <= y); } 202 303 static inline CArray<double,1> ge_sf(double x, const CArray<double,1>& y) { return Array<double,1>(x >= y); } 304 static inline CArray<double,1> ne_sf(double x, const CArray<double,1>& y) { return Array<double,1>(x != y); } 305 306 307 static inline double cond_sss(double x, double y, double z) { return (x==0) ? z : y ; } 308 309 static inline CArray<double,1> cond_ssf(double x, double y, const CArray<double,1>& z) 310 { 311 CArray<double,1> ret(z.numElements()) ; 312 if (x==0) ret=z ; 313 else ret=y ; 314 return ret ; 315 } 316 317 static inline CArray<double,1> cond_sfs(double x, const CArray<double,1>& y, double z) 318 { 319 CArray<double,1> ret(y.numElements()) ; 320 if (x==0) ret=z ; 321 else ret=y ; 322 return ret ; 323 } 324 325 static inline CArray<double,1> cond_sff(double x, const CArray<double,1>& y, const CArray<double,1>& z) 326 { 327 CArray<double,1> ret(y.numElements()) ; 328 if (x==0) ret=z ; 329 else ret=y ; 330 return ret ; 331 } 332 333 static inline CArray<double,1> cond_fss(const CArray<double,1>& x, double y, double z) 334 { 335 CArray<double,1> ret(x.numElements()) ; 336 Array<double,1>::const_iterator itx=x.begin(),itxe=x.end(); 337 Array<double,1>::iterator itret=ret.begin() ; 338 339 for(;itx!=itxe;++itx,++itret) *itret=( (*itx==0)?z:y) ; 340 return ret ; 341 } 342 343 static inline CArray<double,1> cond_fsf(const CArray<double,1>& x, double y, const CArray<double,1>& z) 344 { 345 CArray<double,1> ret(x.numElements()) ; 346 Array<double,1>::const_iterator itx=x.begin(), itxe=x.end(), itz=z.begin(); 347 Array<double,1>::iterator itret=ret.begin() ; 348 for(;itx!=itxe;++itx,++itz,++itret) *itret=( (*itx==0)?*itz:y) ; 349 return ret ; 350 } 351 352 static inline CArray<double,1> cond_ffs(const CArray<double,1>& x, const CArray<double,1>& y, double z) 353 { 354 CArray<double,1> ret(x.numElements()) ; 355 Array<double,1>::const_iterator itx=x.begin(), itxe=x.end(), ity=y.begin() ; 356 Array<double,1>::iterator itret=ret.begin() ; 357 for(;itx!=itxe;++itx,++ity,++itret) *itret=( (*itx==0)?z:*ity) ; 358 return ret ; 359 } 360 361 static inline CArray<double,1> cond_fff(const CArray<double,1>& x, const CArray<double,1>& y, const CArray<double,1>& z) 362 { 363 CArray<double,1> ret(x.numElements()) ; 364 Array<double,1>::const_iterator itx=x.begin(), itxe=x.end(), ity=y.begin(), itz=z.begin() ; 365 Array<double,1>::iterator itret=ret.begin() ; 366 for(;itx!=itxe;++itx,++ity,++itz,++itret) *itret=( (*itx==0)?*itz:*ity) ; 367 return ret ; 368 } 369 203 370 }; 204 371 -
XIOS/dev/dev_olga/src/parse_expr/scalar_expr_node.cpp
r642 r1158 23 23 double CScalarVarExprNode::reduce() const 24 24 { 25 if (!CVariable::has(varId)) 26 ERROR("double CScalarVarExprNode::reduce() const", << "The variable " << varId << " does not exist."); 25 // $missing_value will be replaced with NaN 26 if (varId == "missing_value") 27 { 28 return std::numeric_limits<double>::quiet_NaN(); 29 } 30 else 31 { 32 if (!CVariable::has(varId)) 33 ERROR("double CScalarVarExprNode::reduce() const", << "The variable " << varId << " does not exist."); 27 34 28 return CVariable::get(varId)->getData<double>(); 35 return CVariable::get(varId)->getData<double>(); 36 } 29 37 } 30 38 … … 59 67 return op(child1->reduce(), child2->reduce()); 60 68 } 69 70 71 CScalarTernaryOpExprNode::CScalarTernaryOpExprNode(IScalarExprNode* child1, const std::string& opId, IScalarExprNode* child2, IScalarExprNode* child3) 72 : child1(child1) 73 , opId(opId) 74 , child2(child2) 75 , child3(child3) 76 { 77 if (!child1 || !child2 || !child3) 78 ERROR("CScalarTernaryOpExprNode::CScalarTernaryOpExprNode(IScalarExprNode* child1, const std::string& opId, IScalarExprNode* child2, IScalarExprNode* child3)", 79 "Impossible to create the new expression node, an invalid child node was provided."); 80 } 81 82 double CScalarTernaryOpExprNode::reduce() const 83 { 84 COperatorExpr::functionScalarScalarScalar op = operatorExpr.getOpScalarScalarScalar(opId); 85 return op(child1->reduce(), child2->reduce(), child3->reduce()); 86 } 61 87 } -
XIOS/dev/dev_olga/src/parse_expr/scalar_expr_node.hpp
r642 r1158 107 107 boost::scoped_ptr<IScalarExprNode> child1, child2; //!< The scalar child nodes to which the operator is applied 108 108 }; 109 110 class CScalarTernaryOpExprNode : public IScalarExprNode 111 { 112 public: 113 /*! 114 * Constructs an expression node corresponding to the specified ternary operation 115 * applied to the provided scalar child nodes. 116 * Note that the child nodes will be destroyed automatically when the parent node 117 * is destroyed. 118 * 119 * \param opId the identifier of the operator 120 * \param child1, child2 , child3 the scalar child nodes to which the operator is applied 121 */ 122 CScalarTernaryOpExprNode(IScalarExprNode* child1, const std::string& opId, IScalarExprNode* child2, IScalarExprNode* child3); 123 124 double reduce() const; 125 126 private: 127 std::string opId; //!< The identifier of the field 128 boost::scoped_ptr<IScalarExprNode> child1, child2, child3; //!< The scalar child nodes to which the operator is applied 129 }; 109 130 } 110 131 -
XIOS/dev/dev_olga/src/parse_expr/yacc_parser.cpp
r728 r1158 145 145 LE = 270, 146 146 GE = 271, 147 LEFT_PARENTHESIS = 272, 148 RIGHT_PARENTHESIS = 273, 149 END = 274, 150 NEG = 275 147 NE = 272, 148 LEFT_PARENTHESIS = 273, 149 RIGHT_PARENTHESIS = 274, 150 QUESTION_MARK = 275, 151 COLON = 276, 152 END = 277, 153 NEG = 278 151 154 }; 152 155 #endif … … 163 166 xios::IFilterExprNode* filterNode; 164 167 165 #line 16 6"yacc_parser.cpp" /* yacc.c:355 */168 #line 169 "yacc_parser.cpp" /* yacc.c:355 */ 166 169 }; 167 170 # define YYSTYPE_IS_TRIVIAL 1 … … 178 181 /* Copy the second part of user declarations. */ 179 182 180 #line 18 1"yacc_parser.cpp" /* yacc.c:358 */183 #line 184 "yacc_parser.cpp" /* yacc.c:358 */ 181 184 182 185 #ifdef short … … 420 423 #define YYFINAL 16 421 424 /* YYLAST -- Last index in YYTABLE. */ 422 #define YYLAST 204425 #define YYLAST 371 423 426 424 427 /* YYNTOKENS -- Number of terminals. */ 425 #define YYNTOKENS 2 1428 #define YYNTOKENS 24 426 429 /* YYNNTS -- Number of nonterminals. */ 427 430 #define YYNNTS 4 428 431 /* YYNRULES -- Number of rules. */ 429 #define YYNRULES 52432 #define YYNRULES 64 430 433 /* YYNSTATES -- Number of states. */ 431 #define YYNSTATES 1 08434 #define YYNSTATES 138 432 435 433 436 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned 434 437 by yylex, with out-of-bounds checking. */ 435 438 #define YYUNDEFTOK 2 436 #define YYMAXUTOK 27 5439 #define YYMAXUTOK 278 437 440 438 441 #define YYTRANSLATE(YYX) \ … … 470 473 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 471 474 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 472 15, 16, 17, 18, 19, 20 475 15, 16, 17, 18, 19, 20, 21, 22, 23 473 476 }; 474 477 … … 477 480 static const yytype_uint8 yyrline[] = 478 481 { 479 0, 61, 61, 62, 66, 67, 68, 69, 70, 71, 480 72, 73, 74, 75, 76, 77, 78, 79, 80, 84, 481 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 482 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 483 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 484 115, 116, 117 482 0, 63, 63, 64, 68, 69, 70, 71, 72, 73, 483 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 484 84, 88, 89, 90, 91, 92, 93, 94, 95, 96, 485 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 486 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 487 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 488 127, 128, 129, 130, 131 485 489 }; 486 490 #endif … … 492 496 { 493 497 "$end", "error", "$undefined", "NUMBER", "VAR", "ID", "AVERAGE", "PLUS", 494 "MINUS", "TIMES", "DIVIDE", "POWER", "EQ", "LT", "GT", "LE", "GE", 495 "LEFT_PARENTHESIS", "RIGHT_PARENTHESIS", " END", "NEG", "$accept", "Line",496 " Expression", "Field_expr", YY_NULLPTR498 "MINUS", "TIMES", "DIVIDE", "POWER", "EQ", "LT", "GT", "LE", "GE", "NE", 499 "LEFT_PARENTHESIS", "RIGHT_PARENTHESIS", "QUESTION_MARK", "COLON", "END", 500 "NEG", "$accept", "Line", "Expression", "Field_expr", YY_NULLPTR 497 501 }; 498 502 #endif … … 505 509 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 506 510 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 507 275 511 275, 276, 277, 278 508 512 }; 509 513 # endif 510 514 511 #define YYPACT_NINF -1 3515 #define YYPACT_NINF -14 512 516 513 517 #define yypact_value_is_default(Yystate) \ 514 (!!((Yystate) == (-1 3)))518 (!!((Yystate) == (-14))) 515 519 516 520 #define YYTABLE_NINF -1 517 521 518 522 #define yytable_value_is_error(Yytable_value) \ 519 0523 (!!((Yytable_value) == (-1))) 520 524 521 525 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing … … 523 527 static const yytype_int16 yypact[] = 524 528 { 525 90, -13, -13, -12, -13, 35, 35, -13, 44, 188, 526 103, 35, 24, 34, 116, 128, -13, 35, 35, 35, 527 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 528 35, 35, 35, 35, 35, 35, 35, -13, 140, 152, 529 -13, -13, -7, 23, -7, 23, 24, 34, 24, 34, 530 54, 65, 65, 24, 0, 67, 0, 67, 0, 67, 531 0, 67, 0, 67, -7, 23, -7, 23, 24, 34, 532 24, 34, 24, 34, 0, 67, 0, 67, 0, 67, 533 0, 67, 0, 67, -13, -13, 65, 24, 164, 65, 534 65, 65, 65, 65, 65, 65, 65, 65, 176, 95, 535 95, 24, 24, 92, 92, 92, 92, 92 529 73, -14, -14, -13, -14, 124, 124, -14, 39, 304, 530 104, 124, 34, 36, 220, 234, -14, 124, 124, 124, 531 124, 133, 124, 124, 124, 124, 124, 124, 124, 124, 532 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 533 124, -14, 248, 262, -14, -14, -7, 27, -7, 27, 534 34, 36, 34, 36, 30, 133, 133, 34, 0, 75, 535 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 536 145, 160, -7, 27, -7, 27, 34, 36, 34, 36, 537 34, 36, 0, 75, 0, 75, 0, 75, 0, 75, 538 0, 75, 0, 75, 175, 190, -14, -14, 133, 34, 539 276, 133, 133, 133, 133, 133, 133, 133, 133, 133, 540 133, 133, 124, 124, 124, 124, 290, 33, 33, 34, 541 34, 360, 360, 360, 360, 360, 360, 205, 318, 332, 542 318, 332, 318, 332, 318, 332, 133, 346 536 543 }; 537 544 … … 541 548 static const yytype_uint8 yydefact[] = 542 549 { 543 0, 4, 5, 19, 20, 0, 0, 2, 0, 0,544 0, 0, 10, 2 5, 0, 0, 1, 0, 0, 0,550 0, 4, 5, 21, 22, 0, 0, 2, 0, 0, 551 0, 0, 10, 27, 0, 0, 1, 0, 0, 0, 545 552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 546 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 547 17, 32, 6, 34, 7, 36, 8, 38, 9, 40, 548 0, 0, 0, 11, 12, 43, 13, 45, 14, 47, 549 15, 49, 16, 51, 33, 21, 35, 22, 37, 23, 550 39, 24, 41, 26, 42, 27, 44, 28, 46, 29, 551 48, 30, 50, 31, 18, 52, 0, 10, 0, 0, 552 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 553 7, 8, 9, 12, 13, 14, 15, 16 553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 554 0, 3, 0, 0, 19, 35, 6, 44, 7, 46, 555 8, 48, 9, 50, 0, 0, 0, 11, 12, 53, 556 13, 55, 14, 57, 15, 59, 16, 61, 17, 63, 557 0, 0, 43, 23, 45, 24, 47, 25, 49, 26, 558 51, 28, 52, 29, 54, 30, 56, 31, 58, 32, 559 60, 33, 62, 34, 0, 0, 20, 64, 0, 10, 560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 561 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 562 9, 12, 13, 14, 15, 16, 17, 0, 18, 36, 563 37, 38, 39, 40, 41, 42, 0, 18 554 564 }; 555 565 … … 557 567 static const yytype_int8 yypgoto[] = 558 568 { 559 -1 3, -13, -5, 31569 -14, -14, -5, 35 560 570 }; 561 571 … … 569 579 positive, shift that token. If negative, reduce the rule whose 570 580 number is the opposite. If YYTABLE_NINF, syntax error. */ 571 static const yytype_uint8 yytable[] = 572 { 573 12, 14, 19, 20, 21, 11, 38, 17, 18, 19, 574 20, 21, 42, 44, 46, 48, 53, 54, 56, 58, 575 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 576 80, 82, 29, 30, 31, 21, 13, 15, 1, 2, 577 3, 4, 39, 5, 16, 31, 87, 88, 43, 45, 578 47, 49, 6, 55, 57, 59, 61, 63, 65, 67, 579 69, 71, 73, 75, 77, 79, 81, 83, 1, 2, 580 50, 86, 0, 51, 27, 28, 29, 30, 31, 0, 581 0, 98, 52, 0, 99, 100, 101, 102, 103, 104, 582 105, 106, 107, 1, 2, 3, 4, 0, 5, 89, 583 90, 91, 92, 21, 91, 92, 21, 6, 0, 7, 584 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 585 0, 0, 37, 17, 18, 19, 20, 21, 22, 23, 586 24, 25, 26, 0, 40, 27, 28, 29, 30, 31, 587 32, 33, 34, 35, 36, 0, 41, 17, 18, 19, 588 20, 21, 22, 23, 24, 25, 26, 0, 84, 27, 589 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 590 85, 89, 90, 91, 92, 21, 93, 94, 95, 96, 591 97, 0, 40, 89, 90, 91, 92, 21, 93, 94, 592 95, 96, 97, 0, 84, 17, 18, 19, 20, 21, 593 22, 23, 24, 25, 26 581 static const yytype_int16 yytable[] = 582 { 583 12, 14, 19, 20, 21, 11, 42, 17, 18, 19, 584 20, 21, 46, 48, 50, 52, 57, 58, 60, 62, 585 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 586 84, 86, 88, 90, 92, 94, 31, 32, 33, 16, 587 13, 15, 103, 104, 21, 21, 43, 33, 98, 0, 588 99, 100, 47, 49, 51, 53, 0, 59, 61, 63, 589 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 590 85, 87, 89, 91, 93, 95, 1, 2, 3, 4, 591 0, 5, 29, 30, 31, 32, 33, 0, 0, 0, 592 0, 6, 0, 116, 0, 7, 117, 118, 119, 120, 593 121, 122, 123, 124, 125, 126, 127, 128, 130, 132, 594 134, 29, 30, 31, 32, 33, 34, 35, 36, 37, 595 38, 39, 0, 0, 40, 0, 41, 1, 2, 3, 596 4, 137, 5, 0, 0, 0, 1, 2, 54, 0, 597 0, 55, 6, 0, 0, 0, 0, 129, 131, 133, 598 135, 56, 17, 18, 19, 20, 21, 22, 23, 24, 599 25, 26, 27, 0, 0, 28, 112, 29, 30, 31, 600 32, 33, 34, 35, 36, 37, 38, 39, 0, 0, 601 40, 113, 17, 18, 19, 20, 21, 22, 23, 24, 602 25, 26, 27, 0, 0, 28, 114, 29, 30, 31, 603 32, 33, 34, 35, 36, 37, 38, 39, 0, 0, 604 40, 115, 101, 102, 103, 104, 21, 105, 106, 107, 605 108, 109, 110, 0, 0, 111, 136, 17, 18, 19, 606 20, 21, 22, 23, 24, 25, 26, 27, 0, 44, 607 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 608 38, 39, 0, 45, 40, 17, 18, 19, 20, 21, 609 22, 23, 24, 25, 26, 27, 0, 96, 28, 29, 610 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 611 0, 97, 40, 101, 102, 103, 104, 21, 105, 106, 612 107, 108, 109, 110, 0, 44, 111, 101, 102, 103, 613 104, 21, 105, 106, 107, 108, 109, 110, 0, 96, 614 111, 17, 18, 19, 20, 21, 22, 23, 24, 25, 615 26, 27, 0, 0, 28, 17, 18, 19, 20, 21, 616 22, 23, 24, 25, 26, 27, 0, 0, -1, 29, 617 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 618 0, 0, -1, 101, 102, 103, 104, 21, 105, 106, 619 107, 108, 109, 110, 0, 0, -1, 101, 102, 103, 620 104, 21 594 621 }; 595 622 596 static const yytype_int 8yycheck[] =597 { 598 5, 6, 9, 10, 11, 1 7, 11, 7, 8, 9,623 static const yytype_int16 yycheck[] = 624 { 625 5, 6, 9, 10, 11, 18, 11, 7, 8, 9, 599 626 10, 11, 17, 18, 19, 20, 21, 22, 23, 24, 600 627 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 601 35, 36, 9, 10, 11, 11, 5, 6, 3, 4, 602 5, 6, 11, 8, 0, 11, 51, 52, 17, 18, 603 19, 20, 17, 22, 23, 24, 25, 26, 27, 28, 604 29, 30, 31, 32, 33, 34, 35, 36, 3, 4, 605 5, 17, -1, 8, 7, 8, 9, 10, 11, -1, 606 -1, 86, 17, -1, 89, 90, 91, 92, 93, 94, 607 95, 96, 97, 3, 4, 5, 6, -1, 8, 7, 608 8, 9, 10, 11, 9, 10, 11, 17, -1, 19, 609 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 610 -1, -1, 19, 7, 8, 9, 10, 11, 12, 13, 611 14, 15, 16, -1, 18, 7, 8, 9, 10, 11, 612 12, 13, 14, 15, 16, -1, 18, 7, 8, 9, 613 10, 11, 12, 13, 14, 15, 16, -1, 18, 7, 614 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, 615 18, 7, 8, 9, 10, 11, 12, 13, 14, 15, 616 16, -1, 18, 7, 8, 9, 10, 11, 12, 13, 617 14, 15, 16, -1, 18, 7, 8, 9, 10, 11, 618 12, 13, 14, 15, 16 628 35, 36, 37, 38, 39, 40, 9, 10, 11, 0, 629 5, 6, 9, 10, 11, 11, 11, 11, 18, -1, 630 55, 56, 17, 18, 19, 20, -1, 22, 23, 24, 631 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 632 35, 36, 37, 38, 39, 40, 3, 4, 5, 6, 633 -1, 8, 7, 8, 9, 10, 11, -1, -1, -1, 634 -1, 18, -1, 98, -1, 22, 101, 102, 103, 104, 635 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 636 115, 7, 8, 9, 10, 11, 12, 13, 14, 15, 637 16, 17, -1, -1, 20, -1, 22, 3, 4, 5, 638 6, 136, 8, -1, -1, -1, 3, 4, 5, -1, 639 -1, 8, 18, -1, -1, -1, -1, 112, 113, 114, 640 115, 18, 7, 8, 9, 10, 11, 12, 13, 14, 641 15, 16, 17, -1, -1, 20, 21, 7, 8, 9, 642 10, 11, 12, 13, 14, 15, 16, 17, -1, -1, 643 20, 21, 7, 8, 9, 10, 11, 12, 13, 14, 644 15, 16, 17, -1, -1, 20, 21, 7, 8, 9, 645 10, 11, 12, 13, 14, 15, 16, 17, -1, -1, 646 20, 21, 7, 8, 9, 10, 11, 12, 13, 14, 647 15, 16, 17, -1, -1, 20, 21, 7, 8, 9, 648 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 649 20, 7, 8, 9, 10, 11, 12, 13, 14, 15, 650 16, 17, -1, 19, 20, 7, 8, 9, 10, 11, 651 12, 13, 14, 15, 16, 17, -1, 19, 20, 7, 652 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 653 -1, 19, 20, 7, 8, 9, 10, 11, 12, 13, 654 14, 15, 16, 17, -1, 19, 20, 7, 8, 9, 655 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 656 20, 7, 8, 9, 10, 11, 12, 13, 14, 15, 657 16, 17, -1, -1, 20, 7, 8, 9, 10, 11, 658 12, 13, 14, 15, 16, 17, -1, -1, 20, 7, 659 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 660 -1, -1, 20, 7, 8, 9, 10, 11, 12, 13, 661 14, 15, 16, 17, -1, -1, 20, 7, 8, 9, 662 10, 11 619 663 }; 620 664 … … 623 667 static const yytype_uint8 yystos[] = 624 668 { 625 0, 3, 4, 5, 6, 8, 17, 19, 22, 23, 626 24, 17, 23, 24, 23, 24, 0, 7, 8, 9, 627 10, 11, 12, 13, 14, 15, 16, 7, 8, 9, 628 10, 11, 12, 13, 14, 15, 16, 19, 23, 24, 629 18, 18, 23, 24, 23, 24, 23, 24, 23, 24, 630 5, 8, 17, 23, 23, 24, 23, 24, 23, 24, 631 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 632 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 633 23, 24, 23, 24, 18, 18, 17, 23, 23, 7, 634 8, 9, 10, 12, 13, 14, 15, 16, 23, 23, 635 23, 23, 23, 23, 23, 23, 23, 23 669 0, 3, 4, 5, 6, 8, 18, 22, 25, 26, 670 27, 18, 26, 27, 26, 27, 0, 7, 8, 9, 671 10, 11, 12, 13, 14, 15, 16, 17, 20, 7, 672 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 673 20, 22, 26, 27, 19, 19, 26, 27, 26, 27, 674 26, 27, 26, 27, 5, 8, 18, 26, 26, 27, 675 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 676 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 677 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 678 26, 27, 26, 27, 26, 27, 19, 19, 18, 26, 679 26, 7, 8, 9, 10, 12, 13, 14, 15, 16, 680 17, 20, 21, 21, 21, 21, 26, 26, 26, 26, 681 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 682 26, 27, 26, 27, 26, 27, 21, 26 636 683 }; 637 684 … … 639 686 static const yytype_uint8 yyr1[] = 640 687 { 641 0, 21, 22, 22, 23, 23, 23, 23, 23, 23, 642 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 643 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 644 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 645 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 646 24, 24, 24 688 0, 24, 25, 25, 26, 26, 26, 26, 26, 26, 689 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 690 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 691 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 692 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 693 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 694 27, 27, 27, 27, 27 647 695 }; 648 696 … … 651 699 { 652 700 0, 2, 1, 2, 1, 1, 3, 3, 3, 3, 653 2, 3, 3, 3, 3, 3, 3, 3, 4, 1, 654 1, 3, 3, 3, 3, 2, 3, 3, 3, 3, 701 2, 3, 3, 3, 3, 3, 3, 3, 5, 3, 702 4, 1, 1, 3, 3, 3, 3, 2, 3, 3, 703 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 704 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 655 705 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 656 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 657 3, 3, 4 706 3, 3, 3, 3, 4 658 707 }; 659 708 … … 1332 1381 { 1333 1382 case 2: 1334 #line 6 1"yacc_parser.yacc" /* yacc.c:1646 */1383 #line 63 "yacc_parser.yacc" /* yacc.c:1646 */ 1335 1384 { /* Nothing to do */ } 1336 #line 13 37"yacc_parser.cpp" /* yacc.c:1646 */1385 #line 1386 "yacc_parser.cpp" /* yacc.c:1646 */ 1337 1386 break; 1338 1387 1339 1388 case 3: 1340 #line 6 2"yacc_parser.yacc" /* yacc.c:1646 */1389 #line 64 "yacc_parser.yacc" /* yacc.c:1646 */ 1341 1390 { parsed = (yyvsp[-1].filterNode); } 1342 #line 13 43"yacc_parser.cpp" /* yacc.c:1646 */1391 #line 1392 "yacc_parser.cpp" /* yacc.c:1646 */ 1343 1392 break; 1344 1393 1345 1394 case 4: 1346 #line 6 6"yacc_parser.yacc" /* yacc.c:1646 */1395 #line 68 "yacc_parser.yacc" /* yacc.c:1646 */ 1347 1396 { (yyval.scalarNode) = new CScalarValExprNode(*(yyvsp[0].str)); delete (yyvsp[0].str); } 1348 #line 13 49"yacc_parser.cpp" /* yacc.c:1646 */1397 #line 1398 "yacc_parser.cpp" /* yacc.c:1646 */ 1349 1398 break; 1350 1399 1351 1400 case 5: 1352 #line 6 7"yacc_parser.yacc" /* yacc.c:1646 */1401 #line 69 "yacc_parser.yacc" /* yacc.c:1646 */ 1353 1402 { (yyval.scalarNode) = new CScalarVarExprNode(*(yyvsp[0].str)); delete (yyvsp[0].str); } 1354 #line 1 355"yacc_parser.cpp" /* yacc.c:1646 */1403 #line 1404 "yacc_parser.cpp" /* yacc.c:1646 */ 1355 1404 break; 1356 1405 1357 1406 case 6: 1358 #line 68"yacc_parser.yacc" /* yacc.c:1646 */1407 #line 70 "yacc_parser.yacc" /* yacc.c:1646 */ 1359 1408 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "add", (yyvsp[0].scalarNode)); } 1360 #line 1 361"yacc_parser.cpp" /* yacc.c:1646 */1409 #line 1410 "yacc_parser.cpp" /* yacc.c:1646 */ 1361 1410 break; 1362 1411 1363 1412 case 7: 1364 #line 69"yacc_parser.yacc" /* yacc.c:1646 */1413 #line 71 "yacc_parser.yacc" /* yacc.c:1646 */ 1365 1414 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "minus", (yyvsp[0].scalarNode)); } 1366 #line 1 367"yacc_parser.cpp" /* yacc.c:1646 */1415 #line 1416 "yacc_parser.cpp" /* yacc.c:1646 */ 1367 1416 break; 1368 1417 1369 1418 case 8: 1370 #line 7 0"yacc_parser.yacc" /* yacc.c:1646 */1419 #line 72 "yacc_parser.yacc" /* yacc.c:1646 */ 1371 1420 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "mult", (yyvsp[0].scalarNode)); } 1372 #line 1 373"yacc_parser.cpp" /* yacc.c:1646 */1421 #line 1422 "yacc_parser.cpp" /* yacc.c:1646 */ 1373 1422 break; 1374 1423 1375 1424 case 9: 1376 #line 7 1"yacc_parser.yacc" /* yacc.c:1646 */1425 #line 73 "yacc_parser.yacc" /* yacc.c:1646 */ 1377 1426 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "div", (yyvsp[0].scalarNode)); } 1378 #line 1 379"yacc_parser.cpp" /* yacc.c:1646 */1427 #line 1428 "yacc_parser.cpp" /* yacc.c:1646 */ 1379 1428 break; 1380 1429 1381 1430 case 10: 1382 #line 7 2"yacc_parser.yacc" /* yacc.c:1646 */1431 #line 74 "yacc_parser.yacc" /* yacc.c:1646 */ 1383 1432 { (yyval.scalarNode) = new CScalarUnaryOpExprNode("neg", (yyvsp[0].scalarNode)); } 1384 #line 1 385"yacc_parser.cpp" /* yacc.c:1646 */1433 #line 1434 "yacc_parser.cpp" /* yacc.c:1646 */ 1385 1434 break; 1386 1435 1387 1436 case 11: 1388 #line 7 3"yacc_parser.yacc" /* yacc.c:1646 */1437 #line 75 "yacc_parser.yacc" /* yacc.c:1646 */ 1389 1438 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "pow", (yyvsp[0].scalarNode)); } 1390 #line 1 391"yacc_parser.cpp" /* yacc.c:1646 */1439 #line 1440 "yacc_parser.cpp" /* yacc.c:1646 */ 1391 1440 break; 1392 1441 1393 1442 case 12: 1394 #line 7 4"yacc_parser.yacc" /* yacc.c:1646 */1443 #line 76 "yacc_parser.yacc" /* yacc.c:1646 */ 1395 1444 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "eq", (yyvsp[0].scalarNode)); } 1396 #line 1 397"yacc_parser.cpp" /* yacc.c:1646 */1445 #line 1446 "yacc_parser.cpp" /* yacc.c:1646 */ 1397 1446 break; 1398 1447 1399 1448 case 13: 1400 #line 7 5"yacc_parser.yacc" /* yacc.c:1646 */1449 #line 77 "yacc_parser.yacc" /* yacc.c:1646 */ 1401 1450 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "lt", (yyvsp[0].scalarNode)); } 1402 #line 14 03"yacc_parser.cpp" /* yacc.c:1646 */1451 #line 1452 "yacc_parser.cpp" /* yacc.c:1646 */ 1403 1452 break; 1404 1453 1405 1454 case 14: 1406 #line 7 6"yacc_parser.yacc" /* yacc.c:1646 */1455 #line 78 "yacc_parser.yacc" /* yacc.c:1646 */ 1407 1456 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "gt", (yyvsp[0].scalarNode)); } 1408 #line 14 09"yacc_parser.cpp" /* yacc.c:1646 */1457 #line 1458 "yacc_parser.cpp" /* yacc.c:1646 */ 1409 1458 break; 1410 1459 1411 1460 case 15: 1412 #line 7 7"yacc_parser.yacc" /* yacc.c:1646 */1461 #line 79 "yacc_parser.yacc" /* yacc.c:1646 */ 1413 1462 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "le", (yyvsp[0].scalarNode)); } 1414 #line 14 15"yacc_parser.cpp" /* yacc.c:1646 */1463 #line 1464 "yacc_parser.cpp" /* yacc.c:1646 */ 1415 1464 break; 1416 1465 1417 1466 case 16: 1418 #line 78"yacc_parser.yacc" /* yacc.c:1646 */1467 #line 80 "yacc_parser.yacc" /* yacc.c:1646 */ 1419 1468 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "ge", (yyvsp[0].scalarNode)); } 1420 #line 14 21"yacc_parser.cpp" /* yacc.c:1646 */1469 #line 1470 "yacc_parser.cpp" /* yacc.c:1646 */ 1421 1470 break; 1422 1471 1423 1472 case 17: 1424 #line 79 "yacc_parser.yacc" /* yacc.c:1646 */ 1473 #line 81 "yacc_parser.yacc" /* yacc.c:1646 */ 1474 { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "ne", (yyvsp[0].scalarNode)); } 1475 #line 1476 "yacc_parser.cpp" /* yacc.c:1646 */ 1476 break; 1477 1478 case 18: 1479 #line 82 "yacc_parser.yacc" /* yacc.c:1646 */ 1480 {(yyval.scalarNode) = new CScalarTernaryOpExprNode((yyvsp[-4].scalarNode), "cond", (yyvsp[-2].scalarNode), (yyvsp[0].scalarNode));} 1481 #line 1482 "yacc_parser.cpp" /* yacc.c:1646 */ 1482 break; 1483 1484 case 19: 1485 #line 83 "yacc_parser.yacc" /* yacc.c:1646 */ 1425 1486 { (yyval.scalarNode) = (yyvsp[-1].scalarNode); } 1426 #line 14 27"yacc_parser.cpp" /* yacc.c:1646 */1427 break; 1428 1429 case 18:1430 #line 8 0"yacc_parser.yacc" /* yacc.c:1646 */1487 #line 1488 "yacc_parser.cpp" /* yacc.c:1646 */ 1488 break; 1489 1490 case 20: 1491 #line 84 "yacc_parser.yacc" /* yacc.c:1646 */ 1431 1492 { (yyval.scalarNode) = new CScalarUnaryOpExprNode(*(yyvsp[-3].str), (yyvsp[-1].scalarNode)); delete (yyvsp[-3].str); } 1432 #line 14 33"yacc_parser.cpp" /* yacc.c:1646 */1433 break; 1434 1435 case 19:1436 #line 8 4"yacc_parser.yacc" /* yacc.c:1646 */1493 #line 1494 "yacc_parser.cpp" /* yacc.c:1646 */ 1494 break; 1495 1496 case 21: 1497 #line 88 "yacc_parser.yacc" /* yacc.c:1646 */ 1437 1498 { (yyval.filterNode) = new CFilterFieldExprNode(*(yyvsp[0].str)); delete (yyvsp[0].str); } 1438 #line 1 439"yacc_parser.cpp" /* yacc.c:1646 */1439 break; 1440 1441 case 2 0:1442 #line 8 5"yacc_parser.yacc" /* yacc.c:1646 */1499 #line 1500 "yacc_parser.cpp" /* yacc.c:1646 */ 1500 break; 1501 1502 case 22: 1503 #line 89 "yacc_parser.yacc" /* yacc.c:1646 */ 1443 1504 { (yyval.filterNode) = new CFilterTemporalFieldExprNode(*(yyvsp[0].str)); delete (yyvsp[0].str); } 1444 #line 1 445"yacc_parser.cpp" /* yacc.c:1646 */1445 break; 1446 1447 case 2 1:1448 #line 86"yacc_parser.yacc" /* yacc.c:1646 */1505 #line 1506 "yacc_parser.cpp" /* yacc.c:1646 */ 1506 break; 1507 1508 case 23: 1509 #line 90 "yacc_parser.yacc" /* yacc.c:1646 */ 1449 1510 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "add", (yyvsp[0].filterNode)); } 1450 #line 1 451"yacc_parser.cpp" /* yacc.c:1646 */1451 break; 1452 1453 case 2 2:1454 #line 87"yacc_parser.yacc" /* yacc.c:1646 */1511 #line 1512 "yacc_parser.cpp" /* yacc.c:1646 */ 1512 break; 1513 1514 case 24: 1515 #line 91 "yacc_parser.yacc" /* yacc.c:1646 */ 1455 1516 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "minus", (yyvsp[0].filterNode)); } 1456 #line 1 457"yacc_parser.cpp" /* yacc.c:1646 */1457 break; 1458 1459 case 2 3:1460 #line 88"yacc_parser.yacc" /* yacc.c:1646 */1517 #line 1518 "yacc_parser.cpp" /* yacc.c:1646 */ 1518 break; 1519 1520 case 25: 1521 #line 92 "yacc_parser.yacc" /* yacc.c:1646 */ 1461 1522 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "mult", (yyvsp[0].filterNode)); } 1462 #line 1 463"yacc_parser.cpp" /* yacc.c:1646 */1463 break; 1464 1465 case 2 4:1466 #line 89"yacc_parser.yacc" /* yacc.c:1646 */1523 #line 1524 "yacc_parser.cpp" /* yacc.c:1646 */ 1524 break; 1525 1526 case 26: 1527 #line 93 "yacc_parser.yacc" /* yacc.c:1646 */ 1467 1528 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "div", (yyvsp[0].filterNode)); } 1468 #line 1 469"yacc_parser.cpp" /* yacc.c:1646 */1469 break; 1470 1471 case 2 5:1472 #line 9 0"yacc_parser.yacc" /* yacc.c:1646 */1529 #line 1530 "yacc_parser.cpp" /* yacc.c:1646 */ 1530 break; 1531 1532 case 27: 1533 #line 94 "yacc_parser.yacc" /* yacc.c:1646 */ 1473 1534 { (yyval.filterNode) = new CFilterUnaryOpExprNode("neg", (yyvsp[0].filterNode)); } 1474 #line 1 475"yacc_parser.cpp" /* yacc.c:1646 */1475 break; 1476 1477 case 2 6:1478 #line 9 1"yacc_parser.yacc" /* yacc.c:1646 */1535 #line 1536 "yacc_parser.cpp" /* yacc.c:1646 */ 1536 break; 1537 1538 case 28: 1539 #line 95 "yacc_parser.yacc" /* yacc.c:1646 */ 1479 1540 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "pow", (yyvsp[0].filterNode)); } 1480 #line 1 481"yacc_parser.cpp" /* yacc.c:1646 */1481 break; 1482 1483 case 2 7:1484 #line 9 2"yacc_parser.yacc" /* yacc.c:1646 */1541 #line 1542 "yacc_parser.cpp" /* yacc.c:1646 */ 1542 break; 1543 1544 case 29: 1545 #line 96 "yacc_parser.yacc" /* yacc.c:1646 */ 1485 1546 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "eq", (yyvsp[0].filterNode)); } 1486 #line 1 487"yacc_parser.cpp" /* yacc.c:1646 */1487 break; 1488 1489 case 28:1490 #line 9 3"yacc_parser.yacc" /* yacc.c:1646 */1547 #line 1548 "yacc_parser.cpp" /* yacc.c:1646 */ 1548 break; 1549 1550 case 30: 1551 #line 97 "yacc_parser.yacc" /* yacc.c:1646 */ 1491 1552 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "lt", (yyvsp[0].filterNode)); } 1492 #line 1 493"yacc_parser.cpp" /* yacc.c:1646 */1493 break; 1494 1495 case 29:1496 #line 9 4"yacc_parser.yacc" /* yacc.c:1646 */1553 #line 1554 "yacc_parser.cpp" /* yacc.c:1646 */ 1554 break; 1555 1556 case 31: 1557 #line 98 "yacc_parser.yacc" /* yacc.c:1646 */ 1497 1558 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "gt", (yyvsp[0].filterNode)); } 1498 #line 1 499"yacc_parser.cpp" /* yacc.c:1646 */1499 break; 1500 1501 case 3 0:1502 #line 9 5"yacc_parser.yacc" /* yacc.c:1646 */1559 #line 1560 "yacc_parser.cpp" /* yacc.c:1646 */ 1560 break; 1561 1562 case 32: 1563 #line 99 "yacc_parser.yacc" /* yacc.c:1646 */ 1503 1564 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "le", (yyvsp[0].filterNode)); } 1504 #line 15 05"yacc_parser.cpp" /* yacc.c:1646 */1505 break; 1506 1507 case 3 1:1508 #line 96"yacc_parser.yacc" /* yacc.c:1646 */1565 #line 1566 "yacc_parser.cpp" /* yacc.c:1646 */ 1566 break; 1567 1568 case 33: 1569 #line 100 "yacc_parser.yacc" /* yacc.c:1646 */ 1509 1570 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "ge", (yyvsp[0].filterNode)); } 1510 #line 1511 "yacc_parser.cpp" /* yacc.c:1646 */ 1511 break; 1512 1513 case 32: 1514 #line 97 "yacc_parser.yacc" /* yacc.c:1646 */ 1571 #line 1572 "yacc_parser.cpp" /* yacc.c:1646 */ 1572 break; 1573 1574 case 34: 1575 #line 101 "yacc_parser.yacc" /* yacc.c:1646 */ 1576 { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "ne", (yyvsp[0].filterNode)); } 1577 #line 1578 "yacc_parser.cpp" /* yacc.c:1646 */ 1578 break; 1579 1580 case 35: 1581 #line 102 "yacc_parser.yacc" /* yacc.c:1646 */ 1515 1582 { (yyval.filterNode) = (yyvsp[-1].filterNode); } 1516 #line 1517 "yacc_parser.cpp" /* yacc.c:1646 */ 1517 break; 1518 1519 case 33: 1520 #line 98 "yacc_parser.yacc" /* yacc.c:1646 */ 1583 #line 1584 "yacc_parser.cpp" /* yacc.c:1646 */ 1584 break; 1585 1586 case 36: 1587 #line 103 "yacc_parser.yacc" /* yacc.c:1646 */ 1588 {(yyval.filterNode) = new CFilterScalarScalarFieldOpExprNode((yyvsp[-4].scalarNode), "cond",(yyvsp[-2].scalarNode), (yyvsp[0].filterNode));} 1589 #line 1590 "yacc_parser.cpp" /* yacc.c:1646 */ 1590 break; 1591 1592 case 37: 1593 #line 104 "yacc_parser.yacc" /* yacc.c:1646 */ 1594 {(yyval.filterNode) = new CFilterScalarFieldScalarOpExprNode((yyvsp[-4].scalarNode), "cond",(yyvsp[-2].filterNode), (yyvsp[0].scalarNode));} 1595 #line 1596 "yacc_parser.cpp" /* yacc.c:1646 */ 1596 break; 1597 1598 case 38: 1599 #line 105 "yacc_parser.yacc" /* yacc.c:1646 */ 1600 {(yyval.filterNode) = new CFilterScalarFieldFieldOpExprNode((yyvsp[-4].scalarNode), "cond",(yyvsp[-2].filterNode), (yyvsp[0].filterNode));} 1601 #line 1602 "yacc_parser.cpp" /* yacc.c:1646 */ 1602 break; 1603 1604 case 39: 1605 #line 106 "yacc_parser.yacc" /* yacc.c:1646 */ 1606 {(yyval.filterNode) = new CFilterFieldScalarScalarOpExprNode((yyvsp[-4].filterNode), "cond",(yyvsp[-2].scalarNode), (yyvsp[0].scalarNode));} 1607 #line 1608 "yacc_parser.cpp" /* yacc.c:1646 */ 1608 break; 1609 1610 case 40: 1611 #line 107 "yacc_parser.yacc" /* yacc.c:1646 */ 1612 {(yyval.filterNode) = new CFilterFieldScalarFieldOpExprNode((yyvsp[-4].filterNode), "cond",(yyvsp[-2].scalarNode), (yyvsp[0].filterNode));} 1613 #line 1614 "yacc_parser.cpp" /* yacc.c:1646 */ 1614 break; 1615 1616 case 41: 1617 #line 108 "yacc_parser.yacc" /* yacc.c:1646 */ 1618 {(yyval.filterNode) = new CFilterFieldFieldScalarOpExprNode((yyvsp[-4].filterNode), "cond",(yyvsp[-2].filterNode), (yyvsp[0].scalarNode));} 1619 #line 1620 "yacc_parser.cpp" /* yacc.c:1646 */ 1620 break; 1621 1622 case 42: 1623 #line 109 "yacc_parser.yacc" /* yacc.c:1646 */ 1624 {(yyval.filterNode) = new CFilterFieldFieldFieldOpExprNode((yyvsp[-4].filterNode), "cond",(yyvsp[-2].filterNode), (yyvsp[0].filterNode));} 1625 #line 1626 "yacc_parser.cpp" /* yacc.c:1646 */ 1626 break; 1627 1628 case 43: 1629 #line 110 "yacc_parser.yacc" /* yacc.c:1646 */ 1521 1630 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "add", (yyvsp[0].scalarNode)); } 1522 #line 1 523"yacc_parser.cpp" /* yacc.c:1646 */1523 break; 1524 1525 case 34:1526 #line 99"yacc_parser.yacc" /* yacc.c:1646 */1631 #line 1632 "yacc_parser.cpp" /* yacc.c:1646 */ 1632 break; 1633 1634 case 44: 1635 #line 111 "yacc_parser.yacc" /* yacc.c:1646 */ 1527 1636 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "add", (yyvsp[0].filterNode)); } 1528 #line 1 529"yacc_parser.cpp" /* yacc.c:1646 */1529 break; 1530 1531 case 35:1532 #line 1 00"yacc_parser.yacc" /* yacc.c:1646 */1637 #line 1638 "yacc_parser.cpp" /* yacc.c:1646 */ 1638 break; 1639 1640 case 45: 1641 #line 112 "yacc_parser.yacc" /* yacc.c:1646 */ 1533 1642 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "minus", (yyvsp[0].scalarNode)); } 1534 #line 1 535"yacc_parser.cpp" /* yacc.c:1646 */1535 break; 1536 1537 case 36:1538 #line 1 01"yacc_parser.yacc" /* yacc.c:1646 */1643 #line 1644 "yacc_parser.cpp" /* yacc.c:1646 */ 1644 break; 1645 1646 case 46: 1647 #line 113 "yacc_parser.yacc" /* yacc.c:1646 */ 1539 1648 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "minus", (yyvsp[0].filterNode)); } 1540 #line 1 541"yacc_parser.cpp" /* yacc.c:1646 */1541 break; 1542 1543 case 37:1544 #line 1 02"yacc_parser.yacc" /* yacc.c:1646 */1649 #line 1650 "yacc_parser.cpp" /* yacc.c:1646 */ 1650 break; 1651 1652 case 47: 1653 #line 114 "yacc_parser.yacc" /* yacc.c:1646 */ 1545 1654 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "mult", (yyvsp[0].scalarNode)); } 1546 #line 1 547"yacc_parser.cpp" /* yacc.c:1646 */1547 break; 1548 1549 case 38:1550 #line 1 03"yacc_parser.yacc" /* yacc.c:1646 */1655 #line 1656 "yacc_parser.cpp" /* yacc.c:1646 */ 1656 break; 1657 1658 case 48: 1659 #line 115 "yacc_parser.yacc" /* yacc.c:1646 */ 1551 1660 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "mult", (yyvsp[0].filterNode)); } 1552 #line 1 553"yacc_parser.cpp" /* yacc.c:1646 */1553 break; 1554 1555 case 39:1556 #line 1 04"yacc_parser.yacc" /* yacc.c:1646 */1661 #line 1662 "yacc_parser.cpp" /* yacc.c:1646 */ 1662 break; 1663 1664 case 49: 1665 #line 116 "yacc_parser.yacc" /* yacc.c:1646 */ 1557 1666 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "div", (yyvsp[0].scalarNode)); } 1558 #line 1 559"yacc_parser.cpp" /* yacc.c:1646 */1559 break; 1560 1561 case 40:1562 #line 1 05"yacc_parser.yacc" /* yacc.c:1646 */1667 #line 1668 "yacc_parser.cpp" /* yacc.c:1646 */ 1668 break; 1669 1670 case 50: 1671 #line 117 "yacc_parser.yacc" /* yacc.c:1646 */ 1563 1672 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "div", (yyvsp[0].filterNode)); } 1564 #line 1 565"yacc_parser.cpp" /* yacc.c:1646 */1565 break; 1566 1567 case 41:1568 #line 1 06"yacc_parser.yacc" /* yacc.c:1646 */1673 #line 1674 "yacc_parser.cpp" /* yacc.c:1646 */ 1674 break; 1675 1676 case 51: 1677 #line 118 "yacc_parser.yacc" /* yacc.c:1646 */ 1569 1678 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "pow", (yyvsp[0].scalarNode)); } 1570 #line 1 571"yacc_parser.cpp" /* yacc.c:1646 */1571 break; 1572 1573 case 42:1574 #line 1 07"yacc_parser.yacc" /* yacc.c:1646 */1679 #line 1680 "yacc_parser.cpp" /* yacc.c:1646 */ 1680 break; 1681 1682 case 52: 1683 #line 119 "yacc_parser.yacc" /* yacc.c:1646 */ 1575 1684 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "eq", (yyvsp[0].scalarNode)); } 1576 #line 1 577"yacc_parser.cpp" /* yacc.c:1646 */1577 break; 1578 1579 case 43:1580 #line 1 08"yacc_parser.yacc" /* yacc.c:1646 */1685 #line 1686 "yacc_parser.cpp" /* yacc.c:1646 */ 1686 break; 1687 1688 case 53: 1689 #line 120 "yacc_parser.yacc" /* yacc.c:1646 */ 1581 1690 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "eq", (yyvsp[0].filterNode)); } 1582 #line 1 583"yacc_parser.cpp" /* yacc.c:1646 */1583 break; 1584 1585 case 44:1586 #line 1 09"yacc_parser.yacc" /* yacc.c:1646 */1691 #line 1692 "yacc_parser.cpp" /* yacc.c:1646 */ 1692 break; 1693 1694 case 54: 1695 #line 121 "yacc_parser.yacc" /* yacc.c:1646 */ 1587 1696 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "lt", (yyvsp[0].scalarNode)); } 1588 #line 1 589"yacc_parser.cpp" /* yacc.c:1646 */1589 break; 1590 1591 case 45:1592 #line 1 10"yacc_parser.yacc" /* yacc.c:1646 */1697 #line 1698 "yacc_parser.cpp" /* yacc.c:1646 */ 1698 break; 1699 1700 case 55: 1701 #line 122 "yacc_parser.yacc" /* yacc.c:1646 */ 1593 1702 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "lt", (yyvsp[0].filterNode)); } 1594 #line 1 595"yacc_parser.cpp" /* yacc.c:1646 */1595 break; 1596 1597 case 46:1598 #line 1 11"yacc_parser.yacc" /* yacc.c:1646 */1703 #line 1704 "yacc_parser.cpp" /* yacc.c:1646 */ 1704 break; 1705 1706 case 56: 1707 #line 123 "yacc_parser.yacc" /* yacc.c:1646 */ 1599 1708 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "gt", (yyvsp[0].scalarNode)); } 1600 #line 1 601"yacc_parser.cpp" /* yacc.c:1646 */1601 break; 1602 1603 case 47:1604 #line 1 12"yacc_parser.yacc" /* yacc.c:1646 */1709 #line 1710 "yacc_parser.cpp" /* yacc.c:1646 */ 1710 break; 1711 1712 case 57: 1713 #line 124 "yacc_parser.yacc" /* yacc.c:1646 */ 1605 1714 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "gt", (yyvsp[0].filterNode)); } 1606 #line 1 607"yacc_parser.cpp" /* yacc.c:1646 */1607 break; 1608 1609 case 48:1610 #line 1 13"yacc_parser.yacc" /* yacc.c:1646 */1715 #line 1716 "yacc_parser.cpp" /* yacc.c:1646 */ 1716 break; 1717 1718 case 58: 1719 #line 125 "yacc_parser.yacc" /* yacc.c:1646 */ 1611 1720 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "le", (yyvsp[0].scalarNode)); } 1612 #line 1 613"yacc_parser.cpp" /* yacc.c:1646 */1613 break; 1614 1615 case 49:1616 #line 1 14"yacc_parser.yacc" /* yacc.c:1646 */1721 #line 1722 "yacc_parser.cpp" /* yacc.c:1646 */ 1722 break; 1723 1724 case 59: 1725 #line 126 "yacc_parser.yacc" /* yacc.c:1646 */ 1617 1726 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "le", (yyvsp[0].filterNode)); } 1618 #line 1 619"yacc_parser.cpp" /* yacc.c:1646 */1619 break; 1620 1621 case 50:1622 #line 1 15"yacc_parser.yacc" /* yacc.c:1646 */1727 #line 1728 "yacc_parser.cpp" /* yacc.c:1646 */ 1728 break; 1729 1730 case 60: 1731 #line 127 "yacc_parser.yacc" /* yacc.c:1646 */ 1623 1732 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "ge", (yyvsp[0].scalarNode)); } 1624 #line 1 625"yacc_parser.cpp" /* yacc.c:1646 */1625 break; 1626 1627 case 51:1628 #line 1 16"yacc_parser.yacc" /* yacc.c:1646 */1733 #line 1734 "yacc_parser.cpp" /* yacc.c:1646 */ 1734 break; 1735 1736 case 61: 1737 #line 128 "yacc_parser.yacc" /* yacc.c:1646 */ 1629 1738 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "ge", (yyvsp[0].filterNode)); } 1630 #line 1631 "yacc_parser.cpp" /* yacc.c:1646 */ 1631 break; 1632 1633 case 52: 1634 #line 117 "yacc_parser.yacc" /* yacc.c:1646 */ 1739 #line 1740 "yacc_parser.cpp" /* yacc.c:1646 */ 1740 break; 1741 1742 case 62: 1743 #line 129 "yacc_parser.yacc" /* yacc.c:1646 */ 1744 { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "ne", (yyvsp[0].scalarNode)); } 1745 #line 1746 "yacc_parser.cpp" /* yacc.c:1646 */ 1746 break; 1747 1748 case 63: 1749 #line 130 "yacc_parser.yacc" /* yacc.c:1646 */ 1750 { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "ne", (yyvsp[0].filterNode)); } 1751 #line 1752 "yacc_parser.cpp" /* yacc.c:1646 */ 1752 break; 1753 1754 case 64: 1755 #line 131 "yacc_parser.yacc" /* yacc.c:1646 */ 1635 1756 { (yyval.filterNode) = new CFilterUnaryOpExprNode(*(yyvsp[-3].str), (yyvsp[-1].filterNode)); delete (yyvsp[-3].str); } 1636 #line 1 637"yacc_parser.cpp" /* yacc.c:1646 */1637 break; 1638 1639 1640 #line 1 641"yacc_parser.cpp" /* yacc.c:1646 */1757 #line 1758 "yacc_parser.cpp" /* yacc.c:1646 */ 1758 break; 1759 1760 1761 #line 1762 "yacc_parser.cpp" /* yacc.c:1646 */ 1641 1762 default: break; 1642 1763 } … … 1866 1987 return yyresult; 1867 1988 } 1868 #line 1 19"yacc_parser.yacc" /* yacc.c:1906 */1989 #line 133 "yacc_parser.yacc" /* yacc.c:1906 */ 1869 1990 1870 1991 -
XIOS/dev/dev_olga/src/parse_expr/yacc_parser.hpp
r728 r1158 60 60 LE = 270, 61 61 GE = 271, 62 LEFT_PARENTHESIS = 272, 63 RIGHT_PARENTHESIS = 273, 64 END = 274, 65 NEG = 275 62 NE = 272, 63 LEFT_PARENTHESIS = 273, 64 RIGHT_PARENTHESIS = 274, 65 QUESTION_MARK = 275, 66 COLON = 276, 67 END = 277, 68 NEG = 278 66 69 }; 67 70 #endif … … 78 81 xios::IFilterExprNode* filterNode; 79 82 80 #line 8 1"yacc_parser.hpp" /* yacc.c:1909 */83 #line 84 "yacc_parser.hpp" /* yacc.c:1909 */ 81 84 }; 82 85 # define YYSTYPE_IS_TRIVIAL 1 -
XIOS/dev/dev_olga/src/parse_expr/yacc_parser.yacc
r728 r1158 42 42 %token <str> VAR ID AVERAGE 43 43 %token PLUS MINUS TIMES DIVIDE POWER 44 %token EQ LT GT LE GE 44 %token EQ LT GT LE GE NE 45 45 %token LEFT_PARENTHESIS RIGHT_PARENTHESIS 46 %token QUESTION_MARK COLON 46 47 %token <str> END 47 48 48 %left EQ LT GT LE GE 49 %nonassoc QUESTION_MARK COLON 50 %left EQ LT GT LE GE NE 49 51 %left PLUS MINUS 50 52 %left TIMES DIVIDE … … 77 79 | Expression LE Expression { $$ = new CScalarBinaryOpExprNode($1, "le", $3); } 78 80 | Expression GE Expression { $$ = new CScalarBinaryOpExprNode($1, "ge", $3); } 81 | Expression NE Expression { $$ = new CScalarBinaryOpExprNode($1, "ne", $3); } 82 | Expression QUESTION_MARK Expression COLON Expression {$$ = new CScalarTernaryOpExprNode($1, "cond", $3, $5);} 79 83 | LEFT_PARENTHESIS Expression RIGHT_PARENTHESIS { $$ = $2; } 80 84 | ID LEFT_PARENTHESIS Expression RIGHT_PARENTHESIS { $$ = new CScalarUnaryOpExprNode(*$1, $3); delete $1; } … … 95 99 | Field_expr LE Field_expr { $$ = new CFilterFieldFieldOpExprNode($1, "le", $3); } 96 100 | Field_expr GE Field_expr { $$ = new CFilterFieldFieldOpExprNode($1, "ge", $3); } 101 | Field_expr NE Field_expr { $$ = new CFilterFieldFieldOpExprNode($1, "ne", $3); } 97 102 | LEFT_PARENTHESIS Field_expr RIGHT_PARENTHESIS { $$ = $2; } 103 | Expression QUESTION_MARK Expression COLON Field_expr {$$ = new CFilterScalarScalarFieldOpExprNode($1, "cond",$3, $5);} 104 | Expression QUESTION_MARK Field_expr COLON Expression {$$ = new CFilterScalarFieldScalarOpExprNode($1, "cond",$3, $5);} 105 | Expression QUESTION_MARK Field_expr COLON Field_expr {$$ = new CFilterScalarFieldFieldOpExprNode($1, "cond",$3, $5);} 106 | Field_expr QUESTION_MARK Expression COLON Expression {$$ = new CFilterFieldScalarScalarOpExprNode($1, "cond",$3, $5);} 107 | Field_expr QUESTION_MARK Expression COLON Field_expr {$$ = new CFilterFieldScalarFieldOpExprNode($1, "cond",$3, $5);} 108 | Field_expr QUESTION_MARK Field_expr COLON Expression {$$ = new CFilterFieldFieldScalarOpExprNode($1, "cond",$3, $5);} 109 | Field_expr QUESTION_MARK Field_expr COLON Field_expr {$$ = new CFilterFieldFieldFieldOpExprNode($1, "cond",$3, $5);} 98 110 | Field_expr PLUS Expression { $$ = new CFilterFieldScalarOpExprNode($1, "add", $3); } 99 111 | Expression PLUS Field_expr { $$ = new CFilterScalarFieldOpExprNode($1, "add", $3); } … … 115 127 | Field_expr GE Expression { $$ = new CFilterFieldScalarOpExprNode($1, "ge", $3); } 116 128 | Expression GE Field_expr { $$ = new CFilterScalarFieldOpExprNode($1, "ge", $3); } 129 | Field_expr NE Expression { $$ = new CFilterFieldScalarOpExprNode($1, "ne", $3); } 130 | Expression NE Field_expr { $$ = new CFilterScalarFieldOpExprNode($1, "ne", $3); } 117 131 | ID LEFT_PARENTHESIS Field_expr RIGHT_PARENTHESIS { $$ = new CFilterUnaryOpExprNode(*$1, $3); delete $1; } 118 132 ;
Note: See TracChangeset
for help on using the changeset viewer.