YSTest: NPL::ByteParser类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

Public 类型 | Public 成员函数 | Public 属性 | Private 属性 | 所有成员列表
NPL::ByteParser类 参考
Lexical Parsers

字节解析器。 更多...

`#include <Lexical.h>`

类 NPL::ByteParser 继承关系图:
[图例]
NPL::ByteParser 的协作图:
[图例]

## Public 类型

using | ParseResult = vector< string >

## Public 成员函数

| ByteParser (LexicalAnalyzer &lexer, pmr::polymorphic_allocator< yimpl(byte)> a={})
| ByteParser (const ByteParser &parse)
| DefDeMoveCtor (ByteParser) PDefHOp(ByteParser &
| 复制赋值：使用参数的分配器构造的副本和交换操作。 更多...
const ByteParser &parse | ImplRet (ystdex::copy_and_swap(*this, parse)) DefDeMoveAssignment(ByteParser) template< typename... _tParams > inline void operator()(char c
| 解析单个字符并更新字符解析结果。 更多...
| Update (lexer.FilterChar(c, GetBufferRef(), yforward(args)...) &&lexer.UpdateBack(GetBackRef(), c))

## Public 属性

const ByteParser &parse _tParams && | args
const string buffer LexicalAnalyzer lexer_ref char ld const ynothrow | reserve
| 取解析结果。 更多...

## Private 属性

ParseResult | lexemes {}
bool | update_current = {}
Private 属性 继承自 NPL::BufferedByteParserBase
const string | Buffer
const string buffer LexicalAnalyzer | LexerRef
const string buffer LexicalAnalyzer lexer_ref | QueryLastDelimited
const string buffer LexicalAnalyzer lexer_ref char ld const ynothrow | reserve
const string buffer LexicalAnalyzer lexer_ref char ld const ynothrow size_t n | BufferedByteParserBase

## 额外继承的成员函数

Private 成员函数 继承自 NPL::BufferedByteParserBase
| BufferedByteParserBase (LexicalAnalyzer &lexer, pmr::polymorphic_allocator< yimpl(byte)> a={})
| DefDeCopyMoveCtorAssignment (BufferedByteParserBase) DefGetter(const ynothrow
const string buffer | DefGetter (ynothrow, string &, BufferRef, buffer) DefGetter(const ynothrow
const string buffer LexicalAnalyzer lexer_ref | DefGetter (ynothrow, char &, BackRef, buffer.back()) PDefH(size_t
| 取最后取得的分隔符划分的区间位置。 更多...
const string buffer LexicalAnalyzer lexer_ref char ld const ynothrow | ImplRet (buffer.length() -(ld !=char() ? 1 :0)) PDefH(void
| 字符解析中间结果预分配参数指定的空间。 更多...
const string buffer LexicalAnalyzer lexer_ref char ld const ynothrow size_t n | ImplExpr (buffer.reserve(n)) friend DefSwap(ynothrow
const string buffer LexicalAnalyzer lexer_ref char ld const ynothrow size_t n | std::swap (_x.lexer_ref, _y.lexer_ref)

## 详细描述

字节解析器。

自从
  build 889

添加单个 char 作为字节数据的解析器。 解析结果为取字符串列表并记号化的记号列表。 记号化提取字符串列表中的记号，排除字面量，分解其余字符串为记号列表。 记号化的记号列表以词素列表类型表示，不保存词素外的信息。

在文件 Lexical.h 第 519 行定义.

## 成员类型定义说明

## ◆ ParseResult

using NPL::ByteParser::ParseResult = vector<string>

自从
  build 891

在文件 Lexical.h 第 523 行定义.

## 构造及析构函数说明

## ◆ ByteParser() [1/2]

NPL::ByteParser::ByteParser | ( | LexicalAnalyzer & | lexer,
|  | pmr::polymorphic_allocator< yimpl(byte)> | a = `{}`
| ) |  |

inline

在文件 Lexical.h 第 535 行定义.

## ◆ ByteParser() [2/2]

NPL::ByteParser::ByteParser | ( | const ByteParser & | parse | ) |

inline

自从
  build 890

在文件 Lexical.h 第 541 行定义.

## 成员函数说明

## ◆ DefDeMoveCtor()

NPL::ByteParser::DefDeMoveCtor | ( | ByteParser |  | ) | &

复制赋值：使用参数的分配器构造的副本和交换操作。

## ◆ ImplRet()

const ByteParser& parse NPL::ByteParser::ImplRet | ( | ystdex::copy_and_swap *, | parse | ) |

解析单个字符并更新字符解析结果。

注解
  记录引号并忽略空字符。
  参数指定词法分析的反转义算法。

警告
  同一个分析器对象上使用不等价的多种解析方法或反转义算法的结果未指定。

## ◆ Update()

void NPL::ByteParser::Update | ( | lexer. | FilterCharc, GetBufferRef(), yforward(args)...) &&lexer.UpdateBack(GetBackRef(), c | ) |

在文件 Lexical.cpp 第 427 行定义.

## 类成员变量说明

## ◆ args

const ByteParser& parse _tParams&& NPL::ByteParser::args

初始值:
{
auto& lexer(GetLexerRef())

在文件 Lexical.h 第 562 行定义.

## ◆ lexemes

ParseResult NPL::ByteParser::lexemes {}

mutableprivate

不变性
  `!(lexemes.empty() && update_current)` 。

自从
  build 891

在文件 Lexical.h 第 529 行定义.

## ◆ reserve

const string buffer LexicalAnalyzer lexer_ref char ld const ynothrow NPL::BufferedByteParserBase::reserve

取解析结果。

自从
  build 891

根据参数保存的词法分析器中间结果更新：添加字符串列表的最后一项并记号化。

在文件 Lexical.h 第 501 行定义.

## ◆ update_current

bool NPL::ByteParser::update_current = {}

private

自从
  build 890

在文件 Lexical.h 第 531 行定义.

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

- Lexical.h
- Lexical.cpp