MCPcopy Create free account
hub / github.com/NGSolve/ngsolve / ParseSubExpression

Method ParseSubExpression

ngstd/evalfunc.cpp:616–665  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

614
615
616 EvalFunction::ResultType EvalFunction :: ParseSubExpression ()
617 {
618 ResultType result = ParseTerm ();
619
620 while (1)
621 {
622 switch (GetToken())
623 {
624 case ADD:
625 {
626 ReadNext(); // '+'
627 ResultType result2 = ParseTerm ();
628 if (result.vecdim != result2.vecdim) cerr << "vec error" << endl;
629 result.iscomplex |= result2.iscomplex;
630 if (result.vecdim == 1)
631 AddOperation (ADD);
632 else
633 {
634 AddOperation (VEC_ADD);
635 program.Last().vecdim = result.vecdim;
636 }
637 break;
638 }
639 case SUB:
640 {
641 ReadNext(); // '+'
642 ResultType result2 = ParseTerm ();
643 if (result.vecdim != result2.vecdim) cerr << "vec error" << endl;
644 result.iscomplex |= result2.iscomplex;
645 if (result.vecdim == 1)
646 AddOperation (SUB);
647 else
648 {
649 AddOperation (VEC_SUB);
650 program.Last().vecdim = result.vecdim;
651 }
652 break;
653 }
654 case OR:
655 {
656 ReadNext();
657 ParseTerm ();
658 AddOperation (OR);
659 break;
660 }
661 default:
662 return result;
663 }
664 }
665 }
666
667
668 EvalFunction::ResultType EvalFunction :: ParseTerm ()

Callers

nothing calls this directly

Calls 2

GetTokenFunction · 0.85
AddOperationFunction · 0.85

Tested by

no test coverage detected