YSTest: NPL::A1::REPLContext类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | Public 类型 | Public 成员函数 | 静态 Public 成员函数 | Public 属性 | Private 成员函数 | 相关函数 | 所有成员列表
NPL::A1::REPLContext类 参考

`#include <NPLA1.h>`

NPL::A1::REPLContext 的协作图:
[图例]

## 类

struct | LeafConverter

## Public 类型

enum | LoadOption { Contextual, WithSourceLocation, NoSourceInformation }
| 代码加载选项。 更多...
template<LoadOption _vOpt = Contextual>
using | LoadOptionTag = std::integral_constant< LoadOption, _vOpt >
| 代码加载选项标签类型。 更多...
using | Loader = function< TermNode(REPLContext &, ContextNode &, string)>
| 加载器。 更多...

## Public 成员函数

| REPLContext (pmr::memory_resource &=NPL::Deref(pmr::new_delete_resource()))
| 构造：使用默认的解释、指定的存储资源和默认的叶节点词素转换器。 更多...
| REPLContext (Tokenizer, SourcedTokenizer, pmr::memory_resource &=NPL::Deref(pmr::new_delete_resource()))
| 构造：使用默认的解释、指定的存储资源和叶节点词素转换器。 更多...
YB_STATELESS bool | IsAsynchronous () const ynothrow
| 判断当前实现是否为异步实现。 更多...
template<typename... _tParams>
void | LoadFrom (_tParams &&... args)
| 加载：从指定参数指定的来源读取并翻译源代码。 更多...
template<typename... _tParams>
TermNode | Perform (_tParams &&... args)
| 执行循环：从指定参数指定的来源读取并翻译源代码，并返回处理结果。 更多...
YB_ATTR_nodiscard | PDefH (TermNode, Prepare, TermNode &&term) const ImplRet(Preprocess(term)
| 准备规约项：分析输入并标记记号节点和预处理。 更多...
YB_ATTR_nodiscard | std::move (term)) template< typename... _tParams > YB_ATTR_nodiscard TermNode Prepare(_tParams &&... args) const
template<class _type >
YB_ATTR_nodiscard TermNode | ReadFrom (_type &&input)
| 读取：从指定参数指定的来源输入源代码并准备规约项。 更多...
template<class _type >
YB_ATTR_nodiscard TermNode | ReadFrom (_type &&input, ReaderState &rs)
template<class _type >
YB_ATTR_nodiscard TermNode | ReadFrom (_type &&input, ContextNode &ctx) const
template<class _type >
YB_ATTR_nodiscard TermNode | ReadFrom (_type &&input, ReaderState &rs, ContextNode &ctx) const
template<LoadOption _vOpt, class _type >
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag< _vOpt > opt, _type &&input)
template<LoadOption _vOpt, class _type >
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag< _vOpt > opt, _type &&input, ReaderState &rs)
template<LoadOption _vOpt, typename... _tParams>
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag< _vOpt > opt, std::istream &is, _tParams &&... args) const
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag<>, std::streambuf &, ContextNode &) const
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag<>, std::streambuf &, ReaderState &, ContextNode &) const
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag< WithSourceLocation >, std::streambuf &, ContextNode &) const
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag< WithSourceLocation >, std::streambuf &, ReaderState &, ContextNode &) const
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag< NoSourceInformation >, std::streambuf &, ContextNode &) const
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag< NoSourceInformation >, std::streambuf &, ReaderState &, ContextNode &) const
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag<>, string_view, ContextNode &) const
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag< WithSourceLocation >, string_view, ContextNode &) const
YB_ATTR_nodiscard TermNode | ReadFrom (LoadOptionTag< NoSourceInformation >, string_view, ContextNode &) const
template<typename... _tParams>
void | ShareCurrentSource (_tParams &&... args)
| 设置当前源代码名称为参数指定初始化的新分配的共享名称。 更多...

## 静态 Public 成员函数

static YB_ATTR_nodiscard TermNode | DefaultLoad (REPLContext &, ContextNode &, string)
| 默认加载。 更多...

## Public 属性

TermNode::allocator_type | Allocator
| 节点分配器。 更多...
ContextState | Root
| 上下文根节点。 更多...
TermPasses::HandlerType | Preprocess {std::allocator_arg, Allocator}
| 预处理例程：每次翻译时预先处理调用的公共例程。 更多...
Tokenizer | ConvertLeaf
| 叶节点词素转换器。 更多...
SourcedTokenizer | ConvertLeafSourced
| 带有源代码信息的叶节点词素转换器。 更多...
SourceName | CurrentSource {}
| 当前源代码名称。 更多...
bool | UseSourceLocation = {}
| 默认启用源代码位置。 更多...
Loader | Load {DefaultLoad}
| 加载例程。 更多...

## Private 成员函数

template<typename _tParam >
YB_ATTR_nodiscard ContextNode & | FetchContextParameter (_tParam &&)
template<typename... _tParams>
YB_ATTR_nodiscard ContextNode & | FetchContextParameter (NPL::tuple< _tParams..., ContextNode & > args)

## 相关函数

(请注意: 这些不是成员函数.)
template<typename... _tParams>
#define | YB_NONNULL(...)
| 尝试加载源代码。 更多...

## 详细描述

在文件 NPLA1.h 第 1553 行定义.

## 成员类型定义说明

## ◆ Loader

using NPL::A1::REPLContext::Loader = function<TermNode(REPLContext&, ContextNode&, string)>

加载器。

自从
  build 899

接受 REPL 上下文、规约上下文和指定名称，转换翻译单元内容为待求值节点的例程。

在文件 NPLA1.h 第 1578 行定义.

## ◆ LoadOptionTag

template<LoadOption _vOpt = Contextual>

using NPL::A1::REPLContext::LoadOptionTag = std::integral_constant<LoadOption, _vOpt>

代码加载选项标签类型。

在文件 NPLA1.h 第 1570 行定义.

## 成员枚举类型说明

## ◆ LoadOption

enum NPL::A1::REPLContext::LoadOption

代码加载选项。

自从
  build 891

枚举值
Contextual | 使用上下文中的状态决定是否使用源代码信息。
WithSourceLocation | 使用源代码位置。
NoSourceInformation | 不使用源代码信息。

在文件 NPLA1.h 第 1559 行定义.

## 构造及析构函数说明

## ◆ REPLContext() [1/2]

NPL::A1::REPLContext::REPLContext | ( | pmr::memory_resource & | rsrc = `NPL::Deref(pmr::new_delete_resource())` | ) |

构造：使用默认的解释、指定的存储资源和默认的叶节点词素转换器。

参见
  ListTermPreprocess
  SetupDefaultInterpretation
  ParseLeaf

自从
  build 879

在文件 NPLA1.cpp 第 1689 行定义.

引用了 Allocator, ystdex::make_string_view(), NPL::A1::ParseLeaf() , 以及 YSLib::Text::str.

函数调用图:

## ◆ REPLContext() [2/2]

NPL::A1::REPLContext::REPLContext | ( | Tokenizer | leaf_conv,
|  | SourcedTokenizer | sourced_leaf_conv,
|  | pmr::memory_resource & | rsrc = `NPL::Deref(pmr::new_delete_resource())`
| ) |  |

构造：使用默认的解释、指定的存储资源和叶节点词素转换器。

自从
  build 891

在文件 NPLA1.cpp 第 1697 行定义.

引用了 Allocator, Root , 以及 NPL::A1::SetupDefaultInterpretation().

函数调用图:

## 成员函数说明

## ◆ DefaultLoad()

TermNode NPL::A1::REPLContext::DefaultLoad | ( | REPLContext & | context,
|  | ContextNode & | ctx,
|  | string | filename
| ) |  |

static

默认加载。

自从
  build 899

以参数作为文件名读取内容并转换。 不处理文件名。 若被平台支持，使用相对路径文件名指定的文件位置可能和当前工作目录相关。

在文件 NPLA1.cpp 第 1713 行定义.

引用了 NPL::A1::OpenUnique(), ReadFrom() , 以及 std::move().

函数调用图:

## ◆ FetchContextParameter() [1/2]

template<typename _tParam >

YB_ATTR_nodiscard ContextNode& NPL::A1::REPLContext::FetchContextParameter | ( | _tParam && |  | ) |

inlineprivate

自从
  build 891

在文件 NPLA1.h 第 1685 行定义.

## ◆ FetchContextParameter() [2/2]

template<typename... _tParams>

YB_ATTR_nodiscard ContextNode& NPL::A1::REPLContext::FetchContextParameter | ( | NPL::tuple< _tParams..., ContextNode & > | args | ) |

inlineprivate

自从
  build 899

在文件 NPLA1.h 第 1692 行定义.

引用了 NPL::A1::args , 以及 NPL::get.

## ◆ IsAsynchronous()

bool NPL::A1::REPLContext::IsAsynchronous | ( |  | ) | const

判断当前实现是否为异步实现。

自从
  build 879

判断当前实现是否支持在本机实现中使用异步调用。 若不支持同步调用，则只应使用同步调用的本机实现。

在文件 NPLA1.cpp 第 1707 行定义.

引用了 NPL_Impl_NPLA1_Enable_Thunked.

## ◆ LoadFrom()

template<typename... _tParams>

void NPL::A1::REPLContext::LoadFrom | ( | _tParams &&... | args | ) |

inline

加载：从指定参数指定的来源读取并翻译源代码。

异常

  std::invalid_argument | 异常中立：由 ReadFrom 抛出。

参见
  ReadFrom
  Reduce

自从
  build 891

在文件 NPLA1.h 第 1709 行定义.

引用了 NPL::A1::args, NPL::A1::Reduce(), NPL::A1::Internals::term , 以及 yforward.

函数调用图:

## ◆ PDefH()

YB_ATTR_nodiscard NPL::A1::REPLContext::PDefH | ( | TermNode | ,
|  | Prepare | ,
|  | TermNode && | term
| ) |  | const

准备规约项：分析输入并标记记号节点和预处理。

返回
  预处理后的项。

参见
  Preprocess

自从
  build 890

按需分析并调用预处理例程。 词素的处理由分析完成，不需单独调用 TokenizeTerm 转换。

## ◆ Perform()

template<typename... _tParams>

TermNode NPL::A1::REPLContext::Perform | ( | _tParams &&... | args | ) |

inline

执行循环：从指定参数指定的来源读取并翻译源代码，并返回处理结果。

在文件 NPLA1.h 第 1722 行定义.

引用了 NPL::A1::args, NPL::A1::Reduce(), NPL::A1::Internals::term , 以及 yforward.

被这些函数引用 NPL::A1::Forms::EvalUnit(), NPL::A1::Forms::LoadModule_std_environments(), NPL::A1::Forms::LoadModule_std_promises() , 以及 NPL::A1::Forms::LoadModule_std_system().

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

## ◆ ReadFrom() [1/16]

template<class _type >

YB_ATTR_nodiscard TermNode NPL::A1::REPLContext::ReadFrom | ( | _type && | input | ) |

inline

读取：从指定参数指定的来源输入源代码并准备规约项。

返回
  从参数输入读取的准备的项。

参见
  Prepare

自从
  build 891

在文件 NPLA1.h 第 1766 行定义.

引用了 yforward.

被这些函数引用 DefaultLoad().

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

## ◆ ReadFrom() [2/16]

template<class _type >

YB_ATTR_nodiscard TermNode NPL::A1::REPLContext::ReadFrom | ( | _type && | input,
|  | ContextNode & | ctx
| ) |  | const

inline

在文件 NPLA1.h 第 1779 行定义.

引用了 yforward.

## ◆ ReadFrom() [3/16]

template<class _type >

YB_ATTR_nodiscard TermNode NPL::A1::REPLContext::ReadFrom | ( | _type && | input,
|  | ReaderState & | rs
| ) |  |

inline

自从
  bulid 899

在文件 NPLA1.h 第 1773 行定义.

引用了 yforward.

## ◆ ReadFrom() [4/16]

template<class _type >

YB_ATTR_nodiscard TermNode NPL::A1::REPLContext::ReadFrom | ( | _type && | input,
|  | ReaderState & | rs,
|  | ContextNode & | ctx
| ) |  | const

inline

自从
  build 899

在文件 NPLA1.h 第 1786 行定义.

引用了 yforward.

## ◆ ReadFrom() [5/16]

template<LoadOption _vOpt, class _type >

YB_ATTR_nodiscard TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag< _vOpt > | opt,
|  | _type && | input
| ) |  |

inline

在文件 NPLA1.h 第 1792 行定义.

引用了 yforward.

## ◆ ReadFrom() [6/16]

template<LoadOption _vOpt, class _type >

YB_ATTR_nodiscard TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag< _vOpt > | opt,
|  | _type && | input,
|  | ReaderState & | rs
| ) |  |

inline

自从
  build 899

在文件 NPLA1.h 第 1799 行定义.

引用了 yforward.

## ◆ ReadFrom() [7/16]

template<LoadOption _vOpt, typename... _tParams>

YB_ATTR_nodiscard TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag< _vOpt > | opt,
|  | std::istream & | is,
|  | _tParams &&... | args
| ) |  | const

inline

异常

  std::invalid_argument | 流状态错误或缓冲区不存在。

自从
  build 899

在文件 NPLA1.h 第 1809 行定义.

引用了 NPL::A1::args, platform::p , 以及 yforward.

## ◆ ReadFrom() [8/16]

TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag< NoSourceInformation > | ,
|  | std::streambuf & | buf,
|  | ContextNode & | ctx
| ) |  | const

在文件 NPLA1.cpp 第 1774 行定义.

引用了 YSLib::Text::buf , 以及 NPL::Session::Process().

函数调用图:

## ◆ ReadFrom() [9/16]

TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag< NoSourceInformation > | ,
|  | std::streambuf & | buf,
|  | ReaderState & | rs,
|  | ContextNode & | ctx
| ) |  | const

自从
  build 899

在文件 NPLA1.cpp 第 1783 行定义.

引用了 YSLib::Text::buf , 以及 NPL::Session::ProcessOne().

函数调用图:

## ◆ ReadFrom() [10/16]

TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag< NoSourceInformation > | ,
|  | string_view | unit,
|  | ContextNode & | ctx
| ) |  | const

在文件 NPLA1.cpp 第 1817 行定义.

引用了 NPL::Session::Process() , 以及 YAssertNonnull.

函数调用图:

## ◆ ReadFrom() [11/16]

TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag< WithSourceLocation > | ,
|  | std::streambuf & | buf,
|  | ContextNode & | ctx
| ) |  | const

在文件 NPLA1.cpp 第 1752 行定义.

引用了 YSLib::Text::buf, NPL::Session::Lexer, NPL::Session::Process() , 以及 ystdex::ref().

函数调用图:

## ◆ ReadFrom() [12/16]

TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag< WithSourceLocation > | ,
|  | std::streambuf & | buf,
|  | ReaderState & | rs,
|  | ContextNode & | ctx
| ) |  | const

自从
  build 899

在文件 NPLA1.cpp 第 1763 行定义.

引用了 YSLib::Text::buf, NPL::Session::Lexer, NPL::Session::ProcessOne() , 以及 ystdex::ref().

函数调用图:

## ◆ ReadFrom() [13/16]

TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag< WithSourceLocation > | ,
|  | string_view | unit,
|  | ContextNode & | ctx
| ) |  | const

在文件 NPLA1.cpp 第 1806 行定义.

引用了 NPL::Session::Lexer, NPL::Session::Process(), ystdex::ref() , 以及 YAssertNonnull.

函数调用图:

## ◆ ReadFrom() [14/16]

TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag<> | ,
|  | std::streambuf & | buf,
|  | ContextNode & | ctx
| ) |  | const

在文件 NPLA1.cpp 第 1720 行定义.

引用了 YSLib::Text::buf, NPL::Session::Lexer, NPL::Session::Process(), ystdex::ref() , 以及 UseSourceLocation.

函数调用图:

## ◆ ReadFrom() [15/16]

TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag<> | ,
|  | std::streambuf & | buf,
|  | ReaderState & | rs,
|  | ContextNode & | ctx
| ) |  | const

自从
  build 899

在文件 NPLA1.cpp 第 1736 行定义.

引用了 YSLib::Text::buf, NPL::Session::Lexer, NPL::Session::ProcessOne(), ystdex::ref() , 以及 UseSourceLocation.

函数调用图:

## ◆ ReadFrom() [16/16]

TermNode NPL::A1::REPLContext::ReadFrom | ( | LoadOptionTag<> | ,
|  | string_view | unit,
|  | ContextNode & | ctx
| ) |  | const

前置条件
  断言：字符串的数据指针非空。

在文件 NPLA1.cpp 第 1792 行定义.

引用了 NPL::Session::Lexer, NPL::Session::Process(), ystdex::ref(), UseSourceLocation , 以及 YAssertNonnull.

函数调用图:

## ◆ ShareCurrentSource()

template<typename... _tParams>

void NPL::A1::REPLContext::ShareCurrentSource | ( | _tParams &&... | args | ) |

inline

设置当前源代码名称为参数指定初始化的新分配的共享名称。

自从
  build 899

在文件 NPLA1.h 第 1860 行定义.

引用了 NPL::A1::args , 以及 yforward.

## ◆ std::move()

YB_ATTR_nodiscard NPL::A1::REPLContext::std::move | ( | term |  | ) | const &&

inline

返回
  从参数输入读取的准备的项。

参见
  SContext::Analyze

在文件 NPLA1.h 第 1743 行定义.

引用了 NPL::SContext::Analyze(), NPL::A1::args , 以及 yforward.

被这些函数引用 DefaultLoad().

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

## 友元及相关函数文档

## ◆ YB_NONNULL

template<typename... _tParams>

#define YB_NONNULL | ( |  | 2 | ) | &

related

尝试加载源代码。

异常

  NPLException | 嵌套异常：加载失败。

注解
  第二参数表示来源，仅用于诊断消息。

自从
  build 838

## 类成员变量说明

## ◆ Allocator

TermNode::allocator_type NPL::A1::REPLContext::Allocator

节点分配器。

自从
  build 845

在文件 NPLA1.h 第 1596 行定义.

被这些函数引用 NPL::A1::PreloadExternal() , 以及 REPLContext().

## ◆ ConvertLeaf

Tokenizer NPL::A1::REPLContext::ConvertLeaf

叶节点词素转换器。

自从
  build 891

参见
  ParseLeaf

在文件 NPLA1.h 第 1618 行定义.

## ◆ ConvertLeafSourced

SourcedTokenizer NPL::A1::REPLContext::ConvertLeafSourced

带有源代码信息的叶节点词素转换器。

参见
  ParseLeafWithSourceInformation

在文件 NPLA1.h 第 1623 行定义.

## ◆ CurrentSource

SourceName NPL::A1::REPLContext::CurrentSource {}

当前源代码名称。

在文件 NPLA1.h 第 1625 行定义.

被这些函数引用 NPL::A1::Forms::LoadModule_std_io() , 以及 NPL::A1::OpenUnique().

## ◆ Load

Loader NPL::A1::REPLContext::Load {DefaultLoad}

加载例程。

自从
  build 899

指定字符串参数作为加载对象描述，结合自身状态加载输入为待求值的项。

在文件 NPLA1.h 第 1639 行定义.

被这些函数引用 NPL::A1::ReduceToLoadExternal().

## ◆ Preprocess

TermPasses::HandlerType NPL::A1::REPLContext::Preprocess {std::allocator_arg, Allocator}

预处理例程：每次翻译时预先处理调用的公共例程。

参见
  Prepare

自从
  build 888

在遍历节点时调用的预处理例程。 只保留一个遍的处理器，以减小一般情形（包括 NPLA1 默认情形）的开销。 若需要多个遍，可使用 TermPasses 作为目标。

在文件 NPLA1.h 第 1611 行定义.

## ◆ Root

ContextState NPL::A1::REPLContext::Root

上下文根节点。

自从
  build 842

在文件 NPLA1.h 第 1601 行定义.

被这些函数引用 NPL::A1::Forms::LoadModule_SHBuild(), NPL::A1::Forms::LoadModule_std_environments(), NPL::A1::Forms::LoadModule_std_io(), NPL::A1::Forms::LoadModule_std_strings(), NPL::A1::Forms::LoadModule_std_system(), NPL::A1::Forms::LoadStandardContext() , 以及 REPLContext().

## ◆ UseSourceLocation

bool NPL::A1::REPLContext::UseSourceLocation = {}

默认启用源代码位置。

参见
  Perform

在文件 NPLA1.h 第 1630 行定义.

被这些函数引用 ReadFrom().

该类的文档由以下文件生成:

- NPLA1.h
- NPLA1.cpp