#pragma once namespace ActiveBasic{ namespace Compiler{ class LexicalAnalyzer { class SourceTemplate { std::string source; public: SourceTemplate( const std::string &filePath ); ~SourceTemplate() { } std::string GetResult( const std::map &values ); }; public: // 名前空間を収集 static bool CollectNamespaces( const char *source, NamespaceScopesCollection &namespaceScopesCollection ); // フルネーム識別子をシンボルに変換する static Symbol FullNameToSymbol( const char *fullName ); static Symbol FullNameToSymbol( const std::string &fullName ); // クラスの名前情報を収集する static void CollectClassesForNameOnly( const char *source, Classes &classes ); // クラスを収集する static void AddMethod(CClass *pobj_c, UserProc *pUserProc, Prototype::Accessibility accessibility, BOOL bStatic, bool isConst, bool isAbstract, bool isVirtual, bool isOverride, const char *interfaceName, bool isAutoGeneration, int nowLine); static bool Inherits( CClass ¤tClass, const char *inheritNames, int nowLine ); static bool Implements( CClass ¤tClass, const char *interfaceNames, int nowLine ); static void LookaheadClass( const char *className, Classes &classes ); static bool LoopRefCheck( const CClass &objClass ); static void CollectClasses( const char *source, Classes &classes ); // グローバルプロシージャを収集する static UserProc* ParseUserProc( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, char *buffer,int nowLine,bool isVirtual,CClass *pobj_c, bool isStatic, char *interfaceName = NULL ); static void CollectProcedures( const BasicSource &source, UserProcs &userProcs, DllProcs &dllProcs ); // デリゲートを収集する static void CollectDelegates( const BasicSource &source, Delegates &delegates ); static std::string GenerateDelegatesSourceCode( const Delegates &delegates ); static void RefleshDelegatesParameterAndReturnType( Delegates &delegates ); }; }}