OSDN Git Service

lexerに関係するソースをsrc/lexer配下に移動。
[simplecms/utakata.git] / src / delimiter.cpp
diff --git a/src/delimiter.cpp b/src/delimiter.cpp
deleted file mode 100755 (executable)
index 5b7206f..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-#include "delimiter.h"
-#include "reader.h"
-#include "unicode.h"
-
-using namespace utakata::lexer_delimiter;
-
-bool Normal::operator()(const utakata::unicode::UniChar& ch)
-{
-    // 渡された文字がデリミタかどうかを返す。
-        // 渡された文字がデリミタかどうかを判別する。
-    // このクラスガ判別するデリミタは、
-    // <delimiter> - ( | ) | [ | ] | " | ; | #
-    //          | <whitespace>
-    // <whitespace> - <character tabulation>
-    //          | <linefeed> | <line tabulation> | <form feed>
-    //          | <carriage return> | <next line>
-    //          | <any character whose category is Zs, Zl, or Zp>
-    // に該当するデリミタ。
-    // このデリミタは、<boolean>,<string>,<number>, .<character>
-    // を解析している間に出現するものであり、それ以外の場合は、
-    // デリミタとして読み飛ばしてはならない。
-
-    switch (ch.getRawCode())
-    {
-    case '(':
-    case '[':
-    case ')':
-    case ']':
-    case '"':
-    case ';':
-    case '#':
-        return true;
-    default:
-        // それ以外の場合、whitespaceである可能正があるため、そちらはそちら
-        // で読みとばす。
-        return Whitespace()(ch);
-    }
-}
-
-bool Whitespace::operator()(const utakata::unicode::UniChar& ch)
-{
-    switch (ch.getRawCode())
-    {
-    case '\r':                  // carriage return 復帰
-    case '\n':                  // linefeed  改行
-    case ' ':                   // space 空白
-    case '\t':                  // tab タブ
-    case '\v':                  // vertical tab 垂直タブ
-    case '\f':                  // page 改ページ
-        return true;
-    default:
-        return false;
-    }
-}
-
-bool LineEnding::operator()(const utakata::unicode::UniChar& ch,
-                            smart_ptr<utakata::reader::StreamReader>& strm)
-{
-    // 今の文字と、次の文字とを利用してチェックする。
-    switch (ch.getRawCode())
-    {
-    case '\n': return true;
-    case '\r':
-        //次の文字が必要になる。
-    {
-        utakata::unicode::UniChar ch2(strm->peek());
-        if (ch2.getRawCode() == '\n')
-        {
-            strm->read();
-        }
-        return true;
-    }
-    default:
-        return false;
-    }
-}
-
-bool HexValue::operator()(const utakata::unicode::UniChar& ch)
-{
-    if (ch.getRawCode() >= 'a' && ch.getRawCode() <= 'f')
-    {
-        return true;
-    }
-    else if (ch.getRawCode() >= 'A' && ch.getRawCode() <= 'F')
-    {
-        return true;
-    }
-
-    // 最後に数値だけの判定を返す。
-    return utakata::unicode::is_numeric(ch);
-}
-
-bool String::operator()(const utakata::unicode::UniChar& ch)
-{
-    if (ch.getRawCode() == '"')
-    {
-        return true;
-    }
-    return false;
-}
-
-bool Prefix::operator()(const utakata::unicode::UniString& str)
-{
-    if (str.size() <= 2)
-    {
-        return false;
-    }
-    
-    utakata::unicode::UniChar s = str[0];
-    utakata::unicode::UniChar s1 = str[1];
-    if (s.getRawCode() == '#' && (s1 == 'b' || s1 == 'B' ||
-                                  s1 == 'o' || s1 == 'O' ||
-                                  s1 == 'x' || s1 == 'X' || 
-                                  s1 == 'd' || s1 == 'D')
-        )
-    {
-        return true;
-    }
-    return false;
-}
-
-bool Exactness::operator()(const utakata::unicode::UniString& str)
-{
-    if (str.size() <= 2)
-    {
-        return false;
-    }
-    
-    utakata::unicode::UniChar s = str[0];
-    utakata::unicode::UniChar s1 = str[1];
-
-    if (s.getRawCode() == '#' && (s1 == 'i' || s1 == 'I' ||
-                                  s1 == 'e' || s1 == 'E')
-        )
-    {
-        return true;
-    }
-    return false;
-}