KDevelop API Documentation

lib/cppparser/parser.cpp File Reference

#include "parser.h"
#include "driver.h"
#include "lexer.h"
#include "errors.h"
#include <qstring.h>
#include <qstringlist.h>
#include <qasciidict.h>
#include <kdebug.h>
#include <klocale.h>

Go to the source code of this file.

Classes

struct  ParserPrivateData

Defines

#define ADVANCE(tk, descr)
#define ADVANCE_NR(tk, descr)
#define CHECK(tk, descr)
#define MATCH(tk, descr)
#define UPDATE_POS(node, start, end)
#define AST_FROM_TOKEN(node, tk)

Enumerations

enum  { OBJC_CLASS, OBJC_PROTOCOL, OBJC_ALIAS }


Define Documentation

#define ADVANCE tk,
descr   ) 
 

Value:

{ \ const Token& token = lex->lookAhead( 0 ); \ if( token != tk ){ \ reportError( i18n("'%1' expected found '%2'").arg(descr).arg(token.text()) ); \ return false; \ } \ lex->nextToken(); \ }

Definition at line 36 of file parser.cpp.

Referenced by Parser::parseAbstractDeclarator(), Parser::parseAsmDefinition(), Parser::parseClassSpecifier(), Parser::parseDeclaration(), Parser::parseDeclarationInternal(), Parser::parseDeclarator(), Parser::parseDoStatement(), Parser::parseExceptionSpecification(), Parser::parseForStatement(), Parser::parseIdentifierList(), Parser::parseIfStatement(), Parser::parseInitializer(), Parser::parseLabeledStatement(), Parser::parseMemberSpecification(), Parser::parseMemInitializer(), Parser::parseNamespace(), Parser::parseNamespaceAliasDefinition(), Parser::parseNewDeclarator(), Parser::parseObjcAliasDecl(), Parser::parseObjcClassDecl(), Parser::parseObjcProtocolDecl(), Parser::parseStatement(), Parser::parseSwitchStatement(), Parser::parseTemplateDeclaration(), Parser::parseTryBlockStatement(), Parser::parseTypedef(), Parser::parseTypeParameter(), Parser::parseUsing(), Parser::parseUsingDirective(), Parser::parseWhileStatement(), Parser::parseWinDeclSpec(), and Parser::skipExpressionStatement().

#define ADVANCE_NR tk,
descr   ) 
 

Value:

{ \ const Token& token = lex->lookAhead( 0 ); \ if( token != tk ){ \ reportError( i18n("'%1' expected found '%2'").arg(descr).arg(token.text()) ); \ } \ else \ lex->nextToken(); \ }

Definition at line 46 of file parser.cpp.

Referenced by Parser::parseDoStatement().

#define AST_FROM_TOKEN node,
tk   ) 
 

Value:

AST::Node node = CreateNode<AST>(); \ UPDATE_POS( node, (tk), (tk)+1 );

Definition at line 91 of file parser.cpp.

Referenced by Parser::parseBaseSpecifier(), Parser::parseExceptionSpecification(), Parser::parseIdentifierList(), Parser::parseParameterDeclarationClause(), and Parser::parseTypeParameter().

#define CHECK tk,
descr   ) 
 

Value:

{ \ const Token& token = lex->lookAhead( 0 ); \ if( token != tk ){ \ return false; \ } \ lex->nextToken(); \ }

Definition at line 56 of file parser.cpp.

Referenced by Parser::parseConditionalExpression(), Parser::parseDeleteExpression(), Parser::parseNewExpression(), Parser::parseNewInitializer(), Parser::parsePostfixExpression(), Parser::parsePrimaryExpression(), and Parser::parseThrowExpression().

#define MATCH tk,
descr   ) 
 

Value:

{ \ const Token& token = lex->lookAhead( 0 ); \ if( token != tk ){ \ reportError( Errors::SyntaxError ); \ return false; \ } \ }

Definition at line 65 of file parser.cpp.

#define UPDATE_POS node,
start,
end   ) 
 

Value:

{ \ int line, col; \ const Token &a = lex->tokenAt(start); \ const Token &b = lex->tokenAt( end!=start ? end-1 : end ); \ a.getStartPosition( &line, &col ); \ (node)->setStartPosition( line, col ); \ b.getEndPosition( &line, &col ); \ (node)->setEndPosition( line, col ); \ if( (node)->nodeType() == NodeType_Generic ) { \ if ((start) == (end) || (end) == (start)+1) \ (node)->setSlice(lex->source(), a.position(), a.length()); \ else \ (node)->setText( toString((start),(end)) ); \ } \ }

Definition at line 74 of file parser.cpp.

Referenced by Parser::parseAbstractDeclarator(), Parser::parseAccessSpecifier(), Parser::parseAssignmentExpression(), Parser::parseBaseClause(), Parser::parseBaseSpecifier(), Parser::parseBlockDeclaration(), Parser::parseClassSpecifier(), Parser::parseCommaExpression(), Parser::parseCompoundStatement(), Parser::parseCondition(), Parser::parseConstantExpression(), Parser::parseCvQualify(), Parser::parseDeclaration(), Parser::parseDeclarationInternal(), Parser::parseDeclarationStatement(), Parser::parseDeclarator(), Parser::parseDoStatement(), Parser::parseElaboratedTypeSpecifier(), Parser::parseEnumerator(), Parser::parseEnumSpecifier(), Parser::parseExceptionSpecification(), Parser::parseExpression(), Parser::parseForStatement(), Parser::parseFunctionBody(), Parser::parseFunctionSpecifier(), Parser::parseIdentifierList(), Parser::parseIfStatement(), Parser::parseInitDeclarator(), Parser::parseInitDeclaratorList(), Parser::parseLinkageBody(), Parser::parseLinkageSpecification(), Parser::parseLogicalOrExpression(), Parser::parseMemberSpecification(), Parser::parseName(), Parser::parseNamespace(), Parser::parseOperatorFunctionId(), Parser::parseParameterDeclaration(), Parser::parseParameterDeclarationClause(), Parser::parseParameterDeclarationList(), Parser::parsePtrOperator(), Parser::parseSimpleTypeSpecifier(), Parser::parseStorageClassSpecifier(), Parser::parseSwitchStatement(), Parser::parseTemplateArgumentList(), Parser::parseTemplateDeclaration(), Parser::parseTemplateParameter(), Parser::parseTemplateParameterList(), Parser::parseTypedef(), Parser::parseTypeId(), Parser::parseTypeIdList(), Parser::parseTypeParameter(), Parser::parseUnqualifiedName(), Parser::parseUsing(), Parser::parseUsingDirective(), Parser::parseWhileStatement(), Parser::parseWinDeclSpec(), Parser::skipCommaExpression(), Parser::skipExpression(), and Parser::skipExpressionStatement().


Enumeration Type Documentation

anonymous enum
 

Enumeration values:
OBJC_CLASS 
OBJC_PROTOCOL 
OBJC_ALIAS 

Definition at line 97 of file parser.cpp.

KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Oct 6 17:39:16 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003