Index: trunk/abdev/BasicCompiler_Common/Intermediate_Step1.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/Intermediate_Step1.cpp	(revision 339)
+++ trunk/abdev/BasicCompiler_Common/Intermediate_Step1.cpp	(revision 340)
@@ -855,4 +855,10 @@
 						temporary[i2]=ESC_INHERITS;
 					}
+					else if( lstrcmpi( temporary + i3, "Implements" ) == 0 )
+					{
+						i2 = i3;
+						temporary[i2++] = 1;
+						temporary[i2] = ESC_IMPLEMENTS;
+					}
 					else if(lstrcmpi(temporary+i3,"Interface")==0){
 						i2=i3;
Index: trunk/abdev/BasicCompiler_Common/Intermediate_Step2.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/Intermediate_Step2.cpp	(revision 339)
+++ trunk/abdev/BasicCompiler_Common/Intermediate_Step2.cpp	(revision 340)
@@ -313,4 +313,5 @@
 
 			case ESC_INHERITS:
+			case ESC_IMPLEMENTS:
 			case ESC_VIRTUAL:
 			case ESC_OVERRIDE:
Index: trunk/abdev/BasicCompiler_Common/error.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/error.cpp	(revision 339)
+++ trunk/abdev/BasicCompiler_Common/error.cpp	(revision 340)
@@ -202,4 +202,5 @@
 	if(num==135) lstrcpy( msg, "クラスまたはインターフェイス以外の型を継承元として指定することはできません。" );
 	if(num==136) lstrcpy( msg, "非仮想関数に対してオーバーライドしようとしました。" );
+	if(num==137) lstrcpy(msg,"ImplementsはClass定義内の先頭に記述する必要があります。");
 
 	//Enum関連
Index: trunk/abdev/BasicCompiler_Common/include/Class.h
===================================================================
--- trunk/abdev/BasicCompiler_Common/include/Class.h	(revision 339)
+++ trunk/abdev/BasicCompiler_Common/include/Class.h	(revision 340)
@@ -294,8 +294,11 @@
 	bool IsInheritsInterface( const CClass *pInterfaceClass ) const;
 
-	//継承させる
+	// クラス継承
 	bool Inherits( const char *inheritNames, int nowLine );
 	bool InheritsClass( const CClass &inheritsClass, const Types &actualTypeParameters, int nowLine );
 	bool InheritsInterface( const CClass &inheritsClass, int nowLine );
+
+	// インターフェイス実装
+	bool Implements( const char *interfaceNames, int nowLine );
 
 	//メンバ、メソッドの追加
Index: trunk/abdev/BasicCompiler_Common/include/ver.h
===================================================================
--- trunk/abdev/BasicCompiler_Common/include/ver.h	(revision 339)
+++ trunk/abdev/BasicCompiler_Common/include/ver.h	(revision 340)
@@ -6,6 +6,6 @@
 // バージョン付加文字列
 #ifdef _AMD64_
-#define VER_INFO		"(x64) (rev.343)"
+#define VER_INFO		"(x64) (rev.351)"
 #else
-#define VER_INFO		"(rev.343)"
+#define VER_INFO		"(rev.351)"
 #endif
Index: trunk/abdev/BasicCompiler_Common/src/Class.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/src/Class.cpp	(revision 339)
+++ trunk/abdev/BasicCompiler_Common/src/Class.cpp	(revision 340)
@@ -398,4 +398,14 @@
 	return true;
 }
+
+bool CClass::Implements( const char *interfaceNames, int nowLine )
+{
+	Jenga::Common::Strings paramStrs;
+	SplitParameter( interfaceNames, paramStrs );
+
+	// TODO: 実装
+	return true;
+}
+
 CMember *CClass::CreateMember( Prototype::Accessibility accessibility, bool isConst, bool isRef, char *buffer, int nowLine )
 {
@@ -1273,4 +1283,9 @@
 					break;
 				}
+				else if( basbuf[i] == 1 && basbuf[i+1] == ESC_IMPLEMENTS )
+				{
+					SetError(137, NULL, i );
+					break;
+				}
 
 				sub_address=i;
@@ -1412,9 +1427,7 @@
 			}
 			else{
-				bool isInherits = false;
-				if(basbuf[i+1]==1&&basbuf[i+2]==ESC_INHERITS){
-					//継承を行う場合
-					isInherits = true;
-
+				if(basbuf[i+1]==1&&basbuf[i+2]==ESC_INHERITS)
+				{
+					// クラス継承先が指定されているとき
 					i += 3;
 					GetCommandToken( temporary, basbuf, i );
@@ -1425,11 +1438,19 @@
 					}
 				}
-
-				if( !isInherits ){
-					//Objectを継承する
+				else
+				{
+					// 何の指定もないときはObjectクラスを継承する
 					lstrcpy( temporary, "Object" );
 				}
-
 				pobj_c->Inherits( temporary, i );
+
+				if( basbuf[i+1] == 1 && basbuf[i+2] == ESC_IMPLEMENTS )
+				{
+					// インターフェイス実装を行う場合
+					i += 3;
+					GetCommandToken( temporary, basbuf, i );
+
+					pobj_c->Implements( temporary, i );
+				}
 			}
 InheritsError:
@@ -1448,4 +1469,9 @@
 				if(basbuf[i]==1&&basbuf[i+1]==ESC_INHERITS){
 					SetError(111,NULL,i);
+					break;
+				}
+				else if( basbuf[i] == 1 && basbuf[i+1] == ESC_IMPLEMENTS )
+				{
+					SetError(137, NULL, i );
 					break;
 				}
