1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#ifndef CXXTOKENIZER_H
#define CXXTOKENIZER_H
#include "CxxLexerAPI.h"
class WXDLLIMPEXP_CL CxxTokenizer
{
Scanner_t m_scanner;
wxString m_buffer;
CxxLexerToken m_lastToken;
protected:
CppLexerUserData* GetUserData() const;
public:
CxxTokenizer();
virtual ~CxxTokenizer();
/**
* @brief get the next token from the toknizer
* @reutrn false when reached EOF
*/
bool NextToken(CxxLexerToken& token);
/**
* @brief reset the lexer with a new text buffer
*/
void Reset(const wxString& buffer);
/**
* @brief read until 'delim' is found. Return true if 'delim' found
* also, return the data read
*/
bool ReadUntilClosingBracket(int delim, wxString& bufferRead);
const CxxLexerToken& GetLastToken() const { return m_lastToken; }
/**
* @brief peek at the next token and return its type
*/
int PeekToken(wxString& text);
/**
* @brief given an input string, return the visible scope at the end of the buffer
* e.g.
*
* Input string:
*
* void foo() {
* int a;
* int b;
* }
*
* void bar() {
* |
*
* Output:
* void foo(){} void bar() {
*
*/
wxString GetVisibleScope(const wxString& inputString);
/**
* @brief return true if the current scanner position is placed inside a PP section
*/
bool IsInPreProcessorSection() const;
};
#endif // CXXTOKENIZER_H
|