#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 CollectEnumMembers( EnumInfo &enumInfo, const char *buffer, int nowLine ); static void CollectEnums( const char *source, EnumInfoCollection &enums ); static std::string GenerateEnumsSourceCode( const EnumInfoCollection &enums ); // クラスの名前情報を収集する static void CollectClassesForNameOnly( const char *source, Classes &classes ); // TypeDefを収集する static void AddTypeDef( TypeDefCollection &typeDefs, const NamespaceScopes &namespaceScopes, const std::string &expression, int nowLine ); static void CollectTypeDefs( const char *source, TypeDefCollection &typeDefs ); // 定数を収集する static void AddConstEnum( Consts &consts, const NamespaceScopes &namespaceScopes, const char *buffer ); static void CollectConsts( const char *source, Consts &consts, ConstMacros &constMacros ); // クラスを収集する static Member *CreateMember( const CClass &_class, Prototype::Accessibility accessibility, bool isConst, bool isRef, char *buffer, int nowLine ); 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 &_class, const char *inheritNames, int nowLine ); static void Implements( CClass &_class, Interface *pInterface, std::vector &overrideResults ); static bool Implements( CClass &_class, 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 bool AnalyzeParameter( Parameters ¶ms, const Jenga::Common::Strings ¶meterStrings, int nowLine ); 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 char *source, UserProcs &userProcs, DllProcs &dllProcs ); // デリゲートを収集する static void CollectDelegates( const char *source, Delegates &delegates ); static std::string GenerateDelegatesSourceCode( const Delegates &delegates ); static void RefleshDelegatesParameterAndReturnType( Delegates &delegates ); }; }}