diff --git a/compiler/cpp/src/generate/t_xsd_generator.cc b/compiler/cpp/src/generate/t_xsd_generator.cc
index 4c31d6c..fb39753 100644
--- a/compiler/cpp/src/generate/t_xsd_generator.cc
+++ b/compiler/cpp/src/generate/t_xsd_generator.cc
@@ -26,8 +26,23 @@
   indent(s_xsd_types_) <<
     "<xsd:simpleType name=\"" << ttypedef->get_name() << "\">" << endl;
   indent_up();
-  indent(s_xsd_types_) <<
-    "<xsd:restriction base=\"" << type_name(ttypedef->get_type()) << "\" />" << endl;
+  if (ttypedef->get_type()->is_string() && ((t_base_type*)ttypedef->get_type())->is_string_enum()) {
+    indent(s_xsd_types_) <<
+      "<xsd:restriction base=\"" << type_name(ttypedef->get_type()) << "\">" << endl;
+    indent_up();
+    const vector<string>& values = ((t_base_type*)ttypedef->get_type())->get_string_enum_vals();
+    vector<string>::const_iterator v_iter;
+    for (v_iter = values.begin(); v_iter != values.end(); ++v_iter) {
+      indent(s_xsd_types_) <<
+        "<xsd:enumeration value=\"" << (*v_iter) << "\" />" << endl;
+    }
+    indent_down();
+    indent(s_xsd_types_) <<
+      "</xsd:restriction>" << endl;
+  } else {
+    indent(s_xsd_types_) <<
+      "<xsd:restriction base=\"" << type_name(ttypedef->get_type()) << "\" />" << endl;
+  }
   indent_down();
   indent(s_xsd_types_) <<
     "</xsd:simpleType>" << endl << endl;
diff --git a/compiler/cpp/src/parse/t_base_type.h b/compiler/cpp/src/parse/t_base_type.h
index b0d41d6..c9548bb 100644
--- a/compiler/cpp/src/parse/t_base_type.h
+++ b/compiler/cpp/src/parse/t_base_type.h
@@ -28,7 +28,8 @@
   t_base_type(std::string name, t_base base) :
     t_type(name),
     base_(base),
-    string_list_(false) {}
+    string_list_(false),
+    string_enum_(false) {}
     
   t_base get_base() const {
     return base_;
@@ -50,13 +51,32 @@
     return base_ == TYPE_STRING && string_list_;
   }
 
+  void set_string_enum(bool val) {
+    string_enum_ = true;
+  }
+
+  bool is_string_enum() const {
+    return base_ == TYPE_STRING && string_enum_;
+  }
+
+  void add_string_enum_val(std::string val) {
+    string_enum_vals_.push_back(val);
+  }
+
+  const std::vector<std::string>& get_string_enum_vals() const {
+    return string_enum_vals_;
+  }
+
   bool is_base_type() const {
     return true;
   }
     
  private:
   t_base base_;
+
   bool string_list_;
+  bool string_enum_;
+  std::vector<std::string> string_enum_vals_;
 };
 
 #endif
diff --git a/compiler/cpp/src/thriftl.ll b/compiler/cpp/src/thriftl.ll
index 593df10..abda14f 100644
--- a/compiler/cpp/src/thriftl.ll
+++ b/compiler/cpp/src/thriftl.ll
@@ -77,6 +77,7 @@
 "double"        { return tok_double;        }
 "string"        { return tok_string;        }
 "slist"         { return tok_slist;         }
+"senum"         { return tok_senum;         }
 "map"           { return tok_map;           }
 "list"          { return tok_list;          }
 "set"           { return tok_set;           }
diff --git a/compiler/cpp/src/thrifty.yy b/compiler/cpp/src/thrifty.yy
index 19f1ba8..519f20d 100644
--- a/compiler/cpp/src/thrifty.yy
+++ b/compiler/cpp/src/thrifty.yy
@@ -33,6 +33,7 @@
   double         dconst;
   bool           tbool;
   t_type*        ttype;
+  t_base_type*   tbase;
   t_typedef*     ttypedef;
   t_enum*        tenum;
   t_enum_value*  tenumv;
@@ -82,6 +83,7 @@
 %token tok_byte
 %token tok_string
 %token tok_slist
+%token tok_senum
 %token tok_i16
 %token tok_i32
 %token tok_i64
@@ -136,6 +138,10 @@
 %type<tenum>     EnumDefList
 %type<tenumv>    EnumDef
 
+%type<ttypedef>  Senum
+%type<tbase>     SenumDefList
+%type<id>        SenumDef
+
 %type<tconst>    Const
 %type<tconstv>   ConstValue
 %type<tconstv>   ConstList
@@ -304,6 +310,13 @@
         g_program->add_enum($1);
       }
     }
+| Senum
+    {
+      pdebug("TypeDefinition -> Senum");
+      if (g_parse_mode == PROGRAM) {
+        g_program->add_typedef($1);
+      }
+    }
 | Struct
     {
       pdebug("TypeDefinition -> Struct");
@@ -341,6 +354,13 @@
       $$ = NULL; 
     }
     
+CommaOrSemicolonOptional:
+  ','
+    {}
+| ';'
+    {}
+|
+    {}
 
 Enum:
   DocTextOptional tok_enum tok_identifier '{' EnumDefList '}'
@@ -353,14 +373,6 @@
       }
     }
 
-CommaOrSemicolonOptional:
-  ','
-    {}
-| ';'
-    {}
-|
-    {}
-
 EnumDefList:
   EnumDefList EnumDef
     {
@@ -396,6 +408,37 @@
       }
     }
 
+Senum:
+  DocTextOptional tok_senum tok_identifier '{' SenumDefList '}'
+    {
+      pdebug("Senum -> tok_senum tok_identifier { SenumDefList }");
+      $$ = new t_typedef(g_program, $5, $3);
+      if ($1 != NULL) {
+        $$->set_doc($1);
+      }
+    }
+
+SenumDefList:
+  SenumDefList SenumDef
+    {
+      pdebug("SenumDefList -> SenumDefList SenumDef");
+      $$ = $1;
+      $$->add_string_enum_val($2);
+    }
+|
+    {
+      pdebug("SenumDefList -> ");
+      $$ = new t_base_type("string", t_base_type::TYPE_STRING);
+      $$->set_string_enum(true);
+    }
+
+SenumDef:
+  tok_literal CommaOrSemicolonOptional
+    {
+      pdebug("SenumDef -> tok_literal");
+      $$ = $1;
+    }
+
 Const:
   tok_const FieldType tok_identifier '=' ConstValue CommaOrSemicolonOptional
     {
