OSDN Git Service

lexeme_impl -- makeEOF、及びEOFToken、makeString, Stringの追加
[simplecms/utakata.git] / lexeme_impl.cpp
index 6c33a27..058b473 100644 (file)
@@ -1,7 +1,6 @@
 #include <vector>
 #include <string>
 
-
 #include "lexeme_impl.h"
 #include "lexeme_id.h"
 
@@ -14,6 +13,11 @@ smart_ptr<ILexeme> utakata::lexeme::makeOpenParen()
     return smart_ptr<ILexeme>(new OpenParen());
 }
 
+smart_ptr<ILexeme> utakata::lexeme::makeEOF()
+{
+    return smart_ptr<ILexeme>(new EOFToken());
+}
+
 smart_ptr<ILexeme> utakata::lexeme::makeCloseParen()
 {
     return smart_ptr<ILexeme>(new CloseParen());
@@ -39,6 +43,11 @@ smart_ptr<ILexeme> utakata::lexeme::makeIdentifier(const utakata::utf8_string::U
     return smart_ptr<ILexeme>(new Identifier(str));
 }
 
+smart_ptr<ILexeme> utakata::lexeme::makeString(const utakata::utf8_string::UTF8String& str)
+{
+    return smart_ptr<ILexeme>(new String(str));
+}
+
 smart_ptr<ILexeme> utakata::lexeme::makeUnquoteSplicing(const utakata::utf8_string::UTF8String& str)
 {
     return smart_ptr<ILexeme>(new UnquoteSplicing());
@@ -122,6 +131,23 @@ smart_ptr<utakata::utf8_string::UTF8String> OpenParen::toString() const
     return p;
 }
 
+/////////
+// EOF //
+/////////
+
+int EOFToken::getID() const
+{
+    return IDProxy()->eof;
+}
+
+smart_ptr<utakata::utf8_string::UTF8String> EOFToken::toString() const
+{
+    smart_ptr<utakata::utf8_string::UTF8String> p(new utf8_string::UTF8String);
+    *p += std::string("");
+    return p;
+}
+
+
 ////////////////
 // CloseParen //
 ////////////////
@@ -300,6 +326,24 @@ smart_ptr<utakata::utf8_string::UTF8String> Identifier::toString() const
     return str_;
 }
 
+/////////////
+// String  //
+/////////////
+
+String::String(const utakata::utf8_string::UTF8String& str) :
+    str_(new utakata::utf8_string::UTF8String(str))
+{}
+
+int String::getID() const
+{
+    return IDProxy()->string;
+}
+
+smart_ptr<utakata::utf8_string::UTF8String> String::toString() const
+{
+    return str_;
+}
+
 ////////////
 // Number //
 ////////////