Index: BasicCompiler_Common/Class.cpp
===================================================================
--- BasicCompiler_Common/Class.cpp	(revision 16)
+++ BasicCompiler_Common/Class.cpp	(revision 17)
@@ -16,5 +16,5 @@
 
 
-CMember::CMember(CClass *pobj_c,DWORD access,char *buffer,int NowLine){
+CMember::CMember( CClass *pobj_c, DWORD access, bool isConst, char *buffer, int NowLine ){
 	extern int cp;
 
@@ -46,4 +46,7 @@
 	dwAccess=access;
 
+	//定数扱いかどうか
+	this->isConst = isConst;
+
 	//初期データ
 	InitBuf=(char *)HeapAlloc(hHeap,0,lstrlen(init_buf)+1);
@@ -64,4 +67,7 @@
 	name=(char *)HeapAlloc(hHeap,0,lstrlen(pobj->name)+1);
 	lstrcpy(name,pobj->name);
+
+	//定数扱いかどうか
+	isConst = pobj->isConst;
 
 	//SubScripts
@@ -81,4 +87,8 @@
 	if(InitBuf) HeapDefaultFree(InitBuf);
 	if(ConstractParameter) HeapDefaultFree(ConstractParameter);
+}
+
+bool CMember::IsConst(){
+	return isConst;
 }
 
@@ -159,4 +169,6 @@
 	this->name=(char *)HeapAlloc(hHeap,0,lstrlen(name)+1);
 	lstrcpy(this->name,name);
+
+	isCompilingConstructor = 0;
 }
 CClass::~CClass(){
@@ -202,12 +214,12 @@
 	}
 }
-void CClass::AddMember(DWORD dwAccess,char *buffer){
-	ppobj_Member=(CMember **)HeapReAlloc(hHeap,0,ppobj_Member,(iMemberNum+1)*sizeof(CMember *));
-	ppobj_Member[iMemberNum]=new CMember(this,dwAccess,buffer);
+void CClass::AddMember( DWORD dwAccess, bool isConst, char *buffer ){
+	ppobj_Member = (CMember **)HeapReAlloc( hHeap, 0, ppobj_Member, ( iMemberNum + 1 ) * sizeof(CMember *) );
+	ppobj_Member[iMemberNum] = new CMember( this, dwAccess, isConst, buffer );
 	iMemberNum++;
 }
-void CClass::AddStaticMember(DWORD dwAccess,char *buffer,int NowLine){
+void CClass::AddStaticMember( DWORD dwAccess, bool isConst, char *buffer, int NowLine ){
 	ppobj_StaticMember=(CMember **)HeapReAlloc(hHeap,0,ppobj_StaticMember,(iStaticMemberNum+1)*sizeof(CMember *));
-	ppobj_StaticMember[iStaticMemberNum]=new CMember(this,dwAccess,buffer,NowLine);
+	ppobj_StaticMember[iStaticMemberNum]=new CMember( this, dwAccess, isConst, buffer, NowLine );
 	iStaticMemberNum++;
 }
@@ -380,4 +392,19 @@
 
 	return ppArray_si;
+}
+
+// コンストラクタのコンパイルを開始
+void CClass::NotifyStartConstructorCompile(){
+	isCompilingConstructor = true;
+}
+
+//コンストラクタのコンパイルを終了
+void CClass::NotifyFinishConstructorCompile(){
+	isCompilingConstructor = false;
+}
+
+//コンストラクタをコンパイル中かどうかを判別
+bool CClass::IsCompilingConstructor(){
+	return isCompilingConstructor;
 }
 
@@ -700,11 +727,5 @@
 
 			//インターフェイス名を取得
-			for(i2=0;;i++,i2++){
-				if(IsCommandDelimitation(basbuf[i])){
-					temporary[i2]=0;
-					break;
-				}
-				temporary[i2]=basbuf[i];
-			}
+			GetIdentifierToken( temporary, basbuf, i );
 
 			pobj_c=pobj_DBClass->check(temporary);
@@ -897,11 +918,5 @@
 
 			//クラス名を取得
-			for(i2=0;;i++,i2++){
-				if(IsCommandDelimitation(basbuf[i])){
-					temporary[i2]=0;
-					break;
-				}
-				temporary[i2]=basbuf[i];
-			}
+			GetIdentifierToken( temporary, basbuf, i );
 
 			pobj_c=pobj_DBClass->check(temporary);
@@ -1051,4 +1066,11 @@
 				else bStatic=0;
 
+				//Const修飾子
+				bool isConst = false;
+				if( basbuf[i] == 1 && basbuf[i + 1] == ESC_CONST ){
+					isConst = true;
+					i += 2;
+				}
+
 				if(basbuf[i]==1&&(
 					basbuf[i+1]==ESC_ABSTRACT||basbuf[i+1]==ESC_VIRTUAL||basbuf[i+1]==ESC_OVERRIDE||
@@ -1128,10 +1150,10 @@
 						//静的メンバを追加
 						cp=i;	//エラー用
-						pobj_c->AddStaticMember(dwAccess,temporary,i);
+						pobj_c->AddStaticMember( dwAccess, isConst, temporary, i);
 					}
 					else{
 						//メンバを追加
 						cp=i;	//エラー用
-						pobj_c->AddMember(dwAccess,temporary);
+						pobj_c->AddMember( dwAccess, isConst, temporary );
 
 
Index: BasicCompiler_Common/Class.h
===================================================================
--- BasicCompiler_Common/Class.h	(revision 16)
+++ BasicCompiler_Common/Class.h	(revision 17)
@@ -19,4 +19,5 @@
 
 class CMember{
+	bool isConst;
 public:
 	char *name;
@@ -32,8 +33,10 @@
 
 
-	CMember(CClass *pobj_c,DWORD access,char *buffer,int NowLine=-1);
-	CMember(CMember *pobj);
+	CMember( CClass *pobj_c, DWORD access, bool idConst, char *buffer, int NowLine=-1 );
+	CMember( CMember *pobj );
 	CMember();
 	~CMember();
+
+	bool IsConst();
 
 
@@ -91,6 +94,6 @@
 	~CClass();
 
-	void AddMember(DWORD dwAccess,char *buffer);
-	void AddStaticMember(DWORD dwAccess,char *buffer,int NowLine);
+	void AddMember( DWORD dwAccess, bool idConst, char *buffer );
+	void AddStaticMember( DWORD dwAccess, bool isConst, char *buffer, int NowLine );
 	void AddMethod(SUBINFO *psi,DWORD dwAccess,BOOL bAbstract,BOOL bVirtual);
 	void AddStaticMethod(SUBINFO *psi,DWORD dwAccess);
@@ -112,4 +115,13 @@
 	//オペレータ関数の取得
 	SUBINFO **GetOperatorSubInfo(BYTE idCalc,int &num);
+
+
+	//コンストラクタをコンパイルしているかどうかのチェックフラグ
+private:
+	bool isCompilingConstructor;
+public:
+	void NotifyStartConstructorCompile();
+	void NotifyFinishConstructorCompile();
+	bool IsCompilingConstructor();
 
 
Index: BasicCompiler_Common/Compile.cpp
===================================================================
--- BasicCompiler_Common/Compile.cpp	(revision 16)
+++ BasicCompiler_Common/Compile.cpp	(revision 17)
@@ -48,4 +48,18 @@
 //With情報
 WITHINFO WithInfo;
+
+
+///////////////////////////////////////////////////
+// トークンを取得
+///////////////////////////////////////////////////
+void GetIdentifierToken( char *token, const char *source, int &pos ){
+	for( int i=0; ; i++, pos++ ){
+		if( ! IsVariableChar( source[pos] ) ){
+			token[i] = 0;
+			break;
+		}
+		token[i] = source[pos];
+	}
+}
 
 
Index: BasicCompiler_Common/common.h
===================================================================
--- BasicCompiler_Common/common.h	(revision 16)
+++ BasicCompiler_Common/common.h	(revision 17)
@@ -575,4 +575,5 @@
 
 //Compile.cpp
+void GetIdentifierToken( char *token, const char *source, int &pos );
 int JumpStatement(const char *source, int &pos);
 void DebugVariable(void);
Index: BasicCompiler_Common/error.cpp
===================================================================
--- BasicCompiler_Common/error.cpp	(revision 16)
+++ BasicCompiler_Common/error.cpp	(revision 17)
@@ -142,5 +142,5 @@
 	if(num==59) sprintf(msg,"マニフェスト ファイル \"%s\" の読み込みに失敗。",KeyWord);
 	if(num==60) lstrcpy(msg,"Staticステートメントはグローバル領域では使用できません。");
-	if(num==61) sprintf(msg,"\"%s\" Const定義の変数には書き込めません。",KeyWord);
+	if(num==61) sprintf(msg,"\"%s\" は定数です。書き込めません。",KeyWord);
 
 
