1 // Scheme構文における文字を判定するためのLexerです。
2 // ここで定義されるLexerは、IPartOfLexerから派生しており、以下の条件
3 // をもってLexerDispatcherからディスパッチします。
4 // :検索対象文字列の先頭 = #\ の場合:
5 #ifndef _UTAKATA_SRC_LEXER_INNER_HEX_LEXER_H_
6 #define _UTAKATA_SRC_LEXER_INNER_HEX_LEXER_H_
15 // Scheme構文におけるHexValueに該当する文字列であるかどうかを検査し、
17 class InnerHexValueLexer {
20 InnerHexValueLexer() {}
21 virtual ~InnerHexValueLexer() {}
23 // 受け取った文字列すべてが0-9a-fA-Fの範囲内であり、かつ16進数として
24 // 変換した値が、Schemeで基底されている範囲外ではない場合、resultに
25 // 文字列の16進数変換後の値を設定し、trueを返します。
26 // 16進数の文字列の範囲外である場合、falseが返されます。
27 // 変換後の値が、Unicodeの範囲外である場合、例外が送出されます。
28 virtual bool Lex(const unicode::UniString& str, unsigned int* result);
31 // 渡したunicodeの数値表現を返します。渡される値は、0-9a-fA-Fの
33 int ConvertHexValueFromUnicode(const unicode::UniChar& code);
38 #endif /* _UTAKATA_SRC_LEXER_INNER_HEX_LEXER_H_ */