Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Delegate.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Delegate.cpp	(revision 567)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Delegate.cpp	(revision 568)
@@ -9,5 +9,5 @@
 
 	// パラメータを解析
-	params.Analyze( paramStr.c_str(), sourceIndex );
+	ActiveBasic::Compiler::LexicalAnalyzer::AnalyzeParameter( params, paramStr.c_str(), sourceIndex );
 
 	// 動的パラメータを作る
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp	(revision 567)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp	(revision 568)
@@ -2,4 +2,164 @@
 
 using namespace ActiveBasic::Compiler;
+
+bool LexicalAnalyzer::AnalyzeParameter( Parameters &params, const char *sourceOfParams, int nowLine )
+{
+	int i2,i3,sw;
+	char temporary[8192],temp2[VN_SIZE];
+
+	//パラメータ
+	int i = 0;
+	while(1){
+		if( sourceOfParams[i] == '\0' )
+		{
+			break;
+		}
+
+		//ByRef
+		bool isRef;
+		if(sourceOfParams[i]==1&&sourceOfParams[i+1]==ESC_BYVAL){
+			isRef = false;
+			i+=2;
+		}
+		else if(sourceOfParams[i]==1&&sourceOfParams[i+1]==ESC_BYREF){
+			isRef = true;
+			i+=2;
+		}
+		else isRef = false;
+
+		//パラメータ名
+		bool isArray = false;
+		Subscripts subscripts;
+		char name[VN_SIZE];
+		sw=0;
+		for(i2=0;;i++,i2++){
+			if(sourceOfParams[i]=='('){
+				if(!sw) sw=1;
+
+				i3=GetStringInPare(name+i2,sourceOfParams+i);
+				i2+=i3-1;
+				i+=i3-1;
+				continue;
+			}
+			if(sourceOfParams[i]=='['){
+				if(!sw) sw=1;
+
+				i3=GetStringInBracket(name+i2,sourceOfParams+i);
+				i2+=i3-1;
+				i+=i3-1;
+				continue;
+			}
+			if(!IsVariableChar(sourceOfParams[i])){
+				name[i2]=0;
+				break;
+			}
+			name[i2]=sourceOfParams[i];
+		}
+		if(sw){
+			//配列パラメータ
+			if( isRef == false )
+			{
+				compiler.errorMessenger.Output(29,NULL,nowLine);
+			}
+			isArray = true;
+
+			if((name[i2-2]=='('&&name[i2-1]==')')||
+				(name[i2-2]=='['&&name[i2-1]==']'))
+			{
+				subscripts.push_back( LONG_MAX );
+
+				name[i2-2]=0;
+			}
+			else{
+				GetArrange(name,temp2,subscripts);
+				lstrcpy(name,temp2);
+			}
+
+			i2=lstrlen(name);
+		}
+
+		Type type( DEF_NON );
+		char initValue[8192] = "";
+		if( sourceOfParams[i] == '=' ){
+			i++;
+			i = GetOneParameter( sourceOfParams, i, initValue );
+
+			// TODO: エラー用 fix me!!!
+			//cp = nowLine;
+
+			NumOpe_GetType( initValue, GetStringTypeInfo(), type );
+			
+			if( IS_LITERAL(type.GetIndex()) )
+			{
+				type.SetIndex( -1 );
+			}
+		}
+		else if(sourceOfParams[i]==1&&sourceOfParams[i+1]==ESC_AS){
+			// As指定
+			i+=2;
+
+			i2=0;
+			while(sourceOfParams[i]=='*'){
+				temporary[i2]=sourceOfParams[i];
+				i++;
+				i2++;
+			}
+			for(;;i++,i2++){
+				if(!IsVariableChar(sourceOfParams[i])){
+					if(sourceOfParams[i]==1&&(sourceOfParams[i+1]==ESC_FUNCTION||sourceOfParams[i+1]==ESC_SUB)){
+						temporary[i2++]=sourceOfParams[i++];
+						temporary[i2]=sourceOfParams[i];
+						continue;
+					}
+					temporary[i2]=0;
+					break;
+				}
+				temporary[i2]=sourceOfParams[i];
+			}
+
+			compiler.StringToType( temporary, type );
+
+			if( type.IsNull() ){
+				compiler.errorMessenger.Output(3,temporary,nowLine);
+				type.SetBasicType( DEF_PTR_VOID );
+			}
+
+			if( type.IsObject() ){
+				if( type.GetClass().IsBlittableType() ){
+					// Blittable型のときは基本型として扱う
+					type = type.GetClass().GetBlittableType();
+				}
+			}
+		}
+		else{
+			type.SetBasicType( Type::GetBasicTypeFromSimpleName(temporary) );
+			compiler.errorMessenger.Output(-103,temporary,nowLine);
+		}
+
+		Parameter *pParam = new Parameter( name, type, isRef, initValue );
+		if( isArray ){
+			pParam->SetArray( subscripts );
+		}
+
+		//パラメータを追加
+		params.push_back( pParam );
+
+		if( sourceOfParams[i] == ',' )
+		{
+			i++;
+			continue;
+		}
+		else if( sourceOfParams[i] == '\0' )
+		{
+			break;
+		}
+		else{
+			compiler.errorMessenger.Output(1,NULL,nowLine);
+			break;
+		}
+	}
+
+	return true;
+}
 
 UserProc* LexicalAnalyzer::ParseUserProc( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, char *buffer,int nowLine,bool isVirtual,CClass *pobj_c, bool isStatic, char *interfaceName )
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Parameter.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Parameter.cpp	(revision 567)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Parameter.cpp	(revision 568)
@@ -88,164 +88,4 @@
 }
 
-bool Parameters::Analyze( const char *sourceOfParams, int nowLine )
-{
-	int i2,i3,sw;
-	char temporary[8192],temp2[VN_SIZE];
-
-	//パラメータ
-	int i = 0;
-	while(1){
-		if( sourceOfParams[i] == '\0' )
-		{
-			break;
-		}
-
-		//ByRef
-		bool isRef;
-		if(sourceOfParams[i]==1&&sourceOfParams[i+1]==ESC_BYVAL){
-			isRef = false;
-			i+=2;
-		}
-		else if(sourceOfParams[i]==1&&sourceOfParams[i+1]==ESC_BYREF){
-			isRef = true;
-			i+=2;
-		}
-		else isRef = false;
-
-		//パラメータ名
-		bool isArray = false;
-		Subscripts subscripts;
-		char name[VN_SIZE];
-		sw=0;
-		for(i2=0;;i++,i2++){
-			if(sourceOfParams[i]=='('){
-				if(!sw) sw=1;
-
-				i3=GetStringInPare(name+i2,sourceOfParams+i);
-				i2+=i3-1;
-				i+=i3-1;
-				continue;
-			}
-			if(sourceOfParams[i]=='['){
-				if(!sw) sw=1;
-
-				i3=GetStringInBracket(name+i2,sourceOfParams+i);
-				i2+=i3-1;
-				i+=i3-1;
-				continue;
-			}
-			if(!IsVariableChar(sourceOfParams[i])){
-				name[i2]=0;
-				break;
-			}
-			name[i2]=sourceOfParams[i];
-		}
-		if(sw){
-			//配列パラメータ
-			if( isRef == false )
-			{
-				compiler.errorMessenger.Output(29,NULL,nowLine);
-			}
-			isArray = true;
-
-			if((name[i2-2]=='('&&name[i2-1]==')')||
-				(name[i2-2]=='['&&name[i2-1]==']'))
-			{
-				subscripts.push_back( LONG_MAX );
-
-				name[i2-2]=0;
-			}
-			else{
-				GetArrange(name,temp2,subscripts);
-				lstrcpy(name,temp2);
-			}
-
-			i2=lstrlen(name);
-		}
-
-		Type type( DEF_NON );
-		char initValue[8192] = "";
-		if( sourceOfParams[i] == '=' ){
-			i++;
-			i = GetOneParameter( sourceOfParams, i, initValue );
-
-			// TODO: エラー用 fix me!!!
-			//cp = nowLine;
-
-			NumOpe_GetType( initValue, GetStringTypeInfo(), type );
-			
-			if( IS_LITERAL(type.GetIndex()) )
-			{
-				type.SetIndex( -1 );
-			}
-		}
-		else if(sourceOfParams[i]==1&&sourceOfParams[i+1]==ESC_AS){
-			// As指定
-			i+=2;
-
-			i2=0;
-			while(sourceOfParams[i]=='*'){
-				temporary[i2]=sourceOfParams[i];
-				i++;
-				i2++;
-			}
-			for(;;i++,i2++){
-				if(!IsVariableChar(sourceOfParams[i])){
-					if(sourceOfParams[i]==1&&(sourceOfParams[i+1]==ESC_FUNCTION||sourceOfParams[i+1]==ESC_SUB)){
-						temporary[i2++]=sourceOfParams[i++];
-						temporary[i2]=sourceOfParams[i];
-						continue;
-					}
-					temporary[i2]=0;
-					break;
-				}
-				temporary[i2]=sourceOfParams[i];
-			}
-
-			compiler.StringToType( temporary, type );
-
-			if( type.IsNull() ){
-				compiler.errorMessenger.Output(3,temporary,nowLine);
-				type.SetBasicType( DEF_PTR_VOID );
-			}
-
-			if( type.IsObject() ){
-				if( type.GetClass().IsBlittableType() ){
-					// Blittable型のときは基本型として扱う
-					type = type.GetClass().GetBlittableType();
-				}
-			}
-		}
-		else{
-			type.SetBasicType( Type::GetBasicTypeFromSimpleName(temporary) );
-			compiler.errorMessenger.Output(-103,temporary,nowLine);
-		}
-
-		Parameter *pParam = new Parameter( name, type, isRef, initValue );
-		if( isArray ){
-			pParam->SetArray( subscripts );
-		}
-
-		//パラメータを追加
-		this->push_back( pParam );
-
-		if( sourceOfParams[i] == ',' )
-		{
-			i++;
-			continue;
-		}
-		else if( sourceOfParams[i] == '\0' )
-		{
-			break;
-		}
-		else{
-			compiler.errorMessenger.Output(1,NULL,nowLine);
-			break;
-		}
-	}
-
-	return true;
-}
-
 std::string Parameters::GetString() const
 {
