https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
Moose::Builder Class Reference

Parses MOOSE input using HIT/WASP. More...

#include <Builder.h>

Inheritance diagram for Moose::Builder:
[legend]

Public Types

enum  SyntaxFormatterType { INPUT_FILE , YAML }
 

Public Member Functions

 Builder (MooseApp &app, ActionWarehouse &action_wh, Parser &parser)
 
virtual ~Builder ()
 
std::string getPrimaryFileName (bool stripLeadingPath=true) const
 Return the primary (first) filename that was parsed.
 
void build ()
 Parse an input file (or text string if provided) consisting of hit syntax and setup objects in the MOOSE derived application.
 
void extractParams (const hit::Node *const section_node, InputParameters &p)
 Attempt to extract values from input starting with the section in input in section_node based on the contents of the passed InputParameters p.
 
void extractParams (const std::string &prefix, InputParameters &p)
 Attempt to extract values from input starting with the section in input defined by the fullpath prefix based on the contents of the passed InputParameters p.
 
void initSyntaxFormatter (SyntaxFormatterType type, bool dump_mode)
 Creates a syntax formatter for printing.
 
void buildFullTree (const std::string &search_string)
 Use MOOSE Factories to construct a full parse tree for documentation or echoing input.
 
void buildJsonSyntaxTree (JsonSyntaxTree &tree) const
 Use MOOSE Factories to construct a parameter tree for documentation or echoing input.
 
void walk (const std::string &fullpath, const std::string &nodepath, hit::Node *n)
 
void errorCheck (const libMesh::Parallel::Communicator &comm, bool warn_unused, bool err_unused)
 
std::vector< std::string > listValidParams (std::string &section_name)
 

Static Public Member Functions

static InputParameters validParams ()
 Parameters that are processed directly by the Parser and are valid anywhere in the input.
 

Public Attributes

const ConsoleStream _console
 An instance of helper class to write streams to the Console objects.
 

Private Member Functions

bool isGlobal (const hit::Node &node) const
 
const hit::Node * queryGlobalParamsNode () const
 Get the [GlobalParams] section node if it exists.
 
void walkRaw (std::string fullpath, std::string nodepath, hit::Node *n)
 

Private Attributes

MooseApp & _app
 The MooseApp this Parser is part of.
 
Factory & _factory
 The Factory associated with that MooseApp.
 
ActionWarehouse & _action_wh
 Action warehouse that will be filled by actions.
 
ActionFactory & _action_factory
 The Factory that builds actions.
 
Syntax & _syntax
 Reference to an object that defines input file syntax.
 
Parser & _parser
 The front parser.
 
hit::Node & _root
 The root node from the Parser.
 
std::unique_ptr< SyntaxTree > _syntax_formatter
 Object for holding the syntax parse tree.
 
std::set< std::string > _extracted_vars
 The set of all variables extracted from the input file.
 
std::vector< std::string > _secs_need_first
 The sections that we need to execute first (read during the final walk)
 
std::vector< hit::ErrorMessage > _errors
 The errors accumulated during the walk.
 
std::map< std::string, std::string > _deprecated_params
 Deprecation warnings (object type/param name) -> (message)
 
std::optional< const hit::Node * > _global_params_node
 The hit Node for the [GlobalParams] block, if any If set (could be null), it means we have searched for it.
 

Detailed Description

Parses MOOSE input using HIT/WASP.

Definition at line 56 of file Builder.h.

Member Enumeration Documentation

◆ SyntaxFormatterType

Enumerator
INPUT_FILE 
YAML 

Definition at line 59 of file Builder.h.

60 {
62 YAML
63 };

Constructor & Destructor Documentation

◆ Builder()

Moose::Builder::Builder ( MooseApp &  app,
ActionWarehouse &  action_wh,
Parser &  parser 
)

Definition at line 105 of file Builder.C.

107 _app(app),
108 _factory(app.getFactory()),
109 _action_wh(action_wh),
112 _parser(parser),
114 _syntax_formatter(nullptr)
115{
116}
An inteface for the _console for outputting to the Console object.
ActionFactory & getActionFactory()
Retrieve a writable reference to the ActionFactory associated with this App.
Definition MooseApp.h:412
Factory & getFactory()
Retrieve a writable reference to the Factory associated with this App.
Definition MooseApp.h:407
ActionWarehouse & _action_wh
Action warehouse that will be filled by actions.
Definition Builder.h:137
Syntax & _syntax
Reference to an object that defines input file syntax.
Definition Builder.h:141
Factory & _factory
The Factory associated with that MooseApp.
Definition Builder.h:135
ActionFactory & _action_factory
The Factory that builds actions.
Definition Builder.h:139
MooseApp & _app
The MooseApp this Parser is part of.
Definition Builder.h:133
Parser & _parser
The front parser.
Definition Builder.h:143
hit::Node & _root
The root node from the Parser.
Definition Builder.h:145
std::unique_ptr< SyntaxTree > _syntax_formatter
Object for holding the syntax parse tree.
Definition Builder.h:148
hit::Node & getRoot()
Definition Parser.C:599

◆ ~Builder()

Moose::Builder::~Builder ( )
virtual

Definition at line 118 of file Builder.C.

118{}

Member Function Documentation

◆ build()

void Moose::Builder::build ( )

Parse an input file (or text string if provided) consisting of hit syntax and setup objects in the MOOSE derived application.

Definition at line 300 of file Builder.C.

301{
302 // Pull in extracted variables from the parser (fparse stuff)
304
305 // There are a few order dependent actions that have to be built first in
306 // order for the parser and application to function properly
307 const auto need_action_syntax_first = [this](const auto & action_name)
308 {
309 const auto syntax = _syntax.getSyntaxByAction(action_name);
310 mooseAssert(syntax.size(), "Empty syntax");
311 std::copy(syntax.begin(), syntax.end(), std::back_inserter(_secs_need_first));
312 };
313
314 // SetupDebugAction: This action can contain an option for monitoring the
315 // parser progress. It must be parsed first to capture all of the parsing
316 // output progress.
317 need_action_syntax_first("SetupDebugAction");
318
319 // GlobalParamsAction: This action is checked during the parameter extraction
320 // routines of all subsequent blocks. It must be parsed early since it must
321 // exist during subsequent parameter extraction.
322 need_action_syntax_first("GlobalParamsAction");
323
324 // DynamicObjectRegistration: This action must be built before any MooseObjectActions
325 // are built. This is because we retrieve valid parameters from the Factory
326 // during parse time. Objects must be registered before validParameters can be retrieved.
327 need_action_syntax_first("DynamicObjectRegistrationAction");
328
329 // Walk all the sections extracting paramters from each into InputParameters objects
330 for (const auto & sec : _secs_need_first)
331 if (auto n = _root.find(sec))
332 walkRaw(n->parent()->fullpath(), n->path(), n);
333
334 // Walk for the remainder
335 _root.walk(this, hit::NodeType::Section);
336
337 // Warn for all deprecated parameters together
338 if (_deprecated_params.size())
339 {
340 std::vector<std::string> messages;
341 for (const auto & key_message_pair : _deprecated_params)
342 messages.push_back(key_message_pair.second);
343 const auto message = MooseUtils::stringJoin(messages, "\n\n");
344
345 moose::internal::mooseDeprecatedStream(Moose::out, false, true, false, message + "\n\n");
346 }
347
348 if (_errors.size())
350}
if(!dmm->_nl) SETERRQ(PETSC_COMM_WORLD
void walkRaw(std::string fullpath, std::string nodepath, hit::Node *n)
Definition Builder.C:186
std::set< std::string > _extracted_vars
The set of all variables extracted from the input file.
Definition Builder.h:151
std::map< std::string, std::string > _deprecated_params
Deprecation warnings (object type/param name) -> (message)
Definition Builder.h:160
std::vector< hit::ErrorMessage > _errors
The errors accumulated during the walk.
Definition Builder.h:157
std::vector< std::string > _secs_need_first
The sections that we need to execute first (read during the final walk)
Definition Builder.h:154
void parseError(std::vector< hit::ErrorMessage > messages) const
Helper for throwing an error with the given messages.
Definition Parser.C:643
const std::set< std::string > & getExtractedVars() const
Definition Parser.h:227
std::vector< std::string > getSyntaxByAction(const std::string &action, const std::string &task="")
Retrieve the syntax associated with the passed in action type string.
Definition Syntax.C:211
std::string stringJoin(const std::vector< std::string > &values, const std::string &separator=" ")
Concatenates value into a single string separated by separator.
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
Find a value in an array.
Definition KokkosUtils.h:40
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, const bool show_trace, Args &&... args)
Definition MooseError.h:252

Referenced by MooseApp::setupOptions().

◆ buildFullTree()

void Moose::Builder::buildFullTree ( const std::string &  search_string)

Use MOOSE Factories to construct a full parse tree for documentation or echoing input.

If the task is nullptr that means we need to figure out which task goes with this syntax for the purpose of building the Moose Object part of the tree. We will figure this out by asking the ActionFactory for the registration info.

We need to see if this action is inherited from MooseObjectAction. If it is, then we will loop over all the Objects in MOOSE's Factory object to print them out if they have associated bases matching the current task.

Now that we know that this is a MooseObjectAction we need to see if it has been restricted in any way by the user.

Definition at line 577 of file Builder.C.

578{
579 std::vector<std::pair<std::string, Syntax::ActionInfo>> all_names;
580
581 for (const auto & iter : _syntax.getAssociatedActions())
582 {
583 Syntax::ActionInfo act_info = iter.second;
589 if (act_info._task == "")
590 act_info._task = _action_factory.getTaskName(act_info._action);
591
592 all_names.push_back(std::pair<std::string, Syntax::ActionInfo>(iter.first, act_info));
593 }
594
595 for (const auto & act_names : all_names)
596 {
597 InputParameters action_obj_params = _action_factory.getValidParams(act_names.second._action);
598 _syntax_formatter->insertNode(
599 act_names.first, act_names.second._action, true, &action_obj_params);
600
601 const std::string & task = act_names.second._task;
602 std::string act_name = act_names.first;
603
609 if (action_obj_params.have_parameter<bool>("isObjectAction") &&
610 action_obj_params.get<bool>("isObjectAction"))
611 {
612 for (const auto & [moose_obj_name, obj] : _factory.registeredObjects())
613 {
614 auto moose_obj_params = obj->buildParameters();
619 const std::vector<std::string> & buildable_types = action_obj_params.getBuildableTypes();
620
621 // See if the current Moose Object syntax belongs under this Action's block
622 if ((buildable_types.empty() || // Not restricted
623 std::find(buildable_types.begin(), buildable_types.end(), moose_obj_name) !=
624 buildable_types.end()) && // Restricted but found
625 moose_obj_params.hasBase() && // Has a registered base
626 _syntax.verifyMooseObjectTask(moose_obj_params.getBase(),
627 task) && // and that base is associated
628 action_obj_params.mooseObjectSyntaxVisibility() // and the Action says it's visible
629 )
630 {
631 std::string name;
632 size_t pos = 0;
633 bool is_action_params = false;
634 if (act_name[act_name.size() - 1] == '*')
635 {
636 pos = act_name.size();
637
638 if (!action_obj_params.collapseSyntaxNesting())
639 name = act_name.substr(0, pos - 1) + moose_obj_name;
640 else
641 {
642 name = act_name.substr(0, pos - 1) + "/<type>/" + moose_obj_name;
643 is_action_params = true;
644 }
645 }
646 else
647 {
648 name = act_name + "/<type>/" + moose_obj_name;
649 }
650
651 moose_obj_params.set<std::string>("type") = moose_obj_name;
652
653 _syntax_formatter->insertNode(name, moose_obj_name, is_action_params, &moose_obj_params);
654 }
655 }
656 }
657 }
658
659 // Do not change to _console, we need this printed to the stdout in all cases
660 Moose::out << _syntax_formatter->print(search_string) << std::flush;
661}
std::string getTaskName(const std::string &action)
InputParameters getValidParams(const std::string &name)
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void collapseSyntaxNesting(bool collapse)
Mutators for controlling whether or not the outermost level of syntax will be collapsed when printed.
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
const std::vector< std::string > & getBuildableTypes() const
Returns the list of buildable types as a std::vector<std::string>
void mooseObjectSyntaxVisibility(bool visibility)
Mutators for controlling whether or not the outermost level of syntax will be collapsed when printed.
bool verifyMooseObjectTask(const std::string &base, const std::string &task) const
Returns a Boolean indicating whether a task is associated with on of the MOOSE pluggable systems (BAS...
Definition Syntax.C:335
std::string name(const ElemQuality q)
std::string _task
Definition Syntax.h:27
std::string _action
Definition Syntax.h:26

Referenced by MooseApp::setupOptions().

◆ buildJsonSyntaxTree()

void Moose::Builder::buildJsonSyntaxTree ( JsonSyntaxTree &  tree) const

Use MOOSE Factories to construct a parameter tree for documentation or echoing input.

If the task is nullptr that means we need to figure out which task goes with this syntax for the purpose of building the Moose Object part of the tree. We will figure this out by asking the ActionFactory for the registration info.

We need to see if this action is inherited from MooseObjectAction. If it is, then we will loop over all the Objects in MOOSE's Factory object to print them out if they have associated bases matching the current task.

Definition at line 417 of file Builder.C.

418{
419 std::vector<std::pair<std::string, Syntax::ActionInfo>> all_names;
420
421 for (const auto & iter : _syntax.getAssociatedTypes())
422 root.addSyntaxType(iter.first, iter.second);
423
424 // Build a list of all the actions appearing in the syntax
425 for (const auto & iter : _syntax.getAssociatedActions())
426 {
427 Syntax::ActionInfo act_info = iter.second;
433 if (act_info._task == "")
434 act_info._task = _action_factory.getTaskName(act_info._action);
435
436 all_names.push_back(std::make_pair(iter.first, act_info));
437 }
438
439 // Add all the actions to the JSON tree, except for ActionComponents (below)
440 for (const auto & act_names : all_names)
441 {
442 const auto & act_info = act_names.second;
443 const std::string & action = act_info._action;
444 const std::string & task = act_info._task;
445 const std::string syntax = act_names.first;
446 InputParameters action_obj_params = _action_factory.getValidParams(action);
447 bool params_added = root.addParameters("",
448 syntax,
449 false,
450 action,
451 true,
452 &action_obj_params,
453 _syntax.getLineInfo(syntax, action, ""),
454 "");
455
456 if (params_added)
457 {
458 auto tasks = _action_factory.getTasksByAction(action);
459 for (auto & t : tasks)
460 {
461 auto info = _action_factory.getLineInfo(action, t);
462 root.addActionTask(syntax, action, t, info);
463 }
464 }
465
471 if (action_obj_params.have_parameter<bool>("isObjectAction") &&
472 action_obj_params.get<bool>("isObjectAction"))
473 {
474 for (auto & [moose_obj_name, obj] : _factory.registeredObjects())
475 {
476 auto moose_obj_params = obj->buildParameters();
477 // Now that we know that this is a MooseObjectAction we need to see if it has been
478 // restricted
479 // in any way by the user.
480 const std::vector<std::string> & buildable_types = action_obj_params.getBuildableTypes();
481
482 // See if the current Moose Object syntax belongs under this Action's block
483 if ((buildable_types.empty() || // Not restricted
484 std::find(buildable_types.begin(), buildable_types.end(), moose_obj_name) !=
485 buildable_types.end()) && // Restricted but found
486 moose_obj_params.hasBase() && // Has a registered base
487 _syntax.verifyMooseObjectTask(moose_obj_params.getBase(),
488 task) && // and that base is associated
489 action_obj_params.mooseObjectSyntaxVisibility() // and the Action says it's visible
490 )
491 {
492 std::string name;
493 size_t pos = 0;
494 bool is_action_params = false;
495 bool is_type = false;
496 if (syntax[syntax.size() - 1] == '*')
497 {
498 pos = syntax.size();
499
500 if (!action_obj_params.collapseSyntaxNesting())
501 name = syntax.substr(0, pos - 1) + moose_obj_name;
502 else
503 {
504 name = syntax.substr(0, pos - 1) + "/<type>/" + moose_obj_name;
505 is_action_params = true;
506 }
507 }
508 else
509 {
510 name = syntax + "/<type>/" + moose_obj_name;
511 is_type = true;
512 }
513 moose_obj_params.set<std::string>("type") = moose_obj_name;
514
515 auto lineinfo = _factory.getLineInfo(moose_obj_name);
516 std::string classname = _factory.associatedClassName(moose_obj_name);
517 root.addParameters(syntax,
518 name,
519 is_type,
520 moose_obj_name,
521 is_action_params,
522 &moose_obj_params,
523 lineinfo,
524 classname);
525 }
526 }
527
528 // Same thing for ActionComponents, which, while they are not MooseObjects, should behave
529 // similarly syntax-wise
530 if (syntax != "ActionComponents/*")
531 continue;
532
533 auto iters = _action_factory.getActionsByTask("list_component");
534
535 for (auto it = iters.first; it != iters.second; ++it)
536 {
537 // Get the name and parameters
538 const auto component_name = it->second;
539 auto component_params = _action_factory.getValidParams(component_name);
540
541 // We currently do not have build-type restrictions on this action that adds
542 // action-components
543
544 // See if the current Moose Object syntax belongs under this Action's block
545 if (action_obj_params.mooseObjectSyntaxVisibility() // and the Action says it's visible
546 )
547 {
548 // The logic for Components is a little simpler here for now because syntax like
549 // Executioner/TimeIntegrator/type= do not exist for components
550 std::string name;
551 if (syntax[syntax.size() - 1] == '*')
552 {
553 size_t pos = syntax.size();
554 name = syntax.substr(0, pos - 1) + component_name;
555 }
556 component_params.set<std::string>("type") = component_name;
557
558 auto lineinfo = _action_factory.getLineInfo(component_name, "list_component");
559 // We add the parameters as for an object, because we want to fit them to be
560 // added to json["AddActionComponentAction"]["subblock_types"]
561 root.addParameters(syntax,
562 /*syntax_path*/ name,
563 /*is_type*/ false,
564 "AddActionComponentAction",
565 /*is_action=*/false,
566 &component_params,
567 lineinfo,
568 component_name);
569 }
570 }
571 }
572 }
573 root.addGlobal();
574}
std::set< std::string > getTasksByAction(const std::string &action) const
std::pair< std::multimap< std::string, std::string >::const_iterator, std::multimap< std::string, std::string >::const_iterator > getActionsByTask(const std::string &task) const
Returns begin and end iterators in a multimap from tasks to actions names.
FileLineInfo getLineInfo(const std::string &name, const std::string &task) const
Gets file and line information where an action was registered.
std::string associatedClassName(const std::string &name) const
Get the associated class name for an object name.
Definition Factory.C:296
FileLineInfo getLineInfo(const std::string &name) const
Gets file and line information where an object was initially registered.
Definition Factory.C:284
FileLineInfo getLineInfo(const std::string &syntax, const std::string &action, const std::string &task) const
Gets the file and line where the syntax/action/task combo was registered.
Definition Syntax.C:381
MPI_Info info

Referenced by MooseApp::setupOptions().

◆ errorCheck()

void Moose::Builder::errorCheck ( const libMesh::Parallel::Communicator &  comm,
bool  warn_unused,
bool  err_unused 
)

Definition at line 358 of file Builder.C.

359{
360 // Nothing to do here
361 if (!warn_unused && !err_unused)
362 return;
363
364 std::vector<hit::ErrorMessage> messages;
365
367 {
368 UnusedWalker uw(_extracted_vars, *this);
369 _parser.getCommandLineRoot().walk(&uw);
370 Parser::appendErrorMessages(messages, uw.errors);
371 }
372
373 {
374 UnusedWalker uw(_extracted_vars, *this);
375 _root.walk(&uw);
376 Parser::appendErrorMessages(messages, uw.errors);
377 }
378
379 for (const auto & arg : _app.commandLine()->unusedHitParams(comm))
380 messages.emplace_back("unused command line parameter '" + arg + "'");
381
382 if (messages.size())
383 {
384 const auto message = _parser.joinErrorMessages(messages);
385 if (warn_unused)
386 mooseUnused(message);
387 if (err_unused)
388 {
390 _parser.parseError(messages);
391 else
393 message +
394 "\n\nAppend --allow-unused (or -w) on the command line to ignore unused parameters.");
395 }
396 }
397}
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311
void mooseUnused(Args &&... args)
Warning message used to notify the users of unused parts of their input files Really used internally ...
Definition MooseError.h:354
static void appendErrorMessages(std::vector< hit::ErrorMessage > &to, const std::vector< hit::ErrorMessage > &from)
Helper for accumulating errors from a walker into an accumulation of errors.
Definition Parser.C:621
const hit::Node & getCommandLineRoot() const
Definition Parser.C:607
bool getThrowOnError() const
Definition Parser.h:220
const hit::Node * queryCommandLineRoot() const
Definition Parser.h:159
static std::string joinErrorMessages(const std::vector< hit::ErrorMessage > &error_messages)
Helper for combining error messages into a single, newline separated message.
Definition Parser.C:634

Referenced by MeshOnlyAction::act(), and MooseApp::errorCheck().

◆ extractParams() [1/2]

void Moose::Builder::extractParams ( const hit::Node *const  section_node,
InputParameters &  p 
)

Attempt to extract values from input starting with the section in input in section_node based on the contents of the passed InputParameters p.

If section_node is not provided, only the global parameters will be checked

Definition at line 664 of file Builder.C.

665{
666 if (section_node)
667 mooseAssert(section_node->type() == hit::NodeType::Section, "Node type should be a section");
668
669 for (const auto & [name, par_unique_ptr] : p)
670 {
671 if (p.shouldIgnore(name))
672 continue;
673
674 // Find where this parameter is set. A parameter can be provided using its
675 // blessed name or, for a renamed/deprecated parameter, one of its aliased names (see
676 // paramAliases). We scan all of the aliases in both the given section and [GlobalParams]
677 // so that (1) a value set locally always takes precedence over one set in [GlobalParams],
678 // even when the two are set using different aliases, and (2) providing more than one alias
679 // within the same scope, e.g. both a deprecated parameter and its replacement, is flagged
680 // as a conflict rather than being silently resolved to one of them (see #32350).
681 const hit::Node * local_node = nullptr;
682 std::string local_name;
683 const hit::Node * global_node = nullptr;
684 std::string global_name;
685
686 // Records a same-scope conflict between two aliases that refer to the same parameter
687 const std::string & blessed_name = name;
688 auto add_conflict_error = [this, &blessed_name](const std::string & first,
689 const std::string & second,
690 const auto * node)
691 {
692 _errors.emplace_back("The parameter '" + blessed_name +
693 "' was provided more than once using the aliased names '" + first +
694 "' and '" + second +
695 "', which refer to the same parameter. Please provide it only once, "
696 "using the name '" +
697 blessed_name + "'.",
698 node);
699 };
700
701 for (const auto & param_name : p.paramAliases(name))
702 {
703 // Check for the parameter under the given section, if a section node was provided
704 if (section_node)
705 if (const auto section_param_node = section_node->find(param_name);
706 section_param_node && section_param_node->type() == hit::NodeType::Field &&
707 section_param_node->parent() == section_node)
708 {
709 if (local_node)
710 add_conflict_error(local_name, param_name, section_param_node);
711 else
712 {
713 local_node = section_param_node;
714 local_name = param_name;
715 }
716 }
717
718 // Check for the parameter in [GlobalParams]
720 if (const auto g_node = queryGlobalParamsNode()->find(param_name);
721 g_node && g_node->type() == hit::NodeType::Field &&
722 g_node->parent() == queryGlobalParamsNode())
723 {
724 mooseAssert(isGlobal(*g_node), "Could not detect global-ness");
725 if (global_node)
726 add_conflict_error(global_name, param_name, g_node);
727 else
728 {
729 global_node = g_node;
730 global_name = param_name;
731 }
732 }
733 }
734
735 // A value set locally takes precedence over one set in [GlobalParams]
736 const hit::Node * const param_node = local_node ? local_node : global_node;
737 const std::string & param_name = local_node ? local_name : global_name;
738
739 // Found it
740 if (param_node)
741 {
742 const auto fullpath = param_node->fullpath();
743 p.setHitNode(param_name, *param_node, {});
744 p.set_attributes(param_name, false);
745 _extracted_vars.insert(fullpath);
746
747 const auto global = isGlobal(*param_node);
748
749 // Check for deprecated parameters if the parameter is not a global param
750 if (!global)
751 if (const auto deprecated_message = p.queryDeprecatedParamMessage(param_name))
752 {
753 std::string key = "";
754 if (const auto object_type_ptr = p.queryObjectType())
755 key += *object_type_ptr + "_";
756 key += param_name;
757 _deprecated_params.emplace(key, *deprecated_message);
758 }
759
760 // Private parameter, don't set
761 if (p.isPrivate(param_name))
762 {
763 // Error if it isn't global, just once
764 if (!global && std::find_if(_errors.begin(),
765 _errors.end(),
766 [&param_node](const auto & err)
767 { return err.node == param_node; }) == _errors.end())
768 _errors.emplace_back("parameter '" + fullpath + "' is private and cannot be set",
769 param_node);
770 }
771 else
772 {
773 // Set the value, capturing errors
774 const auto param_field = dynamic_cast<const hit::Field *>(param_node);
775 mooseAssert(param_field, "Is not a field");
776 bool set_param = false;
777 try
778 {
779 ParameterRegistry::get().set(*par_unique_ptr, *param_field);
780 set_param = true;
781 }
782 catch (hit::Error & e)
783 {
784 _errors.emplace_back(e.message, param_node);
785 }
786 catch (std::exception & e)
787 {
788 _errors.emplace_back(e.what(), param_node);
789 }
790
791 // Only perform the extra checks if the value was successfully set
792 if (set_param)
793 {
794 // Special setup for vector<VariableName>
795 if (auto cast_par = dynamic_cast<InputParameters::Parameter<std::vector<VariableName>> *>(
796 par_unique_ptr.get()))
797 if (const auto error = p.setupVariableNames(cast_par->set(), *param_node, {}))
798 _errors.emplace_back(*error, param_node);
799
800 // Possibly perform a range check if this parameter has one
801 if (p.isRangeChecked(param_node->path()))
802 if (const auto error = p.parameterRangeCheck(
803 *par_unique_ptr, param_node->fullpath(), param_node->path(), true))
804 _errors.emplace_back(error->second, param_node);
805 }
806 }
807 }
808 // Special casing when the parameter was not found
809 else
810 {
811 // In the case where we have OutFileName but it wasn't actually found in the input filename,
812 // we will populate it with the actual parsed filename which is available here in the
813 // parser.
814 if (auto out_par_ptr =
815 dynamic_cast<InputParameters::Parameter<OutFileBase> *>(par_unique_ptr.get()))
816 {
817 const auto input_file_name = getPrimaryFileName();
818 mooseAssert(input_file_name.size(), "Input Filename is empty");
819 const auto pos = input_file_name.find_last_of('.');
820 mooseAssert(pos != std::string::npos, "Unable to determine suffix of input file name");
821 out_par_ptr->set() = input_file_name.substr(0, pos) + "_out";
822 p.set_attributes(name, false);
823 }
824 }
825 }
826
827 // See if there are any auto build vectors that need to be created
828 for (const auto & [param_name, base_name_num_repeat_pair] : p.getAutoBuildVectors())
829 {
830 const auto & [base_name, num_repeat] = base_name_num_repeat_pair;
831 // We'll autogenerate values iff the requested vector is not valid but both the base and
832 // number are valid
833 if (!p.isParamValid(param_name) && p.isParamValid(base_name) && p.isParamValid(num_repeat))
834 {
835 const auto vec_size = p.get<unsigned int>(num_repeat);
836 const std::string & name = p.get<std::string>(base_name);
837
838 std::vector<VariableName> variable_names(vec_size);
839 for (const auto i : index_range(variable_names))
840 {
841 std::ostringstream oss;
842 oss << name << i;
843 variable_names[i] = oss.str();
844 }
845
846 // Finally set the autogenerated vector into the InputParameters object
847 p.set<std::vector<VariableName>>(param_name) = variable_names;
848 }
849 }
850}
std::optional< std::string > setupVariableNames(std::vector< VariableName > &names, const hit::Node &node, const Moose::PassKey< Moose::Builder >)
Entrypoint for the Builder to setup a std::vector<VariableName> parameter, which will setup the defau...
std::optional< std::string > queryDeprecatedParamMessage(const std::string &name) const
bool isPrivate(const std::string &name) const
Returns a Boolean indicating whether the specified parameter is private or not.
std::optional< std::pair< bool, std::string > > parameterRangeCheck(const Parameters::Value &value, const std::string &long_name, const std::string &short_name, const bool include_param_path)
Performs a range check on the parameter (which must have a range check)
void setHitNode(const std::string &param, const hit::Node &node, const SetParamHitNodeKey)
Sets the hit node associated with the parameter param to node.
virtual void set_attributes(const std::string &name, bool inserted_only) override
Override from libMesh to set user-defined attributes on our parameter.
bool shouldIgnore(const std::string &name)
Whether to ignore the value of an input parameter set in the input file or from the command line.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
const std::string * queryObjectType() const
bool isRangeChecked(const std::string &param_name) const
Return whether a parameter has a range check.
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another,...
std::string getPrimaryFileName(bool stripLeadingPath=true) const
Return the primary (first) filename that was parsed.
Definition Builder.C:179
const hit::Node * queryGlobalParamsNode() const
Get the [GlobalParams] section node if it exists.
Definition Builder.C:867
bool isGlobal(const hit::Node &node) const
Definition Builder.C:860
static ParameterRegistry & get()
Get the singleton registry.
void set(libMesh::Parameters::Value &value, const hit::Field &field) const
Sets a parameter value given a hit field.
auto index_range(const T &sizable)

Referenced by CreateProblemDefaultAction::act(), SetupMeshAction::act(), extractParams(), and walkRaw().

◆ extractParams() [2/2]

void Moose::Builder::extractParams ( const std::string &  prefix,
InputParameters &  p 
)

Attempt to extract values from input starting with the section in input defined by the fullpath prefix based on the contents of the passed InputParameters p.

Definition at line 853 of file Builder.C.

854{
855 const auto node = _root.find(prefix);
856 extractParams((node && node->type() == hit::NodeType::Section) ? node : nullptr, p);
857}
void extractParams(const hit::Node *const section_node, InputParameters &p)
Attempt to extract values from input starting with the section in input in section_node based on the ...
Definition Builder.C:664

◆ getPrimaryFileName()

std::string Moose::Builder::getPrimaryFileName ( bool  stripLeadingPath = true) const

Return the primary (first) filename that was parsed.

Definition at line 179 of file Builder.C.

180{
181 const auto path = _parser.getLastInputFilePath();
182 return (strip_leading_path ? path.filename() : std::filesystem::absolute(path)).string();
183}
std::filesystem::path getLastInputFilePath() const
Definition Parser.h:206

Referenced by MeshOnlyAction::act(), extractParams(), and MooseApp::getFileName().

◆ initSyntaxFormatter()

void Moose::Builder::initSyntaxFormatter ( SyntaxFormatterType  type,
bool  dump_mode 
)

Creates a syntax formatter for printing.

Definition at line 400 of file Builder.C.

401{
402 switch (type)
403 {
404 case INPUT_FILE:
405 _syntax_formatter = std::make_unique<InputFileFormatter>(dump_mode);
406 break;
407 case YAML:
408 _syntax_formatter = std::make_unique<YAMLFormatter>(dump_mode);
409 break;
410 default:
411 mooseError("Unrecognized Syntax Formatter requested");
412 break;
413 }
414}

Referenced by MooseApp::setupOptions().

◆ isGlobal()

bool Moose::Builder::isGlobal ( const hit::Node &  node) const
private
Returns
Whether or not the given node node exists within the [GlobalParams] block

Definition at line 860 of file Builder.C.

861{
862 const auto global_params_node = queryGlobalParamsNode();
863 return global_params_node && node.parent() == global_params_node;
864}

Referenced by extractParams().

◆ listValidParams()

std::vector< std::string > Moose::Builder::listValidParams ( std::string &  section_name)

Definition at line 142 of file Builder.C.

143{
144 bool dummy;
145 std::string registered_identifier = _syntax.isAssociated(section_name, &dummy);
146 auto iters = _syntax.getActions(registered_identifier);
147
148 std::vector<std::string> paramlist;
149 for (auto it = iters.first; it != iters.second; ++it)
150 {
151 auto params = _action_factory.getValidParams(it->second._action);
152 for (const auto & it : params)
153 paramlist.push_back(it.first);
154 }
155 return paramlist;
156}
std::pair< std::multimap< std::string, ActionInfo >::const_iterator, std::multimap< std::string, ActionInfo >::const_iterator > getActions(const std::string &syntax) const
Returns a pair of multimap iterators to all the ActionInfo objects associated with a given piece of s...
Definition Syntax.C:329
std::string isAssociated(const std::string &real_id, bool *is_parent, const std::map< std::string, std::set< std::string > > &alt_map={}) const
Method for determining whether a piece of syntax is associated with an Action an optional syntax map ...
Definition Syntax.C:252

Referenced by Moose::UnusedWalker::walk().

◆ queryGlobalParamsNode()

const hit::Node * Moose::Builder::queryGlobalParamsNode ( ) const
private

Get the [GlobalParams] section node if it exists.

We need to separate this so that we can call extractParams() before calling build()

Definition at line 867 of file Builder.C.

868{
870 {
871 const auto syntax = _syntax.getSyntaxByAction("GlobalParamsAction");
872 mooseAssert(syntax.size() == 1, "Unexpected GlobalParamsAction syntax size");
873 _global_params_node = _root.find(syntax.front());
874 }
875 return *_global_params_node;
876}
std::optional< const hit::Node * > _global_params_node
The hit Node for the [GlobalParams] block, if any If set (could be null), it means we have searched f...
Definition Builder.h:164

Referenced by extractParams(), and isGlobal().

◆ validParams()

InputParameters Moose::Builder::validParams ( )
static

Parameters that are processed directly by the Parser and are valid anywhere in the input.

Add the "active" and "inactive" parameters so that all blocks in the input file can selectively create lists of active/inactive sub-blocks.

Definition at line 121 of file Builder.C.

122{
124
129 params.addParam<std::vector<std::string>>(
130 "active",
131 std::vector<std::string>({"__all__"}),
132 "If specified only the blocks named will be visited and made active");
133 params.addParam<std::vector<std::string>>(
134 "inactive",
135 std::vector<std::string>(),
136 "If specified blocks matching these identifiers will be skipped.");
137
138 return params;
139}
InputParameters emptyInputParameters()
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object.

Referenced by JsonSyntaxTree::addGlobal(), MooseServer::getAllValidParameters(), and Action::validParams().

◆ walk()

void Moose::Builder::walk ( const std::string &  fullpath,
const std::string &  nodepath,
hit::Node *  n 
)

Definition at line 289 of file Builder.C.

290{
291 // skip sections that were manually processed first.
292 if (std::find(_secs_need_first.begin(), _secs_need_first.end(), nodepath) !=
293 _secs_need_first.end())
294 return;
295
296 walkRaw(fullpath, nodepath, n);
297}

◆ walkRaw()

void Moose::Builder::walkRaw ( std::string  fullpath,
std::string  nodepath,
hit::Node *  n 
)
private

Definition at line 186 of file Builder.C.

187{
188 InputParameters active_list_params = Action::validParams();
190
191 const std::string section_name = n->fullpath();
192 const std::string curr_identifier = n->fullpath();
193
194 // Before we retrieve any actions or build any objects, make sure that the section they are in
195 // is active
196 if (!isSectionActive(*n))
197 return;
198
199 // Extract the block parameters before constructing the action
200 // There may be more than one Action registered for a given section in which case we need to
201 // build them all
202 bool is_parent;
203 std::string registered_identifier = _syntax.isAssociated(section_name, &is_parent);
204
205 // Make sure at least one action is associated with the current identifier
206 if (const auto [begin, end] = _syntax.getActions(registered_identifier); begin == end)
207 {
208 _errors.emplace_back(
209 "section '[" + curr_identifier +
210 "]' does not have an associated Action; you likely misspelled the Action/section name "
211 "or the app you are running does not support this Action/syntax",
212 n);
213 return;
214 }
215
216 // The DynamicObjecRegistrationAction changes the action multimap and would invalidate the
217 // iterators returned by _syntax.getActions, that's why we have to loop in this awkward way.
218 std::set<const Syntax::ActionInfo *> processed_actions;
219 while (true)
220 {
221 // search for an unprocessed action
222 auto [begin, end] = _syntax.getActions(registered_identifier);
223 auto it = begin;
224 for (; it != end && processed_actions.count(&it->second); ++it)
225 ;
226
227 // no more unprocessed actions
228 if (it == end)
229 break;
230
231 // mark action as processed
232 processed_actions.insert(&it->second);
233
234 if (is_parent)
235 continue;
236 if (_syntax.isDeprecatedSyntax(registered_identifier))
238 hit::errormsg(n, _syntax.deprecatedActionSyntaxMessage(registered_identifier)));
239
240 params = _action_factory.getValidParams(it->second._action);
241 params.set<ActionWarehouse *>("awh") = &_action_wh;
242 params.setHitNode(*n, {});
243
244 extractParams(n, params);
245
246 // Add the parsed syntax to the parameters object for consumption by the Action
247 params.set<std::string>("task") = it->second._task;
248 params.set<std::string>("registered_identifier") = registered_identifier;
249
250 if (!(params.have_parameter<bool>("isObjectAction") && params.get<bool>("isObjectAction")))
251 params.set<std::vector<std::string>>("control_tags")
252 .push_back(MooseUtils::baseName(curr_identifier));
253
254 // Create the Action
255 std::shared_ptr<Action> action_obj =
256 _action_factory.create(it->second._action, curr_identifier, params);
257
258 {
259 // extract the MooseObject params if necessary
260 std::shared_ptr<MooseObjectAction> object_action =
261 std::dynamic_pointer_cast<MooseObjectAction>(action_obj);
262 if (object_action)
263 {
264 auto & object_params = object_action->getObjectParams();
265 object_params.setHitNode(*n, {});
266 extractParams(n, object_params);
267 object_params.set<std::vector<std::string>>("control_tags")
268 .push_back(MooseUtils::baseName(curr_identifier));
269 }
270 // extract the Component params if necessary
271 std::shared_ptr<AddActionComponentAction> component_action =
272 std::dynamic_pointer_cast<AddActionComponentAction>(action_obj);
273 if (component_action)
274 {
275 auto & component_params = component_action->getComponentParams();
276 component_params.setHitNode(*n, {});
277 extractParams(n, component_params);
278 component_params.set<std::vector<std::string>>("control_tags")
279 .push_back(MooseUtils::baseName(curr_identifier));
280 }
281 }
282
283 // add it to the warehouse
284 _action_wh.addActionBlock(action_obj);
285 }
286}
void mooseDeprecated(Args &&... args)
Emit a deprecated code/feature message with the given stringified, concatenated args.
Definition MooseError.h:363
std::shared_ptr< Action > create(const std::string &action, const std::string &action_name, InputParameters &parameters)
Storage for action instances.
void addActionBlock(std::shared_ptr< Action > blk)
This method add an Action instance to the warehouse.
static InputParameters validParams()
Definition Action.C:26
static InputParameters validParams()
Definition EmptyAction.C:19
bool isDeprecatedSyntax(const std::string &syntax) const
Returns a Boolean indicating whether the syntax has been deprecated through a call to deprecateAction...
Definition Syntax.C:205
std::string deprecatedActionSyntaxMessage(const std::string syntax)
Returns the deprecation message for a given syntax that has been deprecated by deprecateActionSyntax.
Definition Syntax.C:194
std::string baseName(const std::string &name)
Definition MooseUtils.C:681
bool isSectionActive(const hit::Node &node)
Definition Builder.C:45

Referenced by build(), and walk().

Member Data Documentation

◆ _action_factory

ActionFactory& Moose::Builder::_action_factory
private

The Factory that builds actions.

Definition at line 139 of file Builder.h.

Referenced by buildFullTree(), buildJsonSyntaxTree(), listValidParams(), and walkRaw().

◆ _action_wh

ActionWarehouse& Moose::Builder::_action_wh
private

Action warehouse that will be filled by actions.

Definition at line 137 of file Builder.h.

Referenced by walkRaw().

◆ _app

MooseApp& Moose::Builder::_app
private

The MooseApp this Parser is part of.

Definition at line 133 of file Builder.h.

Referenced by errorCheck().

◆ _console

const ConsoleStream ConsoleStreamInterface::_console
inherited

An instance of helper class to write streams to the Console objects.

Definition at line 31 of file ConsoleStreamInterface.h.

Referenced by IterationAdaptiveDT::acceptStep(), MaterialOutputAction::act(), MeshOnlyAction::act(), SetupDebugAction::act(), FEProblemBase::adaptMesh(), Adaptivity::adaptMesh(), PerfGraph::addToExecutionList(), SimplePredictor::apply(), SystemBase::applyScalingFactors(), MultiApp::backup(), FEProblemBase::backupMultiApps(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), DefaultSteadyStateConvergence::checkConvergence(), MeshDiagnosticsGenerator::checkElementOverlap(), MeshDiagnosticsGenerator::checkElementTypes(), MeshDiagnosticsGenerator::checkElementVolumes(), FEProblemBase::checkExceptionAndStopSolve(), SolverSystem::checkInvalidSolution(), MeshDiagnosticsGenerator::checkLocalJacobians(), MeshDiagnosticsGenerator::checkNonConformalMesh(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonConformingFaces(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkNonPlanarSides(), MeshDiagnosticsGenerator::checkPolygons(), FEProblemBase::checkProblemIntegrity(), ReferenceResidualConvergence::checkResidualConvergence(), MeshDiagnosticsGenerator::checkSidesetsOrientation(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), CoarsenSurfaceMeshAlongSidesetGenerator::coarsenAlongSidesets(), IterationAdaptiveDT::computeAdaptiveDT(), TransientBase::computeConstrainedDT(), DefaultMultiAppFixedPointConvergence::computeCustomConvergencePostprocessor(), NonlinearSystemBase::computeDamping(), FixedPointIterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeFailedDT(), IterationAdaptiveDT::computeInitialDT(), IterationAdaptiveDT::computeInterpolationDT(), FEProblemBase::computeLinearSystemTags(), LinearSystem::computeLinearSystemTags(), NonlinearSystemBase::computeScaling(), Problem::console(), TimeStepper::constrainStep(), IterationAdaptiveDT::constrainStep(), MultiApp::createApp(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), Eigenvalue::execute(), SteadyBase::execute(), MFEMSteady::execute(), MessageFromInput::execute(), ActionWarehouse::executeActionsWithAction(), ActionWarehouse::executeAllActions(), MeshGeneratorSystem::executeMeshGenerators(), SidesetAroundSubdomainUpdater::finalize(), ElementQualityChecker::finalize(), FEProblemBase::finishMultiAppStep(), MeshRepairGenerator::fixOverlappingNodes(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), CoarsenBlockGenerator::generate(), CoarsenSurfaceMeshAlongSidesetGenerator::generate(), OrientSurfaceMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), MeshGenerator::generateInternal(), VariableCondensationPreconditioner::getDofToCondense(), InversePowerMethod::init(), NonlinearEigen::init(), FEProblemBase::initialAdaptMesh(), DefaultMultiAppFixedPointConvergence::initialize(), SubProblem::initialSetup(), EigenExecutionerBase::inversePowerIteration(), FEProblemBase::joinAndFinalize(), TransientBase::keepGoing(), IterationAdaptiveDT::limitDTByFunction(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::logAdd(), EigenExecutionerBase::makeBXConsistent(), Console::meshChanged(), SurfaceDelaunayGeneratorBase::meshNormalDeviation2D(), MooseBase::mooseDeprecated(), MooseBase::mooseDeprecatedNoTrace(), MooseBase::mooseInfo(), MooseBase::mooseWarning(), MooseBase::mooseWarningNonPrefixed(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), Console::output(), DOFMapOutput::output(), MaterialPropertyDebugOutput::output(), PerfGraphOutput::output(), ReporterDebugOutput::output(), SolutionInvalidityOutput::output(), VariableResidualNormsDebugOutput::output(), ControlOutput::outputActiveObjects(), ControlOutput::outputChangedControls(), ControlOutput::outputControls(), Console::outputInput(), WebServerControl::outputMessage(), Console::outputPostprocessors(), PseudoTimestep::outputPseudoTimestep(), Console::outputReporters(), DefaultMultiAppFixedPointConvergence::outputResidualNorm(), Console::outputScalarVariables(), Console::outputSystemInformation(), FEProblemBase::possiblyRebuildGeomSearchPatches(), EigenExecutionerBase::postExecute(), AB2PredictorCorrector::postSolve(), ActionWarehouse::printActionDependencySets(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), SolutionInvalidity::printDebug(), EigenExecutionerBase::printEigenvalue(), PicardSolve::printFixedPointConvergenceHistory(), SecantSolve::printFixedPointConvergenceHistory(), SteffensenSolve::printFixedPointConvergenceHistory(), FixedPointSolve::printFixedPointConvergenceReason(), PerfGraphLivePrint::printLiveMessage(), MaterialPropertyDebugOutput::printMaterialMap(), PerfGraphLivePrint::printStats(), NEML2Action::printSummary(), AutomaticMortarGeneration::projectPrimaryNodesSinglePair(), AutomaticMortarGeneration::projectSecondaryNodesSinglePair(), CoarsenBlockGenerator::recursiveCoarsen(), SolutionTimeAdaptiveDT::rejectStep(), MultiApp::restore(), FEProblemBase::restoreMultiApps(), FEProblemBase::restoreSolutions(), NonlinearSystemBase::setInitialSolution(), MooseApp::setupOptions(), Checkpoint::shouldOutput(), SubProblem::showFunctorRequestors(), SubProblem::showFunctors(), FullSolveMultiApp::showStatusMessage(), FEProblemSolve::solve(), FixedPointSolve::solve(), LinearSystem::solve(), NonlinearSystem::solve(), AStableDirk4::solve(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), ImplicitMidpoint::solve(), LStableDirk2::solve(), LStableDirk3::solve(), LStableDirk4::solve(), EigenProblem::solve(), FixedPointSolve::solveStep(), TransientMultiApp::solveStep(), MeshRepairGenerator::splitNonConvexPolygons(), PerfGraphLivePrint::start(), WebServerControl::startServer(), AB2PredictorCorrector::step(), NonlinearEigen::takeStep(), TransientBase::takeStep(), MFEMTransient::takeStep(), TerminateChainControl::terminate(), SubProblem::timestepSetup(), FEProblemBase::updateMeshXFEM(), Convergence::verboseOutput(), Console::writeTimestepInformation(), Console::writeVariableNorms(), and FEProblemBase::~FEProblemBase().

◆ _deprecated_params

std::map<std::string, std::string> Moose::Builder::_deprecated_params
private

Deprecation warnings (object type/param name) -> (message)

Definition at line 160 of file Builder.h.

Referenced by build(), and extractParams().

◆ _errors

std::vector<hit::ErrorMessage> Moose::Builder::_errors
private

The errors accumulated during the walk.

Definition at line 157 of file Builder.h.

Referenced by build(), extractParams(), and walkRaw().

◆ _extracted_vars

std::set<std::string> Moose::Builder::_extracted_vars
private

The set of all variables extracted from the input file.

Definition at line 151 of file Builder.h.

Referenced by build(), errorCheck(), and extractParams().

◆ _factory

Factory& Moose::Builder::_factory
private

The Factory associated with that MooseApp.

Definition at line 135 of file Builder.h.

Referenced by buildFullTree(), and buildJsonSyntaxTree().

◆ _global_params_node

std::optional<const hit::Node *> Moose::Builder::_global_params_node
mutableprivate

The hit Node for the [GlobalParams] block, if any If set (could be null), it means we have searched for it.

Definition at line 164 of file Builder.h.

Referenced by queryGlobalParamsNode().

◆ _parser

Parser& Moose::Builder::_parser
private

The front parser.

Definition at line 143 of file Builder.h.

Referenced by build(), errorCheck(), and getPrimaryFileName().

◆ _root

hit::Node& Moose::Builder::_root
private

The root node from the Parser.

Definition at line 145 of file Builder.h.

Referenced by build(), errorCheck(), extractParams(), and queryGlobalParamsNode().

◆ _secs_need_first

std::vector<std::string> Moose::Builder::_secs_need_first
private

The sections that we need to execute first (read during the final walk)

Definition at line 154 of file Builder.h.

Referenced by build(), and walk().

◆ _syntax

Syntax& Moose::Builder::_syntax
private

Reference to an object that defines input file syntax.

Definition at line 141 of file Builder.h.

Referenced by build(), buildFullTree(), buildJsonSyntaxTree(), listValidParams(), queryGlobalParamsNode(), and walkRaw().

◆ _syntax_formatter

std::unique_ptr<SyntaxTree> Moose::Builder::_syntax_formatter
private

Object for holding the syntax parse tree.

Definition at line 148 of file Builder.h.

Referenced by buildFullTree(), and initSyntaxFormatter().


The documentation for this class was generated from the following files: