YSTest: NPLA1.h 文件参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 文件列表
- 文件成员

类 | 命名空间 | 枚举 | 函数 | 变量
NPLA1.h 文件参考
YFramework Library » Naming Protocol Language

NPLA1 公共接口。 更多...

`#include "YModules.h"`
`#include <NPL/NPLA.h>`
NPLA1.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

struct | NPL::A1::NPLA1Tag
| NPLA1 元标签。 更多...
struct | NPL::A1::WrappedContextHandler< _func >
| 包装上下文处理器。 更多...
class | NPL::A1::FormContextHandler
| 形式上下文处理器。 更多...
class | NPL::A1::StrictContextHandler
| 严格上下文处理器。 更多...
class | NPL::A1::REPLContext
struct | NPL::A1::Forms::UnaryExpansion< _func >
| 保存函数展开调用的函数对象。 更多...
struct | NPL::A1::Forms::UnaryAsExpansion< _type, _func >
struct | NPL::A1::Forms::BinaryExpansion< _func >
struct | NPL::A1::Forms::BinaryAsExpansion< _type, _func >

## 命名空间

| NPL
| NPL::A1
| NPL::A1::Forms
| NPLA1 语法形式对应的功能实现。

## 枚举

enum | NPL::A1::ValueToken { NPL::A1::ValueToken::Null, NPL::A1::ValueToken::Undefined, NPL::A1::ValueToken::Unspecified, NPL::A1::ValueToken::GroupingAnchor, NPL::A1::ValueToken::OrderedAnchor }
| 值记号：节点中的值的占位符。 更多...

## 函数

YF_API ValueNode | NPL::A1::TransformNode (const TermNode &, NodeMapper={}, NodeMapper=MapNPLALeafNode, NodeToString=ParseNPLANodeString, NodeInserter=InsertChild)

变换 NPLA1 节点 S 表达式抽象语法树为 NPLA1 语义结构。

异常

  std::bad_function_call | 第三至五参数为空。

更多...

YF_API ValueNode | NPL::A1::TransformNodeSequence (const TermNode &, NodeMapper={}, NodeMapper=MapNPLALeafNode, NodeToString=ParseNPLANodeString, NodeSequenceInserter=InsertSequenceChild)

变换 NPLA1 节点 S 表达式抽象语法树为 NPLA1 序列语义结构。

异常

  std::bad_function_call | 第三至五参数为空。

更多...

YF_API LiteralPasses & | NPL::A1::AccessLiteralPassesRef (ContextNode &)
| 访问字面量遍。 更多...
YF_API ReductionStatus | NPL::A1::InvokeLiteral (TermNode &, ContextNode &, string_view)
| 调用字面量遍。 更多...
YF_API ReductionStatus | NPL::A1::Reduce (TermNode &, ContextNode &)
| NPLA1 表达式节点规约：调用至少一次求值例程规约子表达式。 更多...
con ctx ctx YF_API ReductionStatus | NPL::A1::ReduceFirst (TermNode &, ContextNode &)
| 规约第一个子项。 更多...
YF_API ReductionStatus | NPL::A1::ReduceOrdered (TermNode &, ContextNode &)
| 规约有序序列：顺序规约子项，结果为最后一个子项的规约结果。 更多...
YF_API ReductionStatus | NPL::A1::ReduceTail (TermNode &, ContextNode &, TNIter)
| 移除容器第一个子项到指定迭代器的项后规约。 更多...
YF_API void | NPL::A1::SetupTraceDepth (ContextNode &ctx, const string &name=yimpl("$__depth"))
| 设置跟踪深度节点：调用规约时显示深度和上下文等信息。 更多...
YF_API ReductionStatus | NPL::A1::ReplaceSeparatedChildren (TermNode &, const ValueObject &, const ValueObject &)
| 查找项中的指定分隔符，若找到则替换项为去除分隔符并添加替换前缀的形式。 更多...
YF_API void | NPL::A1::RegisterSequenceContextTransformer (EvaluationPasses &, ContextNode &, const TokenValue &, const ValueObject &, bool={})
| 注册分隔符转换变换和处理例程。 更多...
| NPL::A1::PDefH (void, AssertBranch, const TermNode &term, const char *msg="Invalid term found.") ynothrowv ImplExpr(yunused(msg)
| 断言枝节点。 更多...
| NPL::A1::YAssert (IsBranch(term), msg)) inline PDefH(size_t
| 取项的参数个数：子项数减 1 。 更多...
const TermNode &term ynothrowv | NPL::A1::ImplRet (AssertBranch(term), term.size()-1) YF_API ReductionStatus EvaluateDelayed(TermNode &)
| 求值以节点数据结构间接表示的项。 更多...
YF_API ReductionStatus | NPL::A1::EvaluateDelayed (TermNode &, DelayedTerm &)
| 求值指定的延迟求值项。 更多...
YF_API ReductionStatus | NPL::A1::ReduceCombined (TermNode &, ContextNode &)
| 规约合并项：检查项的第一个子项尝试作为操作符进行函数应用，并规范化。 更多...
YF_API ReductionStatus | NPL::A1::ReduceLeafToken (TermNode &, ContextNode &)

规约提取名称的叶节点记号。

异常

  BadIdentifier | 标识符未声明。

更多...

YF_API observer_ptr< ValueNode > | NPL::A1::ResolveName (const ContextNode &, string_view)
| 解析名称：处理保留名称并查找名称。 更多...
YF_API bool | NPL::A1::Forms::IsSymbol (const string &) ynothrow
| 判断字符串值是否可构成符号。 更多...
template<typename _type , typename _func , typename... _tParams>
void | NPL::A1::Forms::CallBinaryFold (_func f, _type val, TermNode &term, _tParams &&...args)
| 访问节点并以指定的初始值为基础逐项调用二元函数。 更多...
YF_API void | NPL::A1::Forms::Undefine (TermNode &, ContextNode &, bool)

移除名称绑定。

异常

  BadIdentifier | 非强制时移除不存在的名称。

更多...

YF_API ReductionStatus | NPL::A1::Forms::If (TermNode &, ContextNode &)
| 条件判断：根据求值的条件取表达式。 更多...
YF_API void | NPL::A1::Forms::CallSystem (TermNode &)
| 调用 UTF-8 字符串的系统命令，并保存 int 类型的结果到项的值中。 更多...
YF_API ReductionStatus | NPL::A1::Forms::Cons (TermNode &)
| 接受两个参数，返回以第一个参数作为首项插入第二个参数创建的新的列表。 更多...
YF_API void | NPL::A1::Forms::MakeEnvironment (TermNode &)

创建以参数指定的环境列表作为父环境的新环境。

异常

  NPLException | 异常中立：由 Environment 的构造函数抛出。

更多...

YF_API void | NPL::A1::Forms::GetCurrentEnvironment (TermNode &, ContextNode &)
| 取包含当前环境的上下文引用。 更多...
YF_API ReductionStatus | NPL::A1::Forms::ValueOf (TermNode &, const ContextNode &)
| 求值标识符得到指称的实体。 更多...
YF_API void | NPL::A1::InsertChild (TermNode &&, TermNode::Container &)
| 插入 NPLA1 子节点。 更多...
YF_API void | NPL::A1::InsertSequenceChild (TermNode &&, NodeSequence &)
template<typename _type , typename... _tParams>
ValueNode | NPL::A1::LoadNode (_type &&tree, _tParams &&...args)
| 加载 NPLA1 翻译单元。 更多...
template<typename _type , typename... _tParams>
ValueNode | NPL::A1::LoadNodeSequence (_type &&tree, _tParams &&...args)
YF_API GuardPasses & | NPL::A1::AccessGuardPassesRef (ContextNode &)
| 访问守护遍。 更多...
YF_API EvaluationPasses & | NPL::A1::AccessLeafPassesRef (ContextNode &)
| 访问叶遍。 更多...
YF_API EvaluationPasses & | NPL::A1::AccessListPassesRef (ContextNode &)
| 访问列表遍。 更多...
YF_API Guard | NPL::A1::InvokeGuard (TermNode &term, ContextNode &)
| 调用守护遍。 更多...
YF_API ReductionStatus | NPL::A1::InvokeLeaf (TermNode &term, ContextNode &)
| 调用叶遍。 更多...
YF_API ReductionStatus | NPL::A1::InvokeList (TermNode &term, ContextNode &)
| 调用列表遍。 更多...
YF_API void | NPL::A1::ReduceArguments (TNIter, TNIter, ContextNode &)
| 对范围内的第二项开始逐项规约。 更多...
| NPL::A1::PDefH (void, ReduceArguments, TermNode::Container &con, ContextNode &ctx) ImplRet(ReduceArguments(con.begin()
con | NPL::A1::end ()
con ctx | NPL::A1::PDefH (void, ReduceArguments, TermNode &term, ContextNode &ctx) ImplRet(ReduceArguments(term.GetContainerRef()
con ctx ctx YF_API void | NPL::A1::ReduceChecked (TermNode &, ContextNode &)
| 规约并检查成功：调用 Reduce 并检查结果。 更多...
YF_API void | NPL::A1::ReduceCheckedClosure (TermNode &, ContextNode &, bool, TermNode &)
| 规约闭包。 更多...
YF_API void | NPL::A1::ReduceChildren (TNIter, TNIter, ContextNode &)
| 规约子项。 更多...
| NPL::A1::PDefH (void, ReduceChildren, TermNode::Container &con, ContextNode &ctx) ImplExpr(ReduceChildren(con.begin()
con ctx | NPL::A1::PDefH (void, ReduceChildren, TermNode &term, ContextNode &ctx) ImplExpr(ReduceChildren(term.GetContainerRef()
con ctx ctx YF_API ReductionStatus | NPL::A1::ReduceChildrenOrdered (TNIter, TNIter, ContextNode &)
| 有序规约子项。 更多...
| NPL::A1::PDefH (ReductionStatus, ReduceChildrenOrdered, TermNode::Container &con, ContextNode &ctx) ImplRet(ReduceChildrenOrdered(con.begin()
con ctx | NPL::A1::PDefH (ReductionStatus, ReduceChildrenOrdered, TermNode &term, ContextNode &ctx) ImplRet(ReduceChildrenOrdered(term.GetContainerRef()
YF_API TermNode | NPL::A1::TransformForSeparator (const TermNode &, const ValueObject &, const ValueObject &, const TokenValue &={})
| 变换分隔符中缀表达式为前缀表达式。 更多...
YF_API TermNode | NPL::A1::TransformForSeparatorRecursive (const TermNode &, const ValueObject &, const ValueObject &, const TokenValue &={})
template<class _tDst , typename _func >
_tDst | NPL::A1::WrapContextHandler (_func &&h, ystdex::false_)
template<class , typename _func >
_func | NPL::A1::WrapContextHandler (_func &&h, ystdex::true_)
template<class _tDst , typename _func >
_tDst | NPL::A1::WrapContextHandler (_func &&h)
template<typename... _tParams>
void | NPL::A1::RegisterForm (ContextNode &ctx, const string &name, _tParams &&...args)
template<typename... _tParams>
ContextHandler | NPL::A1::ToContextHandler (_tParams &&...args)
| 转换上下文处理器。 更多...
template<typename... _tParams>
void | NPL::A1::RegisterStrict (ContextNode &ctx, const string &name, _tParams &&...args)
| 注册严格上下文处理器。 更多...
YF_API ReductionStatus | NPL::A1::EvaluateIdentifier (TermNode &, const ContextNode &, string_view)
| 求值标识符。 更多...
YF_API ReductionStatus | NPL::A1::EvaluateLeafToken (TermNode &, ContextNode &, string_view)
| 求值叶节点记号。 更多...
YF_API TokenValue | NPL::A1::Forms::StringToSymbol (const string &)
| 创建等于指定字符串值的记号值。 更多...
YF_API const string & | NPL::A1::Forms::SymbolToString (const TokenValue &) ynothrow
| 取符号对应的名称字符串。 更多...
| NPL::A1::Forms::PDefH (ReductionStatus, Retain, const TermNode &term) ynothrowv ImplRet(AssertBranch(term)
| 保留项：保留求值。 更多...
ReductionStatus::Retained YF_API size_t | NPL::A1::Forms::RetainN (const TermNode &, size_t=1)
| 保留经检查确保具有指定个数参数的项：保留求值。 更多...
template<typename _func >
auto | NPL::A1::Forms::CheckSymbol (string_view n, _func f) -> decltype(f())
| 检查记号值是符合匹配条件的符号。 更多...
template<typename _func >
auto | NPL::A1::Forms::CheckParameterLeafToken (string_view n, _func f) -> decltype(f())
| 检查记号值是符合匹配条件的参数符号。 更多...
YF_API void | NPL::A1::Forms::BindParameter (ContextNode &, const TermNode &, TermNode &)
| 使用操作数结构化匹配并绑定参数。 更多...
YF_API void | NPL::A1::Forms::MatchParameter (const TermNode &, TermNode &, std::function< void(TNIter, TNIter, const TokenValue &)>, std::function< void(const TokenValue &, TermNode &&)>)

匹配参数。

异常

  std::bad_function | 异常中立：参数指定的处理器为空。

更多...

template<typename _func , typename... _tParams>
void | NPL::A1::Forms::CallUnary (_func &&f, TermNode &term, _tParams &&...args)
| 访问节点并调用一元函数。 更多...
template<typename _type , typename _func , typename... _tParams>
void | NPL::A1::Forms::CallUnaryAs (_func &&f, TermNode &term, _tParams &&...args)
template<typename _func , typename... _tParams>
void | NPL::A1::Forms::CallBinary (_func &&f, TermNode &term, _tParams &&...args)
| 访问节点并调用二元函数。 更多...
template<typename _type , typename _func , typename... _tParams>
void | NPL::A1::Forms::CallBinaryAs (_func &&f, TermNode &term, _tParams &&...args)
template<typename _func >
void | NPL::A1::Forms::RegisterStrictUnary (ContextNode &ctx, const string &name, _func f)
| 注册一元严格求值上下文处理器。 更多...
template<typename _type , typename _func >
void | NPL::A1::Forms::RegisterStrictUnary (ContextNode &ctx, const string &name, _func f)
template<typename _func >
void | NPL::A1::Forms::RegisterStrictBinary (ContextNode &ctx, const string &name, _func f)
| 注册二元严格求值上下文处理器。 更多...
template<typename _type , typename _func >
void | NPL::A1::Forms::RegisterStrictBinary (ContextNode &ctx, const string &name, _func f)
YF_API void | NPL::A1::Forms::DefineLazy (TermNode &, ContextNode &)

定义。

异常

  ParameterMismatch | 绑定匹配失败。

更多...

YF_API void | NPL::A1::Forms::DefineWithNoRecursion (TermNode &, ContextNode &)
YF_API void | NPL::A1::Forms::DefineWithRecursion (TermNode &, ContextNode &)
YF_API void | NPL::A1::Forms::Lambda (TermNode &, ContextNode &)
| λ 抽象：求值为一个捕获当前上下文的严格求值的函数。 更多...
YF_API void | NPL::A1::Forms::Vau (TermNode &, ContextNode &)
| vau 抽象：求值为一个捕获当前上下文的非严格求值的函数。 更多...
YF_API void | NPL::A1::Forms::VauWithEnvironment (TermNode &, ContextNode &)
| 带环境的 vau 抽象：求值为一个捕获当前上下文的非严格求值的函数。 更多...
YF_API ReductionStatus | NPL::A1::Forms::And (TermNode &, ContextNode &)
| 逻辑与。 更多...
YF_API ReductionStatus | NPL::A1::Forms::Or (TermNode &, ContextNode &)
| 逻辑或。 更多...
YF_API void | NPL::A1::Forms::EqualReference (TermNode &)
| 比较两个子项的值相等。 更多...
YF_API void | NPL::A1::Forms::EqualValue (TermNode &)
| 比较两个子项的值相等。 更多...
YF_API ReductionStatus | NPL::A1::Forms::Eval (TermNode &, ContextNode &)
| 对指定项按指定的环境求值。 更多...
YF_API void | NPL::A1::Forms::EvaluateUnit (TermNode &, const REPLContext &)
| 创建参数指定的 REPL 的副本并在其中对翻译单元规约以求值。 更多...
YF_API ContextHandler | NPL::A1::Forms::Wrap (const ContextHandler &)
| 包装合并子为应用子。 更多...
YF_API ContextHandler | NPL::A1::Forms::WrapOnce (const ContextHandler &)

异常

  NPLException | 类型不符合要求。

更多...

YF_API ContextHandler | NPL::A1::Forms::Unwrap (const ContextHandler &)
| 从应用子中取操作子。 更多...

## 变量

| NPL::A1::FetchArgumentN
| NPL::A1::EvaluationPasses
YF_API pair< shared_ptr< Environment >, bool > | NPL::A1::ResolveEnvironment (ValueObject &)
| 解析环境。 更多...
| NPL::A1::PDefH (pair< shared_ptr< Environment > YPP_Comma bool >, ResolveEnvironment, TermNode &term) ImplRet(ResolveEnvironment(ReferenceTerm(term).Value)) YF_API void SetupDefaultInterpretation(ContextNode &
| 设置默认解释：解释使用的公共处理遍。 更多...

## 详细描述

NPLA1 公共接口。

版本
  r3349

作者
  FrankHB frank.nosp@m.hb19.nosp@m.89@gm.nosp@m.ail..nosp@m.com

自从
  build 472

创建时间:
  2014-02-02 17:58:24 +0800

修改时间:
  2017-08-05 16:34 +0800

文本编码:
  UTF-8

模块名称:
  NPL::NPLA1

在文件 NPLA1.h 中定义.