Index: /BasicCompiler32/BasicCompiler.vcproj
===================================================================
--- /BasicCompiler32/BasicCompiler.vcproj	(revision 13)
+++ /BasicCompiler32/BasicCompiler.vcproj	(revision 14)
@@ -1280,4 +1280,16 @@
 					</File>
 				</Filter>
+				<Filter
+					Name="LexicalAnalysis"
+					>
+					<File
+						RelativePath="..\BasicCompiler_Common\LexicalAnalysis.cpp"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\LexicalAnalysis.h"
+						>
+					</File>
+				</Filter>
 			</Filter>
 			<Filter
@@ -1899,5 +1911,5 @@
 			>
 			<File
-				RelativePath="BasicCompiler.h"
+				RelativePath="..\BasicCompiler_Common\BasicCompiler.h"
 				>
 			</File>
Index: /BasicCompiler32/MakePeHdr.cpp
===================================================================
--- /BasicCompiler32/MakePeHdr.cpp	(revision 13)
+++ /BasicCompiler32/MakePeHdr.cpp	(revision 14)
@@ -166,5 +166,6 @@
 	char *temp;
 	temp=CEnumParent::GenerateCodes();
-	AddSourceCode(temp);
+	CSource::obj.AddSourceCode(temp);
+	basbuf = CSource::obj.SourceCode;
 	HeapDefaultFree(temp);
 
Index: sicCompiler64/BasicCompiler.h
===================================================================
--- /BasicCompiler64/BasicCompiler.h	(revision 13)
+++ 	(revision )
@@ -1,93 +1,0 @@
-#include "../BasicCompiler_Common/common.h"
-
-LPSTR BasicFileFilter="プログラム ファイル(*.ab;*.bas;*.abp;*.sbp)\0*.ab;*.bas;*.abp;*sbp\0テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0";
-LPSTR ExeFileFilter="実行可能ファイル(*.exe)\0*.exe\0すべてのファイル(*.*)\0*\0\0";
-
-HINSTANCE hInst;
-HWND hOwnerEditor;
-HWND hMainDlg;
-HWND hDebugWnd;
-HANDLE hHeap;
-int ScreenX,ScreenY;
-WNDPROC OldErrorListProc,OldDebugListProc,OldProgressProc;
-WNDPROC OldThreadComboProc;
-WNDPROC OldProcComboProc;
-unsigned short TypeOfSubSystem;
-BOOL bClipCompileView;
-
-//不揮発性データ（レジストリに保存される）
-CNonVolatile *pobj_nv;
-
-//プログラム情報
-BOOL bCompilingGlobal;
-BOOL bStrict;
-DWORD ImageBase;
-INCLUDEFILEINFO IncludeFileInfo;
-SUBINFO **ppSubHash;
-int SubNum;
-char **ppMacroNames;
-int MacroNum;
-DECLAREINFO **ppDeclareHash;
-CONSTINFO **ppConstHash;
-PROCPTRINFO *pProcPtrInfo;
-int ProcPtrInfoNum;
-
-ERRORINFO *pErrorInfo;
-int ErrorNum;
-int CompileMsgNum;
-int WarningNum;
-BOOL bError;
-char **SynonymErrorWords;
-int SynonymErrorNum;
-BOOL bStopCompile;
-
-//リソース情報
-char ResourceFileName[MAX_PATH];
-RESOURCEDATAINFO *pCursorResourceInfo;
-int CursorResourceNum;
-RESOURCEDATAINFO *pBitmapResourceInfo;
-int BitmapResourceNum;
-RESOURCEDATAINFO *pIconResourceInfo;
-int IconResourceNum;
-char szManifestPath[MAX_PATH];
-int XPManiResourceNum;
-
-//デバッグ
-BOOL bDebugCompile=0;
-BOOL bDebugRun=0;
-BOOL bAttach=0;
-DWORD dwAttachProcessId;
-BOOL bDebugSupportProc;
-BOOL bSystemProc;
-DWORD dwStepRun;
-double width_ratio_VarList=0.3;
-HWND hDebuggerToolbar;
-char szDebugCmdLine[1024];
-char szDebugExeForDll[1024];
-
-//デバッグ用行番号情報
-LINEINFO *pLineInfo;
-int MaxLineInfoNum;
-
-//ウォッチリスト
-int width_WatchColumn_Expression=200;
-int width_WatchColumn_Value=400;
-
-
-//関数ポインタのベース タイプ インデックス（左辺の関数ポインタのパラメータを参考に、オーバーロードを解決）
-LONG_PTR ProcPtr_BaseIndex;
-
-
-int cp;
-
-BOOL bDll;
-
-char *basbuf;
-char *pBaseBuffer;
-
-char BasicSystemDir[MAX_PATH];	//BasicCompiler.exeが存在するディレクトリ
-char BasicCurDir[MAX_PATH];		//コンパイルするファイルが存在するディレクトリ
-char SourceFileName[MAX_PATH]="";
-char OutputFileName[MAX_PATH];
-char szDllName[MAX_PATH];
-char szIncludeDir[MAX_PATH]="";
Index: /BasicCompiler64/BasicCompiler.vcproj
===================================================================
--- /BasicCompiler64/BasicCompiler.vcproj	(revision 13)
+++ /BasicCompiler64/BasicCompiler.vcproj	(revision 14)
@@ -422,5 +422,5 @@
 			>
 			<File
-				RelativePath="BasicCompiler.h"
+				RelativePath="..\BasicCompiler_Common\BasicCompiler.h"
 				>
 			</File>
@@ -1522,4 +1522,16 @@
 					</File>
 				</Filter>
+				<Filter
+					Name="LexicalAnalysis"
+					>
+					<File
+						RelativePath="..\BasicCompiler_Common\LexicalAnalysis.cpp"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\LexicalAnalysis.h"
+						>
+					</File>
+				</Filter>
 			</Filter>
 		</Filter>
Index: /BasicCompiler64/MakePeHdr.cpp
===================================================================
--- /BasicCompiler64/MakePeHdr.cpp	(revision 13)
+++ /BasicCompiler64/MakePeHdr.cpp	(revision 14)
@@ -154,5 +154,6 @@
 	char *temp;
 	temp=CEnumParent::GenerateCodes();
-	AddSourceCode(temp);
+	CSource::obj.AddSourceCode(temp);
+	basbuf = CSource::obj.SourceCode;
 	HeapDefaultFree(temp);
 
Index: /BasicCompiler_Common/BasicCompiler.cpp
===================================================================
--- /BasicCompiler_Common/BasicCompiler.cpp	(revision 13)
+++ /BasicCompiler_Common/BasicCompiler.cpp	(revision 14)
@@ -1,7 +1,4 @@
-#ifdef _AMD64_
-#include "../BasicCompiler64/BasicCompiler.h"
-#else
-#include "../BasicCompiler32/BasicCompiler.h"
-#endif
+#include "BasicCompiler.h"
+
 
 #if defined HeapAlloc
Index: /BasicCompiler_Common/BasicCompiler.h
===================================================================
--- /BasicCompiler_Common/BasicCompiler.h	(revision 13)
+++ /BasicCompiler_Common/BasicCompiler.h	(revision 14)
@@ -1,3 +1,3 @@
-#include "../BasicCompiler_Common/common.h"
+#include "common.h"
 
 LPSTR BasicFileFilter="プログラム ファイル(*.ab;*.bas;*.abp;*.sbp)\0*.ab;*.bas;*.abp;*sbp\0テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0";
Index: /BasicCompiler_Common/DebugMiddleFile.cpp
===================================================================
--- /BasicCompiler_Common/DebugMiddleFile.cpp	(revision 13)
+++ /BasicCompiler_Common/DebugMiddleFile.cpp	(revision 14)
@@ -474,10 +474,9 @@
 	//ソースコード
 	i2++;
-	pBaseBuffer=(char *)HeapAlloc(hHeap,0,lstrlen(buffer+i2)+3);
-	basbuf=pBaseBuffer+2;
-	lstrcpy(basbuf,buffer+i2);
-	i2+=lstrlen(buffer+i2)+1;
+	CSource::obj.SetSourceCode(buffer + i2);
+	this->basbuf=CSource::obj.SourceCode;
 	extern char *basbuf;
 	basbuf=this->basbuf;
+	i2+=lstrlen(buffer+i2)+1;
 
 	//コードと行番号の関係
@@ -934,7 +933,5 @@
 
 	//ソースコード
-	extern char *pBaseBuffer;
 	extern char *basbuf;
-	pBaseBuffer=this->pBaseBuffer;
 	basbuf=this->basbuf;
 
@@ -1016,7 +1013,4 @@
 	DeleteConstInfo(ppConstHash);
 
-	//ソースコードを解放
-	HeapDefaultFree(pBaseBuffer);
-
 	//コードと行番号の関係を解放
 	HeapDefaultFree(pLineInfo);
Index: /BasicCompiler_Common/DebugSection.h
===================================================================
--- /BasicCompiler_Common/DebugSection.h	(revision 13)
+++ /BasicCompiler_Common/DebugSection.h	(revision 14)
@@ -25,5 +25,4 @@
 
 	//ソースコード
-	char *pBaseBuffer;
 	char *basbuf;
 
Index: /BasicCompiler_Common/LexicalAnalysis.cpp
===================================================================
--- /BasicCompiler_Common/LexicalAnalysis.cpp	(revision 14)
+++ /BasicCompiler_Common/LexicalAnalysis.cpp	(revision 14)
@@ -0,0 +1,262 @@
+#include "common.h"
+
+char *basbuf;
+
+extern CDefine *pobj_define;
+
+
+CSource CSource::obj;
+
+CToken::CToken(int pos, int length, TOKENTYPE type, int extended){
+	this->pos = pos;
+	this->length = length;
+	this->type = type;
+	this->extended = extended;
+}
+CToken::~CToken(){
+}
+
+
+
+CSource::CSource(){
+}
+CSource::~CSource(){
+	Free();
+}
+
+void CSource::Free(){
+	if(SourceCode){
+		char *base = SourceCode-2;
+		free(base);
+		SourceCode = 0;
+	}
+
+	if(ppTokens){
+		for(int i=0; i<TokenNum; i++){
+			delete ppTokens[i];
+		}
+		free(ppTokens);
+		ppTokens = 0;
+	}
+}
+
+void CSource::Init(){
+
+	//古い情報を開放
+	Free();
+
+	ppTokens = (CToken **)malloc(1);
+	TokenNum = 0;
+}
+
+
+bool CSource::OpenFile(char *FileName){
+	char *buffer;
+	DWORD dwFileSize,dwAccBytes;
+	HANDLE hFile;
+
+	//ファイルオープン
+	hFile=CreateFile(FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
+	if(hFile==INVALID_HANDLE_VALUE) return false;
+
+	//バッファ領域確保
+	dwFileSize=GetFileSize(hFile,0);
+	buffer=(char *)malloc(dwFileSize+1);
+
+	//読み込み
+	ReadFile(hFile,buffer,dwFileSize,&dwAccBytes,0);
+	buffer[dwAccBytes]=0;
+
+	SetSourceCode(buffer);
+
+	free(buffer);
+
+	return true;
+}
+
+void CSource::SetSourceCode(char *source){
+
+	//初期化
+	Init();
+
+	//#define情報を初期化
+	pobj_define=new CDefine;
+
+	//バッファ領域確保
+	char *base,*buffer;
+	base=(char *)malloc(lstrlen(source)*2+255);
+	base[0]='\n';
+	base[1]='\n';
+	buffer=base+2;
+	lstrcpy(buffer,"#include <basic.sbp>\n");
+	buffer+=lstrlen(buffer);
+
+	//読み込み
+	lstrcpy(buffer,source);
+
+	//CRLFをLFに変換
+	ChangeReturnCode(buffer);
+
+	//コメント削除
+	DeleteComment(buffer);
+
+	//#ifdefディレクティブ
+	DirectiveIfdef(buffer);
+
+	//最終行には文字を含ませないようにする
+	lstrcat(buffer,"\n");
+
+	//インクルードファイルを読み込む
+	base=IncludeFiles(base);
+	buffer = base + 2;
+
+	//#define情報を破棄
+	delete pobj_define;
+	pobj_define=0;
+
+	SourceCode = buffer;
+}
+
+void CSource::AddSourceCode(char *source){
+	char *temp;
+	temp=(char *)malloc(lstrlen(source)+8192);
+	lstrcpy(temp,source);
+
+	//エスケープシーケンス設定
+	SetEscapeSequenceFormat(temp);
+
+	//コマンド対応
+	ChangeCommandToCode(temp);
+
+	//新しいソースコードバッファの容量
+	extern char *basbuf;
+	int NewSize;
+	NewSize=lstrlen(SourceCode)+lstrlen(temp);
+	NewSize*=2;
+	NewSize+=255;
+
+	//最後尾に貼り付け
+	char *base;
+	base = SourceCode - 2;
+	base = (char *)realloc(base, NewSize);
+	SourceCode = base + 2;
+	int oldlength = lstrlen(SourceCode);
+	lstrcat(SourceCode, temp);
+
+	free(temp);
+
+	//字句解析
+	CSource::obj.LexicalAnalysis(0);
+}
+
+
+//トークンを追加
+void CSource::AddToken(int pos, int length, TOKENTYPE type, int extended){
+	CToken *ptoken = new CToken(pos, length, type, extended);
+
+	ppTokens = (CToken **)realloc(ppTokens, (TokenNum + 1) * sizeof(CToken *));
+	ppTokens[TokenNum] = ptoken;
+	TokenNum++;
+}
+
+//字句解析（トークンを生成）
+void CSource::LexicalAnalysis(int StartPos){
+	int i = StartPos;
+	int i2;
+
+	try{
+
+		while(true){
+			if(SourceCode[i] == '\0') break;
+
+			//文字数
+			int length;
+
+			//トークンの種類
+			TOKENTYPE type;
+
+			//付加情報
+			int extended = 0;
+
+			if(IsNumCalcMark(SourceCode, i)){
+				//演算子
+				type = TOKEN_OPERATOR;
+
+				extended = GetCalcId(SourceCode + i, &i2);
+
+				length = i2 + 1;
+			}
+			else if(SourceCode[i] == 1){
+				//特殊字句
+				type = TOKEN_ESCAPESEQUENCE;
+
+				length = 2;
+			}
+			else if(IsNumberTopChar(SourceCode + i)){
+				//数値
+				type = TOKEN_NUMBER;
+
+				if(SourceCode[i] == '&') length = 2;
+				else length = 0;
+				for(length=0; IsNumberChar(SourceCode[i+length]); length++){
+				}
+			}
+			else if(SourceCode[i] == '\"'){
+				//文字列
+				type = TOKEN_STRING;
+
+				for(length=1;;length++){
+					if(SourceCode[i + length]=='\0') break;
+					if(SourceCode[i + length] == '\"'){
+						length++;
+						break;
+					}
+				}
+			}
+			else if(memicmp(SourceCode+i,"Ex",2) && SourceCode[i+3]=='\"'){
+				//拡張文字列
+				type = TOKEN_EXSTRING;
+
+				for(length=3;;length++){
+					if(SourceCode[i + length]=='\0') break;
+					if(SourceCode[i + length] == '\"'){
+						length++;
+						break;
+					}
+				}
+			}
+			else if(IsVariableTopChar(SourceCode[i])){
+				//識別子
+				type = TOKEN_IDENTIFIER;
+
+				for(length=0; IsVariableChar(SourceCode[i+length]); length++){
+				}
+			}
+			else if(SourceCode[i] == 0x10 || SourceCode[i] == 0x11){
+				//コマンド
+				type = TOKEN_COMMAND;
+				length = 2;
+			}
+			else{
+				throw "字句解析に失敗\n";
+			}
+
+			if(length == 0){
+				throw "字句解析に失敗\n";
+			}
+
+			//トークンを追加
+			AddToken(i, length, type, extended);
+
+			//次の字句の位置へ
+			i += length;
+
+			//空白を除去
+			while(IsBlank(SourceCode[i])) i++;
+		}
+
+	}
+	catch(const char *msg){
+		OutputDebugString(msg);
+	}
+}
Index: /BasicCompiler_Common/LexicalAnalysis.h
===================================================================
--- /BasicCompiler_Common/LexicalAnalysis.h	(revision 14)
+++ /BasicCompiler_Common/LexicalAnalysis.h	(revision 14)
@@ -0,0 +1,54 @@
+
+
+enum TOKENTYPE{
+	TOKEN_IDENTIFIER,		//識別子
+	TOKEN_NUMBER,			//数値
+	TOKEN_STRING,			//文字列
+	TOKEN_EXSTRING,			//文字列
+	TOKEN_OPERATOR,			//演算子
+	TOKEN_ESCAPESEQUENCE,	//特殊記号
+	TOKEN_COMMAND,			//コマンド
+	TOKEN_DELIMITATION,		//ステップ区切り
+};
+
+class CToken{
+	int pos;
+	int length;
+	TOKENTYPE type;
+	int extended;
+
+public:
+	CToken(int pos, int length, TOKENTYPE type, int extended);
+	~CToken();
+};
+
+class CSource{
+
+	//トークン
+	CToken **ppTokens;
+	int TokenNum;
+
+	CSource();
+	~CSource();
+
+	void Free();
+	void Init();
+
+public:
+	//ソースコードを格納するバッファ
+	char *SourceCode;
+
+	bool OpenFile(char *FileName);
+	void SetSourceCode(char *source);
+	void AddSourceCode(char *source);
+
+private:
+	void AddToken(int pos, int length, TOKENTYPE type, int extended);
+public:
+	void LexicalAnalysis(int StartPos);
+
+
+
+	//シングルトンオブジェクト
+	static CSource obj;
+};
Index: /BasicCompiler_Common/MakeExe.cpp
===================================================================
--- /BasicCompiler_Common/MakeExe.cpp	(revision 13)
+++ /BasicCompiler_Common/MakeExe.cpp	(revision 14)
@@ -34,35 +34,7 @@
 }
 
-void AddSourceCode(char *buffer){
-	char *temp;
-	temp=(char *)HeapAlloc(hHeap,0,lstrlen(buffer)+8192);
-	lstrcpy(temp,buffer);
-
-	//エスケープシーケンス設定
-	SetEscapeSequenceFormat(temp);
-
-	//コマンド対応
-	ChangeCommandToCode(temp);
-
-	//新しいソースコードバッファの容量
-	extern char *basbuf;
-	int NewSize;
-	NewSize=lstrlen(basbuf)+lstrlen(temp);
-	NewSize*=2;
-	NewSize+=255;
-
-	//最後尾に貼り付け
-	extern char *pBaseBuffer;
-	pBaseBuffer=(char *)HeapReAlloc(hHeap,0,pBaseBuffer,NewSize);
-	basbuf=pBaseBuffer+2;
-	lstrcat(basbuf,temp);
-
-	HeapDefaultFree(temp);
-}
-
 void OutputExe(void){
 	extern HANDLE hHeap;
 	extern char *basbuf;
-	extern char *pBaseBuffer;
 	extern int ErrorNum;
 	extern BOOL bStopCompile;
@@ -87,10 +59,8 @@
 	//プログラムをファイルから読み込む
 	extern char SourceFileName[MAX_PATH];
-	pBaseBuffer=OpenBasicFile(SourceFileName);
-	if(!pBaseBuffer){
-		SetError(201,SourceFileName,-1);
-		goto EndCompile;
-	}
-	basbuf=pBaseBuffer+2;
+	CSource::obj.OpenFile(SourceFileName);
+
+	//未完成
+	basbuf = CSource::obj.SourceCode;
 
 	//イメージベースの設定
@@ -172,4 +142,8 @@
 
 	StepCompileProgress();
+
+
+	//字句解析
+	CSource::obj.LexicalAnalysis(0);
 
 
@@ -291,6 +265,4 @@
 		HeapDefaultFree(IncludeFileInfo.ppFileNames[i2]);
 	HeapDefaultFree(IncludeFileInfo.ppFileNames);
-
-	if(pBaseBuffer) HeapDefaultFree(pBaseBuffer);
 }
 int MainThread(DWORD dummy){
Index: /BasicCompiler_Common/calculation.cpp
===================================================================
--- /BasicCompiler_Common/calculation.cpp	(revision 13)
+++ /BasicCompiler_Common/calculation.cpp	(revision 14)
@@ -10,4 +10,18 @@
 _int64 i64stack[255];
 
+bool IsNumberTopChar(char *buffer){
+	int c = buffer[0];
+	if('0' <= c && c <= '9') return true;
+	if(buffer[0] == '&' && (buffer[1] == 'h' || buffer[1] == 'H' || buffer[1] == 'o' || buffer[1] == 'O')) return true;
+
+	return false;
+}
+bool IsNumberChar(char c){
+	if('0' <= c && c <= '9') return true;
+	if('a' <= c && c <= 'f') return true;
+	if('A' <= c && c <= 'F') return true;
+
+	return false;
+}
 BOOL IsJudgMark(char *Command,int p){
 	if(Command[p]==1){
Index: /BasicCompiler_Common/common.h
===================================================================
--- /BasicCompiler_Common/common.h	(revision 13)
+++ /BasicCompiler_Common/common.h	(revision 14)
@@ -1,3 +1,4 @@
-#define _CRT_SECURE_NO_DEPRECATE
+//#define _CRT_SECURE_NO_DEPRECATE
+#pragma warning(disable : 4996)
 
 #include <windows.h>
@@ -28,4 +29,5 @@
 #include "../BasicCompiler_Common/psapi.h"
 #include "../BasicCompiler_Common/BreakPoint.h"
+#include "../BasicCompiler_Common/LexicalAnalysis.h"
 
 
@@ -150,4 +152,17 @@
 	int FilesNum;
 	int LineOfFile[MAX_LEN];
+};
+
+//#define情報
+class CDefine{
+	int num;
+	char **ppNames;
+public:
+	CDefine();
+	~CDefine();
+
+	BOOL add(char *name);
+	BOOL undef(char *name);
+	BOOL check(char *name);
 };
 
@@ -451,5 +466,4 @@
 void DeleteConstInfo(CONSTINFO **ppConstHash);
 void DeleteDeclareInfo(void);
-void AddSourceCode(char *buffer);
 void OutputExe(void);
 int MainThread(DWORD dummy);
@@ -473,5 +487,6 @@
 
 //preprocessor.cpp
-char *OpenBasicFile(char *FileName);
+void DirectiveIfdef(char *buffer);
+char *IncludeFiles(char *base);
 
 //Resource.cpp
@@ -516,4 +531,6 @@
 
 //calculation.cpp
+bool IsNumberTopChar(char *buffer);
+bool IsNumberChar(char c);
 BOOL IsNumCalcMark(char *Command,int p);
 BOOL IsNumCalcMark_Back(char *Command,int p);
Index: /BasicCompiler_Common/preprocessor.cpp
===================================================================
--- /BasicCompiler_Common/preprocessor.cpp	(revision 13)
+++ /BasicCompiler_Common/preprocessor.cpp	(revision 14)
@@ -8,15 +8,4 @@
 
 
-class CDefine{
-	int num;
-	char **ppNames;
-public:
-	CDefine();
-	~CDefine();
-
-	BOOL add(char *name);
-	BOOL undef(char *name);
-	BOOL check(char *name);
-};
 CDefine::CDefine(){
 	extern HANDLE hHeap;
@@ -311,5 +300,4 @@
 
 char *IncludeFiles(char *base){
-	extern HANDLE hHeap;
 	extern char szIncludeDir[MAX_PATH];
 	extern char BasicCurDir[MAX_PATH];
@@ -435,5 +423,5 @@
 
 			i3=lstrlen(buffer)+FileSize;
-			base=(char *)HeapReAlloc(hHeap,HEAP_ZERO_MEMORY,base,i3*2);
+			base=(char *)realloc(base,i3*2);
 			buffer=base+2;
 			SlideString(buffer+i2,FileSize+(i-i2));
@@ -463,52 +451,2 @@
 	return base;
 }
-char *OpenBasicFile(char *FileName){
-	extern HANDLE hHeap;
-	char *base,*buffer;
-	DWORD dwFileSize,dwAccBytes;
-	HANDLE hFile;
-
-	//ファイルオープン
-	hFile=CreateFile(FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
-	if(hFile==INVALID_HANDLE_VALUE) return 0;
-
-	//#define情報を初期化
-	pobj_define=new CDefine;
-
-	//バッファ領域確保
-	dwFileSize=GetFileSize(hFile,0);
-	base=(char *)HeapAlloc(hHeap,0,dwFileSize*2+255);
-	base[0]='\n';
-	base[1]='\n';
-	buffer=base+2;
-	lstrcpy(buffer,"#include <basic.sbp>\n");
-	buffer+=lstrlen(buffer);
-
-	//読み込み
-	ReadFile(hFile,buffer,dwFileSize,&dwAccBytes,0);
-	buffer[dwAccBytes]=0;
-
-	//CRLFをLFに変換
-	ChangeReturnCode(buffer);
-
-	//コメント削除
-	DeleteComment(buffer);
-
-	//#ifdefディレクティブ
-	DirectiveIfdef(buffer);
-
-	//最終行には文字を含ませないようにする
-	lstrcat(buffer,"\n");
-
-	//ファイルクローズ
-	CloseHandle(hFile);
-
-	//インクルードファイルを読み込む
-	base=IncludeFiles(base);
-
-	//#define情報を破棄
-	delete pobj_define;
-	pobj_define=0;
-
-	return base;
-}
