YSTest: NPL::DelimitedByteParser类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

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

保存分隔符中间结果字节解析器。 更多...

`#include <Lexical.h>`

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

## Public 成员函数

| DelimitedByteParser (LexicalAnalyzer &lexer, pmr::polymorphic_allocator< yimpl(byte)> a)
| DelimitedByteParser (const DelimitedByteParser &parse)
| DefDeMoveCtor (DelimitedByteParser) PDefHOp(DelimitedByteParser &
| 复制赋值：使用参数的分配器构造的副本和交换操作。 更多...
const DelimitedByteParser &parse | ImplRet (ystdex::copy_and_swap(*this, parse)) DefDeMoveAssignment(DelimitedByteParser) template< typename... _tParams > inline void operator()(char c
| 解析单个字符并添加至字符解析结果。 更多...
| if (lexer.FilterChar(c, GetBufferRef(), yforward(args)...))
| DefGetter (const ynothrow, const vector< size_t > &, Quotes, qlist) LexemeList GetResult() const
| 取解析结果。 更多...
static sv | front () !

## 静态 Public 成员函数

static void | DecomposeString (LexemeList &, bool, string_view)
| 把拆分非分隔符为边界的字符串后的词素列表添加到参数指定的列表。 更多...
static | PDefH (void, DecomposeString, LexemeList &lst, string_view sv) ImplExpr(DecomposeString(lst

## Public 属性

const DelimitedByteParser &parse _tParams && | args
const string buffer LexicalAnalyzer lexer_ref char ld const ynothrow | reserve

## Private 属性

vector< size_t > | qlist {}
| 保存的字符解析中间结果。 更多...
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)

## 详细描述

保存分隔符中间结果字节解析器。

参见
  ByteParser

自从
  build 890

处理逻辑和 ByteParser 一致的解析器，但解析添加字符时先保存中间结果。 保存的中间结果是分隔符（非转义的引号）出现的位置的有序列表。

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

## 构造及析构函数说明

## ◆ DelimitedByteParser() [1/2]

NPL::DelimitedByteParser::DelimitedByteParser | ( | LexicalAnalyzer & | lexer,
|  | pmr::polymorphic_allocator< yimpl(byte)> | a
| ) |  |

inline

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

## ◆ DelimitedByteParser() [2/2]

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

inline

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

## 成员函数说明

## ◆ DecomposeString()

void NPL::DelimitedByteParser::DecomposeString | ( | LexemeList & | lst,
|  | bool | not_quoted,
|  | string_view | sv
| ) |  |

static

把拆分非分隔符为边界的字符串后的词素列表添加到参数指定的列表。

注解
  第一参数指定列表，最后一个参数指定源字符串。

参见
  Decompose

注解
  第二参数指定直接分隔，第三参数指定源字符串。

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

引用了 NPL::Decompose(), ystdex::list< _type, _tAlloc >::end(), ystdex::list< _type, _tAlloc >::get_allocator(), ystdex::list< _type, _tAlloc >::push_back() , 以及 ystdex::list< _type, _tAlloc >::splice().

函数调用图:

## ◆ DefDeMoveCtor()

NPL::DelimitedByteParser::DefDeMoveCtor | ( | DelimitedByteParser |  | ) | &

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

## ◆ DefGetter()

NPL::DelimitedByteParser::DefGetter | ( | const | ynothrow,
|  | const vector< size_t > & | ,
|  | Quotes | ,
|  | qlist |
| ) |  | const

取解析结果。

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

## ◆ front()

static sv NPL::DelimitedByteParser::front | ( |  | ) |

## ◆ if()

NPL::DelimitedByteParser::if | ( | lexer. | FilterCharc, GetBufferRef(), yforward(args)... | ) |

inline

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

引用了 CHRLib::c.

## ◆ ImplRet()

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

解析单个字符并添加至字符解析结果。

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

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

## ◆ PDefH()

static NPL::DelimitedByteParser::PDefH | ( | void | ,
|  | DecomposeString | ,
|  | LexemeList & | lst,
|  | string_view | sv
| ) |  |

static

注解
  字符串中第一个字符是引号时，视为字符串以分隔符为边界。

## 类成员变量说明

## ◆ args

const DelimitedByteParser& parse _tParams&& NPL::DelimitedByteParser::args

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

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

## ◆ qlist

vector<size_t> NPL::DelimitedByteParser::qlist {}

private

保存的字符解析中间结果。

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

## ◆ reserve

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

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

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

- Lexical.h
- Lexical.cpp