YSTest
PreAlpha_b400_20130424
The YSLib Test Project
|
词法分析器。 更多...
#include <Lexical.h>
Public 成员函数 | |
LexicalAnalyzer () | |
DefGetter (const ynothrow, const string &, Buffer, cbuf) DefGetter(const ynothrow | |
void | ParseByte (byte) |
list< string > | Literalize () const |
根据中间结果取字符串列表。 | |
Public 属性 | |
const list< size_t > | Quotes |
静态 Public 属性 | |
static yconstexpr size_t | MaxEscapeLength = 8 |
最大转义序列长度。 | |
Private 成员函数 | |
void | HandleEscape () |
void | PushEscape () |
Private 属性 | |
size_t | esc |
转义状态:表示是否正在处理的有效转义序列的长度。 | |
char | escs [MaxEscapeLength] |
有效转义序列。 | |
char | ld |
字面分隔符状态:表示正在处理字面量中的有效字符。 | |
string | cbuf |
字符解析中间结果。 | |
list< size_t > | qlist |
字符解析中间结果中非转义的引号出现的位置的有序列表。 | |
词法分析器。
以字节为基本单位的词法分析器。 接受字节输入迭代器的输入,结果存放于 string 中。 基本字符集的字符的值保证在区间 [0, 0x7F) 内。 可接受的单字符词法分隔符都保证在基本字符集内。 输出规则(按优先顺序): 断行连接:反斜杠之后紧接换行符的双字符序列视为续行符,会被删除; 转义:转义序列替换为被转义字符; 字面量:分析至未被转义的单引号或双引号后进入字面量分析状态,无视以下规则, 直接逐字节输出原始输入,直至遇到对应的另一个引号。 窄字符空白符替换:单字节空格、水平/垂直制表符、换行符 被替换为单一空格;回车符会被忽略; 原始输出:其它字符序列逐字节输出。 支持转义序列为 "\\" 、 "\a" 、 "\b" 、 "\f" 、 "\n" 、 "\r" 、 "\t" 和 "\v" 。 除以下说明外,转义序列语义参见 ISO C++11 (除 raw-string-literal 外); 其它转义序列由派生实现定义。 除了反斜杠转义外,其它转义仅适用于字面量。 反斜杠转义:连续两个反斜杠被替换为一个反斜杠; 引号转义:反斜杠之后紧接单引号或双引号时,反斜杠会被删除。
LexicalAnalyzer::LexicalAnalyzer | ( | ) |
在文件 Lexical.cpp 第 33 行定义.
|
private |
在文件 Lexical.cpp 第 38 行定义.
参考 cbuf,esc,escs,ld,MaxEscapeLength,PushEscape() , 以及 YAssert.
参考自 ParseByte().
list< string > LexicalAnalyzer::Literalize | ( | ) | const |
void LexicalAnalyzer::ParseByte | ( | byte | b | ) |
|
private |
在文件 Lexical.cpp 第 89 行定义.
参考 cbuf,esc,escs , 以及 yunseq().
参考自 HandleEscape() , 以及 ParseByte().
|
private |
|
private |
转义状态:表示是否正在处理的有效转义序列的长度。
参考自 HandleEscape(),ParseByte() , 以及 PushEscape().
|
private |
|
private |
|
static |
|
private |