1 /* 2 * This file is part of the FortranProject plugin for Code::Blocks IDE 3 * and licensed under the GNU General Public License, version 3 4 * http://www.gnu.org/licenses/gpl-3.0.html 5 */ 6 7 #ifndef KEYWORDSPARSERF_H 8 #define KEYWORDSPARSERF_H 9 10 #include <sdk.h> 11 #ifndef CB_PRECOMP 12 #include <wx/string.h> 13 #include <wx/event.h> 14 #include <wx/file.h> 15 16 #include <cbeditor.h> 17 #endif 18 #include <set> 19 #include <vector> 20 21 #include "tokenf.h" 22 #include "tokenizerf.h" 23 #include "parserf.h" 24 25 typedef std::vector<FortranSourceForm> ArrayOfFortranSourceForm; 26 typedef std::set<wxString> StringSet; 27 28 enum CompilerDirective 29 { 30 cdNone = 0, 31 cdOther, 32 cdOpenMP, 33 cdOpenACC, 34 }; 35 36 class KeywordsParserF 37 { 38 public: 39 KeywordsParserF(); 40 ~KeywordsParserF(); 41 bool HasTokenSuitableKind(const wxString& name, int tokKind); 42 void GetCallTips(const wxString& name, wxArrayString& callTips, TokensArrayFlat* result); 43 void FindTokens(const wxString& name, TokensArrayFlat& result); GetParser()44 ParserF* GetParser(){ return &m_Parser; }; 45 const wxArrayString* GetKeywords(CompilerDirective cdir); 46 47 protected: 48 private: 49 void MakeOtherKeywordSet(); 50 bool m_IsDone; 51 52 ParserF m_Parser; 53 54 StringSet m_SubrSet; 55 StringSet m_FuncSet; 56 StringSet m_OtherKeywordSet; 57 58 wxArrayString m_OpenMPKeywords; 59 wxArrayString m_OpenACCKeywords; 60 }; 61 62 #endif // KEYWORDSPARSERF_H 63