9 namespace utf8_string {
19 // 文字列を保持するためのデータ型. たんにそのまま.
20 smart_ptr<utf8_string::UTF8String> str;
25 // 数値のデータの受け渡しを行うためのデータ型.
26 // 数値データは, それぞれ実数部分と虚数部分, そして
27 // 正確性と radix を定義する必要がある.
28 // radix = 10 ではない場合, 常に exact = true として振る舞う.
29 smart_ptr<utf8_string::UTF8String> real;
30 smart_ptr<utf8_string::UTF8String> imagin;
37 // Boolean を表すデータ. これでは bool 型の変数によって#t と#f を表現
40 smart_ptr<utf8_string::UTF8String> str;
45 // Charactor を構成するためのデータ.
46 // 実際には UTF8Char を利用すべきであるが, ここでは単に lexeme から
48 smart_ptr<utf8_string::UTF8String> spec;
54 smart_ptr<utf8_string::UTF8String> id;
60 // リテラルとして存在するデータの一部のみを
62 // このデータは, 実際には Lexeme と Object 間でのデータの受け渡しを
63 // 行うためのインタフェースとなっている.
64 // この上のlexemeによって、返される値が確定されると仮定するため、
67 smart_ptr<StringData> string;
68 smart_ptr<NumberData> number;
69 smart_ptr<BooleanData> boolean;
70 smart_ptr<CharactorData> charactor;
71 smart_ptr<SymbolData> symbol;
74 // 各データ入りのLiteralDataを返すヘルパー関数。
75 smart_ptr<LiteralData> makeString(const utf8_string::UTF8String& str);
76 smart_ptr<LiteralData> makeNumber(const utf8_string::UTF8String& real,
77 const utf8_string::UTF8String& imagin,
78 bool exact, bool radix);
79 smart_ptr<LiteralData> makeBoolean(const utf8_string::UTF8String& str,
81 smart_ptr<LiteralData> makeCharactor(const utf8_string::UTF8String& str);
82 smart_ptr<LiteralData> makeSymbol(const utf8_string::UTF8String& str);