Lines Matching defs:Analyze

140   void Analyze(const common::Indirection<parser::Expr> &x) {
141 Analyze(x.value());
143 void Analyze(const parser::Expr &x) {
148 void Analyze(const parser::Variable &);
149 void Analyze(const parser::ActualArgSpec &, bool isSubroutine);
292 // Shouldn't get here from Analyze(ArrayElement) without a valid base,
579 if (MaybeExpr substringExpr{Analyze(d)}) {
592 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Designator &d) {
599 MaybeExpr result{Analyze(d.u)};
639 if (MaybeExpr ie{Analyze(n)}) {
735 MaybeExpr ExpressionAnalyzer::Analyze(
742 MaybeExpr ExpressionAnalyzer::Analyze(
748 MaybeExpr ExpressionAnalyzer::Analyze(
795 MaybeExpr ExpressionAnalyzer::Analyze(const parser::RealLiteralConstant &x) {
851 MaybeExpr ExpressionAnalyzer::Analyze(
853 if (auto result{Analyze(std::get<parser::RealLiteralConstant>(x.t))}) {
865 MaybeExpr ExpressionAnalyzer::Analyze(
867 auto result{Analyze(std::get<parser::ComplexLiteralConstant>(x.t))};
877 MaybeExpr ExpressionAnalyzer::Analyze(const parser::ComplexPart &x) {
878 return Analyze(x.u);
881 MaybeExpr ExpressionAnalyzer::Analyze(const parser::ComplexLiteralConstant &z) {
882 return AnalyzeComplex(Analyze(std::get<0>(z.t)), Analyze(std::get<1>(z.t)),
909 MaybeExpr ExpressionAnalyzer::Analyze(const parser::CharLiteralConstant &x) {
916 MaybeExpr ExpressionAnalyzer::Analyze(
927 MaybeExpr ExpressionAnalyzer::Analyze(const parser::LogicalLiteralConstant &x) {
941 MaybeExpr ExpressionAnalyzer::Analyze(const parser::BOZLiteralConstant &x) {
974 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Name &n) {
1033 MaybeExpr ExpressionAnalyzer::Analyze(const parser::NamedConstant &n) {
1035 if (MaybeExpr value{Analyze(n.v)}) {
1045 MaybeExpr ExpressionAnalyzer::Analyze(const parser::NullInit &n) {
1047 if (MaybeExpr value{Analyze(n.v.value())}) {
1058 MaybeExpr ExpressionAnalyzer::Analyze(
1061 return Analyze(std::get<parser::Scalar<parser::Expr>>(stmtFunc.t));
1064 MaybeExpr ExpressionAnalyzer::Analyze(const parser::InitialDataTarget &x) {
1065 return Analyze(x.value());
1068 MaybeExpr ExpressionAnalyzer::Analyze(const parser::DataStmtValue &x) {
1072 if (MaybeExpr expr{Analyze(repeat->u)}) {
1085 return Analyze(std::get<parser::DataStmtConstant>(x.t));
1092 if (MaybeExpr expr{Analyze(*bound)}) {
1111 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Substring &ss) {
1112 if (MaybeExpr baseExpr{Analyze(std::get<parser::DataRef>(ss.t))}) {
1164 MaybeExpr ExpressionAnalyzer::Analyze(
1171 if (MaybeExpr string{Analyze(std::get<parser::CharLiteralConstant>(x.t))}) {
1205 MaybeExpr ExpressionAnalyzer::Analyze(const parser::SubstringInquiry &x) {
1206 if (MaybeExpr substring{Analyze(x.v)}) {
1245 return AsSubscript(Analyze(*s));
1268 if (auto subscriptExpr{AsSubscript(Analyze(s))}) {
1293 MaybeExpr ExpressionAnalyzer::Analyze(const parser::ArrayElement &ae) {
1297 baseExpr = Analyze(ae.base);
1378 MaybeExpr ExpressionAnalyzer::Analyze(const parser::StructureComponent &sc) {
1391 base = Analyze(sc.base);
1393 base = Analyze(sc.base);
1469 MaybeExpr ExpressionAnalyzer::Analyze(const parser::CoindexedNamedObject &x) {
1470 if (auto maybeDataRef{ExtractDataRef(Analyze(x.base))}) {
1498 MaybeExpr coex{Analyze(cosub)};
1518 [&](const auto &x) { Analyze(x.v); },
1659 return ToSpecificInt<KIND>(exprAnalyzer_.Analyze(x));
1813 MaybeExpr lowerExpr{exprAnalyzer_.Analyze(std::get<0>(triplet.t))};
1814 MaybeExpr upperExpr{exprAnalyzer_.Analyze(std::get<1>(triplet.t))};
1815 MaybeExpr strideExpr{exprAnalyzer_.Analyze(std::get<2>(triplet.t))};
1857 Push(exprAnalyzer_.Analyze(expr));
1863 exprAnalyzer_.Analyze(bounds.name);
1969 MaybeExpr ExpressionAnalyzer::Analyze(const parser::ArrayConstructor &array) {
1996 MaybeExpr ExpressionAnalyzer::Analyze(
2066 MaybeExpr value{Analyze(expr)};
2396 if (MaybeExpr base{Analyze(sc.base)}) {
3127 if (auto expr{Analyze(*starOrExpr.v)};
3137 if (auto expr{Analyze(std::get<1>(chevrons->t))};
3144 if (auto expr{Analyze(*maybeExpr)}) {
3151 if (auto expr{Analyze(*maybeExpr)}) {
3161 MaybeExpr ExpressionAnalyzer::Analyze(const parser::FunctionReference &funcRef,
3167 analyzer.Analyze(arg, false /* not subroutine call */);
3196 return Analyze(structureConstructor->value());
3219 void ExpressionAnalyzer::Analyze(const parser::CallStmt &callStmt) {
3225 analyzer.Analyze(arg, true /* is subroutine call */);
3274 const Assignment *ExpressionAnalyzer::Analyze(const parser::AssignmentStmt &x) {
3278 analyzer.Analyze(variable);
3279 analyzer.Analyze(std::get<parser::Expr>(x.t));
3312 const Assignment *ExpressionAnalyzer::Analyze(
3315 MaybeExpr lhs{Analyze(std::get<parser::DataRef>(x.t))};
3319 rhs = Analyze(std::get<parser::Expr>(x.t));
3331 auto lower{AsSubscript(Analyze(std::get<0>(elem.t)))};
3332 auto upper{AsSubscript(Analyze(std::get<1>(elem.t)))};
3343 if (auto lower{AsSubscript(Analyze(bound.v))}) {
3460 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Parentheses &x) {
3461 if (MaybeExpr operand{Analyze(x.v.value())}) {
3478 analyzer.Analyze(x.v);
3496 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::UnaryPlus &x) {
3500 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Negate &x) {
3505 return Analyze(*intConst, true);
3511 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::NOT &x) {
3513 analyzer.Analyze(x.v);
3528 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::PercentLoc &x) {
3535 } else if (MaybeExpr argExpr{Analyze(x.v.value())}) {
3547 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::DefinedUnary &x) {
3550 analyzer.Analyze(std::get<1>(x.t));
3561 analyzer.Analyze(std::get<0>(x.t));
3562 analyzer.Analyze(std::get<1>(x.t));
3580 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Power &x) {
3584 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Multiply &x) {
3588 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Divide &x) {
3592 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Add &x) {
3596 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Subtract &x) {
3600 MaybeExpr ExpressionAnalyzer::Analyze(
3604 return AnalyzeComplex(Analyze(std::get<0>(z.t).value()),
3605 Analyze(std::get<1>(z.t).value()), "complex constructor");
3608 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Concat &x) {
3610 analyzer.Analyze(std::get<0>(x.t));
3611 analyzer.Analyze(std::get<1>(x.t));
3653 analyzer.Analyze(std::get<0>(x.t));
3654 analyzer.Analyze(std::get<1>(x.t));
3681 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::LT &x) {
3685 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::LE &x) {
3689 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::EQ &x) {
3693 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::NE &x) {
3697 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::GE &x) {
3701 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::GT &x) {
3708 analyzer.Analyze(std::get<0>(x.t));
3709 analyzer.Analyze(std::get<1>(x.t));
3725 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::AND &x) {
3729 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::OR &x) {
3733 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::EQV &x) {
3737 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::NEQV &x) {
3741 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::DefinedBinary &x) {
3744 analyzer.Analyze(std::get<1>(x.t));
3745 analyzer.Analyze(std::get<2>(x.t));
3865 result = Analyze(funcRef->value(), &ctor);
3872 result = Analyze(x.u);
3875 result = Analyze(x.u);
3939 // Analyze the collected subexpressions in bottom-up order.
3952 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr &expr) {
3971 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Variable &variable) {
3978 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Selector &selector) {
3991 if (MaybeExpr result{Analyze(funcRef->value(), &ctor)}) {
4013 return Analyze(selector.u);
4015 return Analyze(selector.u);
4019 MaybeExpr ExpressionAnalyzer::Analyze(const parser::DataStmtConstant &x) {
4024 MaybeExpr ExpressionAnalyzer::Analyze(const parser::AllocateObject &x) {
4028 MaybeExpr ExpressionAnalyzer::Analyze(const parser::PointerObject &x) {
4042 if (MaybeExpr kind{Analyze(x)}) {
4234 if (MaybeExpr expr{context_.Analyze(x)}) {
4264 void ArgumentAnalyzer::Analyze(const parser::Variable &x) {
4270 void ArgumentAnalyzer::Analyze(
4747 return context_.Analyze(expr);
4751 return context_.Analyze(expr);