LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::anonymous_namespace{expression_analysis.cpp} 命名空间参考

类

class  AllNameCollector
class  FreeSubstitution
class  FreeVariableCollector
class  FreeVariableFinder

函数

std::set< std::string > all_names (const detail::SymbolicNodePtr &expression, detail::RewriteBudget *budget=nullptr)
std::string fresh_name (const std::string &base, std::set< std::string > &occupied)

函数说明

◆ all_names()

std::set< std::string > LMCAS::anonymous_namespace{expression_analysis.cpp}::all_names ( const detail::SymbolicNodePtr & expression,
detail::RewriteBudget * budget = nullptr )

在文件 expression_analysis.cpp 第 118 行定义.

119 {
120 AllNameCollector collector(budget);
121 if (expression) expression->accept(collector);
122 return std::move(collector.names);
123}

引用了 LMCAS::SymbolicNode::accept(), all_names() , 以及 LMCAS::anonymous_namespace{expression_analysis.cpp}::AllNameCollector::names.

被这些函数引用 all_names().

函数调用图:
这是这个函数的调用关系图:

◆ fresh_name()

std::string LMCAS::anonymous_namespace{expression_analysis.cpp}::fresh_name ( const std::string & base,
std::set< std::string > & occupied )

在文件 expression_analysis.cpp 第 125 行定义.

125 {
126 for (std::size_t suffix = 1;; ++suffix) {
127 auto candidate = base + "_" + std::to_string(suffix);
128 if (occupied.insert(candidate).second) return candidate;
129 }
130}

引用了 fresh_name().

被这些函数引用 fresh_name() , 以及 LMCAS::anonymous_namespace{expression_analysis.cpp}::FreeSubstitution::rewrite_scoped().

函数调用图:
这是这个函数的调用关系图: