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