Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ BuildExpression()

void System.Data.ExpressionParser.BuildExpression ( int pri)
inlineprivate

Definition at line 446 of file ExpressionParser.cs.

447 {
448 ExpressionNode expressionNode = null;
449 while (true)
450 {
451 OperatorInfo operatorInfo = _ops[_topOperator - 1];
452 if (operatorInfo._priority < pri)
453 {
454 break;
455 }
456 _topOperator--;
457 switch (operatorInfo._type)
458 {
459 default:
460 return;
461 case Nodes.Binop:
462 {
463 ExpressionNode right = NodePop();
464 ExpressionNode expressionNode2 = NodePop();
465 switch (operatorInfo._op)
466 {
467 case 4:
468 case 6:
469 case 22:
470 case 23:
471 case 24:
472 case 25:
473 throw ExprException.UnsupportedOperator(operatorInfo._op);
474 default:
475 expressionNode = ((operatorInfo._op != 14) ? new BinaryNode(_table, operatorInfo._op, expressionNode2, right) : new LikeNode(_table, operatorInfo._op, expressionNode2, right));
476 break;
477 }
478 break;
479 }
480 case Nodes.Unop:
481 {
482 ExpressionNode expressionNode2 = null;
483 ExpressionNode right = NodePop();
484 int op = operatorInfo._op;
485 if (op != 1 && op != 3 && op == 25)
486 {
487 throw ExprException.UnsupportedOperator(operatorInfo._op);
488 }
489 expressionNode = new UnaryNode(_table, operatorInfo._op, right);
490 break;
491 }
492 case Nodes.Zop:
493 expressionNode = new ZeroOpNode(operatorInfo._op);
494 break;
495 case Nodes.UnopSpec:
496 case Nodes.BinopSpec:
497 return;
498 }
499 NodePush(expressionNode);
500 }
501 }
void NodePush(ExpressionNode node)

References System.Data.OperatorInfo._op, System.Data.ExpressionParser._ops, System.Data.OperatorInfo._priority, System.Data.ExpressionParser._table, System.Data.ExpressionParser._topOperator, System.Data.OperatorInfo._type, System.Data.ExpressionParser.NodePop(), System.Data.ExpressionParser.NodePush(), and System.Data.ExprException.UnsupportedOperator().

Referenced by System.Data.ExpressionParser.Parse().