1 // lexerによって作成された各トークンを格納するためのインターフェースです。
2 // 実体として存在し、内部では解釈された文字列と、tokenのタイプのみが
4 // 格納されたlexemeは、評価された時に改めて型にあった値に変更されます。
5 #ifndef _UTAKATA_SRC_LEXER_TOKEN_H_
6 #define _UTAKATA_SRC_LEXER_TOKEN_H_
8 #include "lib/smart_ptr.h"
19 // 各非終端記号を表すためのクラスです。このクラスは、各Lexerによって
20 // 作成され、一度作成された後は変更されることはありません。
21 // 実際にはこのクラスより、それぞれの値に評価されます。
52 Token() : string_(), type_(kUnToken) {}
53 Token(const unicode::UniString& lexeme_str, const TokenType type);
54 Token(const Token& other);
57 Token& operator=(const Token& rh);
59 // 各非終端記号などの型を表すenum値を返します。
60 const TokenType type() const {return type_;}
62 // それぞれの型を表すデータです。型によって内容は異なります。
63 const unicode::UniString& string() const {return *string_;}
67 akebono::smart_ptr<unicode::UniString> string_;
69 // lexemeの型を表すEnum値です。
75 #endif /* _UTAKATA_SRC_LEXER_TOKEN_H_ */