1*8af74909SZhong Yang // Scintilla source code edit control 2*8af74909SZhong Yang /** @file LexerBase.h 3*8af74909SZhong Yang ** A simple lexer with no state. 4*8af74909SZhong Yang **/ 5*8af74909SZhong Yang // Copyright 1998-2010 by Neil Hodgson <[email protected]> 6*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed. 7*8af74909SZhong Yang 8*8af74909SZhong Yang #ifndef LEXERBASE_H 9*8af74909SZhong Yang #define LEXERBASE_H 10*8af74909SZhong Yang 11*8af74909SZhong Yang namespace Scintilla { 12*8af74909SZhong Yang 13*8af74909SZhong Yang // A simple lexer with no state 14*8af74909SZhong Yang class LexerBase : public ILexer5 { 15*8af74909SZhong Yang protected: 16*8af74909SZhong Yang const LexicalClass *lexClasses; 17*8af74909SZhong Yang size_t nClasses; 18*8af74909SZhong Yang PropSetSimple props; 19*8af74909SZhong Yang enum {numWordLists=KEYWORDSET_MAX+1}; 20*8af74909SZhong Yang WordList *keyWordLists[numWordLists+1]; 21*8af74909SZhong Yang public: 22*8af74909SZhong Yang LexerBase(const LexicalClass *lexClasses_=nullptr, size_t nClasses_=0); 23*8af74909SZhong Yang virtual ~LexerBase(); 24*8af74909SZhong Yang void SCI_METHOD Release() override; 25*8af74909SZhong Yang int SCI_METHOD Version() const override; 26*8af74909SZhong Yang const char * SCI_METHOD PropertyNames() override; 27*8af74909SZhong Yang int SCI_METHOD PropertyType(const char *name) override; 28*8af74909SZhong Yang const char * SCI_METHOD DescribeProperty(const char *name) override; 29*8af74909SZhong Yang Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; 30*8af74909SZhong Yang const char * SCI_METHOD DescribeWordListSets() override; 31*8af74909SZhong Yang Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; 32*8af74909SZhong Yang void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override = 0; 33*8af74909SZhong Yang void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override = 0; 34*8af74909SZhong Yang void * SCI_METHOD PrivateCall(int operation, void *pointer) override; 35*8af74909SZhong Yang int SCI_METHOD LineEndTypesSupported() override; 36*8af74909SZhong Yang int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) override; 37*8af74909SZhong Yang int SCI_METHOD SubStylesStart(int styleBase) override; 38*8af74909SZhong Yang int SCI_METHOD SubStylesLength(int styleBase) override; 39*8af74909SZhong Yang int SCI_METHOD StyleFromSubStyle(int subStyle) override; 40*8af74909SZhong Yang int SCI_METHOD PrimaryStyleFromStyle(int style) override; 41*8af74909SZhong Yang void SCI_METHOD FreeSubStyles() override; 42*8af74909SZhong Yang void SCI_METHOD SetIdentifiers(int style, const char *identifiers) override; 43*8af74909SZhong Yang int SCI_METHOD DistanceToSecondaryStyles() override; 44*8af74909SZhong Yang const char * SCI_METHOD GetSubStyleBases() override; 45*8af74909SZhong Yang int SCI_METHOD NamedStyles() override; 46*8af74909SZhong Yang const char * SCI_METHOD NameOfStyle(int style) override; 47*8af74909SZhong Yang const char * SCI_METHOD TagsOfStyle(int style) override; 48*8af74909SZhong Yang const char * SCI_METHOD DescriptionOfStyle(int style) override; 49*8af74909SZhong Yang // ILexer5 methods 50*8af74909SZhong Yang const char * SCI_METHOD GetName() override; 51*8af74909SZhong Yang int SCI_METHOD GetIdentifier() override; 52*8af74909SZhong Yang const char *SCI_METHOD PropertyGet(const char *key) override; 53*8af74909SZhong Yang }; 54*8af74909SZhong Yang 55*8af74909SZhong Yang } 56*8af74909SZhong Yang 57*8af74909SZhong Yang #endif 58