YSTest: NPLA.h 文件参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

- 文件列表
- 文件成员

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

NPLA 公共接口。 更多...

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

浏览源代码.

## 类

struct | NPL::NPLATag
| NPLA 元标签。 更多...
class | NPL::NPLException
| NPL 异常基类。 更多...
class | NPL::ListReductionFailure
| 列表规约失败。 更多...
class | NPL::InvalidSyntax
| 语法错误。 更多...
class | NPL::ParameterMismatch
| 参数匹配失败。 更多...
class | NPL::ArityMismatch
| 元数不匹配错误。 更多...
class | NPL::BadIdentifier
| 标识符错误。 更多...
class | NPL::TermReference
| 项引用。 更多...
struct | NPL::PassesCombiner
| 遍合并器：逐次调用直至成功。 更多...
class | NPL::Environment
| 环境。 更多...
class | NPL::ContextNode
| 上下文节点。 更多...

## 命名空间

| NPL
| NPL::SXML
| SXML 表示。

## 类型定义

using | NPL::NodeMapper = std::function< ValueNode(const TermNode &)>
| 节点映射操作类型：变换节点为另一个节点。 更多...
using | NPL::DelayedTerm = ystdex::derived_entity< TermNode, NPLATag >
| 延迟求值项。 更多...
using | NPL::Guard = ystdex::any
| 作用域守护类型。 更多...
using | NPL::GuardPasses = YSLib::GEvent< Guard(TermNode &, ContextNode &), YSLib::GDefaultLastValueInvoker< Guard >>
| 作用域守护遍：用于需在规约例程的入口和出口关联执行的操作。 更多...
using | NPL::EnvironmentList = vector< ValueObject >
| 环境列表。 更多...
using | NPL::NodeToString = std::function< string(const ValueNode &)>
template<class _tCon >
using | NPL::GNodeInserter = std::function< void(TermNode &&, _tCon &)>
using | NPL::NodeInserter = GNodeInserter< TermNode::Container & >
using | NPL::NodeSequenceInserter = GNodeInserter< NodeSequence >
template<typename... _tParams>
using | NPL::GPasses = YSLib::GEvent< ReductionStatus(_tParams...), YSLib::GCombinerInvoker< ReductionStatus, PassesCombiner >>
| 一般合并遍。 更多...
using | NPL::TermPasses = GPasses< TermNode & >
| 项合并遍。 更多...
using | NPL::EvaluationPasses = GPasses< TermNode &, ContextNode & >
| 求值合并遍。 更多...
using | NPL::LiteralPasses = GPasses< TermNode &, ContextNode &, string_view >
| 字面量合并遍。 更多...
using | NPL::ContextHandler = YSLib::GHEvent< ReductionStatus(TermNode &, ContextNode &)>
| 上下文处理器类型。 更多...
using | NPL::LiteralHandler = YSLib::GHEvent< ReductionStatus(const ContextNode &)>
| 字面量处理器类型。 更多...

## 枚举

enum | NPL::LexemeCategory { NPL::LexemeCategory::Symbol, NPL::LexemeCategory::Code, NPL::LexemeCategory::Data, NPL::LexemeCategory::Extended }
| 字面量类别。 更多...
enum | NPL::ReductionStatus : yimpl(size_t) { NPL::ReductionStatus::Clean = 0, NPL::ReductionStatus::Retained, NPL::ReductionStatus::Retrying }
| 规约状态：一遍规约可能的中间结果。 更多...

## 函数

YF_API string | NPL::EscapeNodeLiteral (const ValueNode &)
| 转义 NPLA 节点字面量。 更多...
YF_API string | NPL::LiteralizeEscapeNodeLiteral (const ValueNode &)
| 转义 NPLA 节点字面量。 更多...
YF_API string | NPL::ParseNPLANodeString (const ValueNode &)
| 解析 NPLA 节点字符串。 更多...
YF_API ValueNode | NPL::SXML::MakeXMLDecl (const string &={}, const string &="1.0", const string &="UTF-8", const string &={})
| 构造 SXML 文档 XML 声明节点。 更多...
YF_API ValueNode | NPL::SXML::MakeXMLDoc (const string &={}, const string &="1.0", const string &="UTF-8", const string &={})
| 构造包含 XML 声明的 SXML 文档节点。 更多...
YF_API bool | NPL::IsNPLAExtendedLiteral (string_view) ynothrowv
| 判断不是非扩展字面量的词素是否为 NPLA 扩展字面量。 更多...
yconstfn | NPL::PDefH (bool, IsNPLAExtendedLiteralNonDigitPrefix, char c) ynothrow ImplRet(c
| 判断字符是否为 NPLA 扩展字面量非数字前缀。 更多...
YF_API observer_ptr< const TokenValue > | NPL::TermToNamePtr (const TermNode &)
| 访问项的值作为记号。 更多...
YF_API void | NPL::TokenizeTerm (TermNode &term)
| 标记记号节点：递归变换节点，转换其中的词素为记号值。 更多...
| NPL::PDefH (void, LiftTerm, ValueObject &term_v, ValueObject &vo) ImplExpr(term_v
| NPL::PDefH (void, LiftDelayed, TermNode &term, DelayedTerm &tm) ImplExpr(LiftTermRef(term
| 提升延迟求值项的引用。 更多...
| NPL::PDefH (void, RegisterContextHandler, ContextNode &ctx, const string &name, ContextHandler f) ImplExpr(ctx.GetBindingsRef()[name].Value
| 注册上下文处理器。 更多...
typename _tParams _tPasses::result_type | NPL::InvokePasses (observer_ptr< const ValueNode > p, TermNode &term, ContextNode &ctx, _tParams &&...args)
template<class _tPasses , typename... _tParams>
_tPasses::result_type | NPL::InvokePasses (const string &name, TermNode &term, ContextNode &ctx, _tParams &&...args)
template<class _tNodeOrCon , typename... _tParams>
ValueNode::iterator | NPL::InsertSyntaxNode (_tNodeOrCon &&node_or_con, std::initializer_list< ValueNode > il, _tParams &&...args)
| 插入语法节点。 更多...
template<class _tNodeOrCon , typename _type , typename... _tParams>
ValueNode::iterator | NPL::InsertSyntaxNode (_tNodeOrCon &&node_or_con, _type &&arg, _tParams &&...args)
YF_API ValueNode | NPL::MapNPLALeafNode (const TermNode &)
| 映射 NPLA 叶节点。 更多...
YF_API ValueNode | NPL::TransformToSyntaxNode (const ValueNode &, const string &={})
| 变换节点为语法分析树叶节点。 更多...
template<class _tNodeOrCon >
ValueNode::iterator | NPL::InsertChildSyntaxNode (_tNodeOrCon &&node_or_con, ValueNode &child)
| 插入语法子节点。 更多...
template<class _tNodeOrCon >
ValueNode::iterator | NPL::InsertChildSyntaxNode (_tNodeOrCon &&node_or_con, ValueNode &&child)
template<class _tNodeOrCon >
ValueNode::iterator | NPL::InsertChildSyntaxNode (_tNodeOrCon &&node_or_con, const NodeLiteral &nl)
YF_API string | NPL::SXML::ConvertAttributeNodeString (const TermNode &)
| 转换 SXML 节点为 XML 属性字符串。 更多...
YF_API string | NPL::SXML::ConvertDocumentNode (const TermNode &, IndentGenerator=DefaultGenerateIndent, size_t=0, ParseOption=ParseOption::Normal)
| 转换 SXML 文档节点为 XML 字符串。 更多...
YF_API string | NPL::SXML::ConvertStringNode (const TermNode &)
| 转换 SXML 节点为被转义的 XML 字符串。 更多...
YF_API void | NPL::SXML::PrintSyntaxNode (std::ostream &os, const TermNode &, IndentGenerator=DefaultGenerateIndent, size_t=0)
| 打印 SContext::Analyze 分析取得的 SXML 语法树节点并刷新流。 更多...
template<typename... _tParams>
ValueNode | NPL::SXML::MakeTop (const string &name, _tParams &&...args)
| 构造 SXML 文档顶级节点。 更多...
| NPL::SXML::PDefH (ValueNode, MakeTop,) ImplRet(MakeTop(
| NPL::SXML::PDefH (NodeLiteral, MakeAttributeTagLiteral, std::initializer_list< NodeLiteral > il) ImplRet(
| 构造 SXML 属性标记字面量。 更多...
template<typename... _tParams>
NodeLiteral | NPL::SXML::MakeAttributeTagLiteral (_tParams &&...args)
| NPL::SXML::PDefH (NodeLiteral, MakeAttributeLiteral, const string &name, std::initializer_list< NodeLiteral > il) ImplRet(
| 构造 XML 属性字面量。 更多...
template<typename... _tParams>
NodeLiteral | NPL::SXML::MakeAttributeLiteral (const string &name, _tParams &&...args)
template<class _tNodeOrCon >
void | NPL::SXML::InsertAttributeNode (_tNodeOrCon &&node_or_con, const string &name, std::initializer_list< NodeLiteral > il)
| 插入只有 XML 属性节点到语法节点。 更多...
template<class _tNodeOrCon , typename... _tParams>
void | NPL::SXML::InsertAttributeNode (_tNodeOrCon &&node_or_con, const string &name, _tParams &&...args)
YF_API LexemeCategory | NPL::CategorizeBasicLexeme (string_view) ynothrowv
| 对排除扩展字面量的词素分类。 更多...
YF_API LexemeCategory | NPL::CategorizeLexeme (string_view) ynothrowv
| 对词素分类。 更多...
YF_API TermNode & | NPL::ReferenceTerm (TermNode &)
| 访问项并取解析 TermReference 间接值后的引用。 更多...
YF_API const TermNode & | NPL::ReferenceTerm (const TermNode &)
template<typename _type >
_type & | NPL::AccessTerm (ValueNode &term)

访问解析 TermReference 后的项的指定类型对象。

异常

  std::bad_cast | 异常中立：空实例或类型检查失败。

更多...

template<typename _type >
const _type & | NPL::AccessTerm (const ValueNode &term)
template<typename _type >
observer_ptr< _type > | NPL::AccessTermPtr (TermNode &term) ynothrow
| 访问解析 TermReference 后的项的指定类型对象指针。 更多...
template<typename _type >
observer_ptr< const _type > | NPL::AccessTermPtr (const TermNode &term) ynothrow
YF_API void | NPL::LiftTerm (TermNode &, TermNode &)
| 提升项：使用第二个参数指定的项的内容替换第一个项的内容。 更多...

## 变量

yconstfn | NPL::NPLATag
template<typename _func , typename... _tParams>
PDefH(ReductionStatus, CheckNorm, const TermNode &term) ynothrow ImplRet(IsBranch(term)?ReductionStatus void | NPL::CheckedReduceWith (_func f, _tParams &&...args)
| 检查视为范式的节点并提取规约状态。 更多...
using | NPL::IndentGenerator = std::function< string(size_t)>
| 生成前缀缩进的函数类型。 更多...
YF_API string | NPL::DefaultGenerateIndent (size_t)
| 生成水平制表符为单位的缩进。 更多...
YF_API void | NPL::PrintIndent (std::ostream &, IndentGenerator=DefaultGenerateIndent, size_t=1)

异常

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

更多...

YF_API void | NPL::PrintNode (std::ostream &, const ValueNode &, NodeToString=EscapeNodeLiteral, IndentGenerator=DefaultGenerateIndent, size_t=0)
| 打印 NPLA 节点。 更多...
YF_API void | NPL::PrintNodeChild (std::ostream &, const ValueNode &, NodeToString=EscapeNodeLiteral, IndentGenerator=DefaultGenerateIndent, size_t=0)
| 打印作为子节点的 NPLA 节点。 更多...
YF_API bool | NPL::PrintNodeString (std::ostream &, const ValueNode &, NodeToString=EscapeNodeLiteral)
| 打印节点字符串。 更多...
PDefH(void, LiftTermRef, TermNode &term, const TermNode &tm) ImplExpr(YSLib YF_API void | NPL::LiftToSelf (TermNode &)
| 提升项引用：使用第二个参数指定的项的内容引用替换第一个项的内容。 更多...
YF_API void | NPL::LiftTermOrRef (TermNode &, TermNode &)
| 提升项或创建引用项。 更多...
YF_API void | NPL::LiftToOther (TermNode &, TermNode &)
| 递归提升项及其子项或递归创建项和子项对应的包含间接值的引用项到其它项。 更多...
tm | NPL::LiftLast
tm | NPL::PDefH (void, LiftFirst, TermNode &term) ImplExpr(IsBranch(term)
| 提升首项：使用首个子项替换项的内容。 更多...
tm | NPL::LiftTerm (term, Deref(term.begin()))) inline PDefH(void
| 提升末项：使用最后一个子项替换项的内容。 更多...
tm TermNode &term | NPL::ImplExpr (IsBranch(term), LiftTerm(term, Deref(term.rbegin()))) YF_API ReductionStatus ReduceHeadEmptyList(TermNode &) ynothrow
| 规约第一个非结尾空列表子项。 更多...
YF_API ReductionStatus | NPL::ReduceToList (TermNode &) ynothrow
| 规约为列表：对枝节点移除第一个子项，保留余下的子项作为列表。 更多...

## 详细描述

NPLA 公共接口。

版本
  r2268

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

自从
  build 663

创建时间:
  2016-01-07 10:32:34 +0800

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

文本编码:
  UTF-8

模块名称:
  NPL::NPLA

在文件 NPLA.h 中定义.