Library: CppParser
Package: CppParser
Header: Poco/CppParser/Parser.h
A minimal parser for C++ (header files).
The parser reads a (preprocessed) source or header file and builds a symbol table containing as much information as the parser is able to extract from the file.
A special comment syntax is used for inline API documentation.
A comment starting with three consecutive slashes (///) contains API documentation for a symbol (class, function, typedef, enum, etc.). API documentation comments always come after the declaration, with the exception of structs and classes, where the comments are expected immediately before the opening brace.
Member Functions: addSymbol, append, currentNameSpace, expectOperator, isEOF, isIdentifier, isKeyword, isOperator, next, nextPreprocessed, nextToken, parse, parseAccess, parseBaseClassList, parseBlock, parseClass, parseClassMembers, parseEnum, parseEnumValue, parseExtern, parseFile, parseFriend, parseFunc, parseIdentifier, parseNameSpace, parseParameters, parseTemplate, parseTemplateArgs, parseTypeDef, parseUsing, parseVarFunc, popNameSpace, pushNameSpace, syntaxError
Parser(
NameSpace::SymbolTable & gst,
const std::string & file,
std::istream & istr
);
Creates the Parser.
~Parser();
Destroys the Parser.
void parse();
Parses the file.
void addSymbol(
Symbol * pSymbol,
int lineNumber,
bool addGST = true
);
static void append(
std::string & decl,
const std::string & token
);
static void append(
std::string & decl,
const Poco::Token * pToken
);
NameSpace * currentNameSpace() const;
static void expectOperator(
const Poco::Token * pToken,
int kind,
const std::string & msg
);
static bool isEOF(
const Poco::Token * pToken
);
static bool isIdentifier(
const Poco::Token * pToken
);
static bool isKeyword(
const Poco::Token * pToken,
int kind
);
static bool isOperator(
const Poco::Token * pToken,
int kind
);
const Poco::Token * next();
const Poco::Token * nextPreprocessed();
const Poco::Token * nextToken();
const Poco::Token * parseAccess(
const Poco::Token * pNext
);
const Poco::Token * parseBaseClassList(
const Poco::Token * pNext,
Struct * pClass
);
const Poco::Token * parseBlock(
const Poco::Token * pNext
);
const Poco::Token * parseClass(
const Poco::Token * pNext
);
const Poco::Token * parseClass(
const Poco::Token * pNext,
std::string & decl
);
const Poco::Token * parseClassMembers(
const Poco::Token * pNext,
Struct * pClass
);
const Poco::Token * parseEnum(
const Poco::Token * pNext
);
const Poco::Token * parseEnumValue(
const Poco::Token * pNext,
Enum * pEnum
);
const Poco::Token * parseExtern(
const Poco::Token * pNext
);
const Poco::Token * parseFile(
const Poco::Token * pNext
);
const Poco::Token * parseFriend(
const Poco::Token * pNext
);
const Poco::Token * parseFunc(
const Poco::Token * pNext,
std::string & decl
);
const Poco::Token * parseIdentifier(
const Poco::Token * pNext,
std::string & id
);
const Poco::Token * parseNameSpace(
const Poco::Token * pNext
);
const Poco::Token * parseParameters(
const Poco::Token * pNext,
Function * pFunc
);
const Poco::Token * parseTemplate(
const Poco::Token * pNext
);
const Poco::Token * parseTemplateArgs(
const Poco::Token * pNext,
std::string & decl
);
const Poco::Token * parseTypeDef(
const Poco::Token * pNext
);
const Poco::Token * parseUsing(
const Poco::Token * pNext
);
const Poco::Token * parseVarFunc(
const Poco::Token * pNext
);
const Poco::Token * parseVarFunc(
const Poco::Token * pNext,
std::string & decl
);
void popNameSpace();
void pushNameSpace(
NameSpace * pNameSpace,
int lineNumber,
bool addGST = true
);
static void syntaxError(
const std::string & msg
);