KDevelop API Documentation

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>

Include dependency graph for parser.cpp:

Include dependency graph

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.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 23 00:10:28 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003