OSDN Git Service

Makefile を Rakefile に切り替えた。
[simplecms/utakata.git] / src / lexeme_id.h
diff --git a/src/lexeme_id.h b/src/lexeme_id.h
deleted file mode 100755 (executable)
index 8fb7cd5..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _LEXEME_ID_H_
-#define _LEXEME_ID_H_
-
-#include <string>
-
-// utakata::lexemeで利用される全てのIDを集約するヘッダ。
-// すべてのIDは、以下のlexeme::LexemeIDから利用するようにする。
-
-namespace utakata {
-
-namespace lexeme {
-
-class LexemeID {
- public:
-  enum private_LEXEMEID_ {
-    EOS             = -1,               // EOF
-    OPENPARENTHESIS,                    // ([
-    STRING,                             // <STRING>
-    CLOSEPARENTHESIS,                   // ])
-    BACKQUOTE,                          // `
-    DOT,                                // .
-    QUOTE,                              // '
-    UNQUOTE,                            // ,
-    UNQUOTESPLICING,                    // ,@
-    SYNTAX,                             // #'
-    QUASISYNTAX,                        // #`
-    UNSYNTAX,                           // #,
-    UNSYNTAXSPLICING,                   // #,@
-    IDENTIFIER,                         // <IDENTIFIER>
-    NUMBER,                             // <NUMBER>
-    CHARACTOR,                          // <CHARACTOR>
-    BOOLEAN,                            // <BOOLEAN>
-    BYTEVECTOR,                         // #VU8
-    VECTOR,                             // #(
-  };
-
- private:
-
-  typedef private_LEXEMEID_ LEXEMEID_;
-  LEXEMEID_ S_;
-
-  template<LEXEMEID_> class Literal;
-
- public:
-
-  template<LEXEMEID_ S>
-  explicit LexemeID(const Literal<S>&) : S_(S) {}
-
-  LEXEMEID_ toEnum() const {return S_;}
-
-  friend bool operator==(LexemeID s, LexemeID t) {return s.S_ == t.S_;}
-  friend bool operator!=(LexemeID s, LexemeID t) {return !(s == t);}
-
-  static const Literal<OPENPARENTHESIS>  openParenthesis;
-  static const Literal<STRING>           string;
-  static const Literal<CLOSEPARENTHESIS> closeParenthesis;
-  static const Literal<BACKQUOTE>        backquote;
-  static const Literal<DOT>              dot;
-  static const Literal<QUOTE>            quote;
-  static const Literal<UNQUOTE>          unquote;
-  static const Literal<UNQUOTESPLICING>  unquoteSplicing;
-  static const Literal<SYNTAX>           syntax;
-  static const Literal<QUASISYNTAX>      quasiSyntax;
-  static const Literal<UNSYNTAX>         unsyntax;
-  static const Literal<UNSYNTAXSPLICING> unsyntaxSplicing;
-  static const Literal<IDENTIFIER>       identifier;
-  static const Literal<NUMBER>           number;
-  static const Literal<CHARACTOR>        charactor;
-  static const Literal<BOOLEAN>          boolean;
-  static const Literal<BYTEVECTOR>       byteVector;
-  static const Literal<VECTOR>           vector;
-  static const Literal<EOS>              eos;
-};
-
-// 内部クラスかつ、単に該当するEnumを返すだけのクラステンプレート
-template<LexemeID::private_LEXEMEID_ S>
-class LexemeID::Literal : private LexemeID {
- public:
-
-  LexemeID::private_LEXEMEID_ toEnum() const {return S;}
-
- private:
-
-  friend class LexemeID;
-  // 暗黙的なコピーコンストラクタを利用する。
-  Literal() : LexemeID(*this) {}
-  ~Literal() {}
-
-  void* operator new(size_t size);
-  void operator delete(void* ptr);
-  void operator=(const Literal& literal);
-  void* operator&() const;              // NOLINT
-};
-};
-};
-
-#endif /* _LEXEME_ID_H_ */