1 // TermLexerのテンプレートパラメータとして渡すための関数オブジェクトの
3 // 用途に応じて、TermLexerに各テンプレートパラメータを渡し、作成します。
4 #ifndef _UTAKATA_SRC_LEXER_TERM_CHECKER_H_
5 #define _UTAKATA_SRC_LEXER_TERM_CHECKER_H_
16 // 通常のデリミタとして処理するべきで文字であるか調査します。
19 // 渡された文字が以下の文字である場合、デリミタと判定されます。
20 // ( ) [ ] " ; # に加え、WhitespaceCheckerがtrueを返す文字
21 // 渡されたreaderの読み出し位置は更新されません。
22 bool operator()(reader::EncodingReader* reader, unsigned int* size);
26 // 空白として認識される文字であるかどうか調査します。
28 // 空白として認識されるデータである場合、trueを返します。
29 // 空白として認識される文字は以下になります。
30 // --------------------
37 // --------------------
38 // 渡されたreaderの読み出し位置は更新されません。
39 bool operator()(reader::EncodingReader* reader, unsigned int* size);
43 // 改行と認識される文字であるかどうかを調査します。但し、改行は複数の
44 // 文字である場合があるため、chの次の位置の文字列も必要となります。
47 // 渡されたreaderより、改行文字が先頭である場合、trueを返します。
48 // 渡されたreaderの読み出し位置は更新されません。
49 bool operator()(reader::EncodingReader* reader, unsigned int* size);
52 class StringDoubleQuote {
53 // 文字列を分割するためのデリミタであるかどうか調査します。
56 // 渡されたreaderの先頭が " である場合、trueを返します。
57 // 渡されたreaderの読み出し位置は更新されません。
58 bool operator()(reader::EncodingReader* reader, unsigned int* size);
62 // 16進数で利用可能な文字の範囲であるかどうか調査します。
64 // 16進数で利用可能とされる文字の範囲である場合、trueを返します。
65 // [a-fA-F0-9] が該当し、大文字と小文字の区別は行いません。
66 // 渡されたreaderの読み出し位置は更新されません。
67 bool operator()(reader::EncodingReader* reader, unsigned int* size);
70 class HexValueChecker {
72 // 渡された文字が、HexValueの領域内であるかどうかを返します。
73 bool operator()(const unicode::UniChar& ch);
79 #endif /* _UTAKATA_SRC_LEXER_TERM_CHECKER_H_ */