OSDN Git Service

-- 数値の解析を行なうためのnumber_lexerを新設。
[simplecms/utakata.git] / sublexer_impl.h
index df59d8b..74fd163 100644 (file)
@@ -161,79 +161,6 @@ namespace utakata {
             smart_ptr<utakata::utf8_string::UTF8String> str_;
         };
 
-        /////////////////////////////////////////////////////////////////
-        // <number>がそれぞれのradixに基づいて解析する必要があるため、 //
-        // それぞれに対して特化できるようなテンプレートを用意する。    //
-        /////////////////////////////////////////////////////////////////
-
-        template<class T>
-        class NumberLexerTemp
-        {
-        public:
-            NumberLexerTemp() : checker_() {}
-            virtual ~NumberLexerTemp() {}
-
-            smart_ptr<lexeme::ILexeme> lex(smart_ptr<utakata::utf8::UTF8InputStream> stream,
-                                                    smart_ptr<ISubLexer>& next,
-                                                    bool exactness)
-                {
-                    // 全体的な流れは同一であり、基数の違いによる
-                    // 数値の違い程度しか問題は発生しない。
-                    utakata::lexer_delimiter::Normal nor;
-                    utakata::utf8_string::UTF8String number;
-                    while (true) {
-                        // デリミタまで読んでしまう。
-                        if (stream->isEOF())
-                        {
-                            throw LexException("illegal number format");
-                        }
-                        
-                        utakata::utf8_string::UTF8Char ch(stream->read());
-                        if (nor(ch))
-                        {
-                            stream->unget(ch.getBytes());
-                            break;
-                        }
-
-                        number += ch;
-                    }
-
-                    // 読出したnumberを解析してNumberオブジェクトとして返す。
-                    return lexNumber_(number);
-                }
-
-        private:
-
-            smart_ptr<lexeme::ILexeme> lexNumber_(const utakata::utf8_string::UTF8String& number)
-                {
-                    // デリミタまでを取得したデータを、実際の数値オブジェクトとして解釈させる。
-                    // 解釈できなかった場合、字句構文エラーとして扱う。
-                    utakata::utf8_string::UTF8String::const_utf8iterator it = number.begin(),
-                        end = number.end();
-
-                    int status = INIT;
-                    while (begin != end) {
-
-                        switch (status)
-                        {
-                        case INIT:
-                        {
-                            // 非終端記号で言えば<complex>に当たる。
-                            // 全ての整数は原則として +-0iの虚数と等しいため、そのようになる。
-                            
-                        // 一文字単位で調べていく。checker_に該当するデータの場合には、
-                        if (begin->toUTF16Code() == '+' ||
-                            begin->toUTF16Code() == '-')
-                        {
-                            // 符号である場合。
-                        }
-                        
-                    
-                }
-
-            // チェックを行うための関数オブジェクト。
-            T checker_;
-        };
     };
 
 };