diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2011-05-16 10:53:42 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2011-05-16 11:05:30 +0200 |
commit | 67704b8b41b053eddbd4119a04115fb0fb2c9237 (patch) | |
tree | 094fb9bc849f2467d6389267d5613574a48f478f /src/shared/cplusplus/Parser.h | |
parent | 5a39fba5805d34fbef16a50d20312b8a9de5bdfc (diff) | |
download | qt-creator-67704b8b41b053eddbd4119a04115fb0fb2c9237.tar.gz |
move src/shared/cplusplus/ -> src/libs/3rdparty/cplusplus/
Approved-by: legal
Diffstat (limited to 'src/shared/cplusplus/Parser.h')
-rw-r--r-- | src/shared/cplusplus/Parser.h | 364 |
1 files changed, 0 insertions, 364 deletions
diff --git a/src/shared/cplusplus/Parser.h b/src/shared/cplusplus/Parser.h deleted file mode 100644 index 2b4cb5a419..0000000000 --- a/src/shared/cplusplus/Parser.h +++ /dev/null @@ -1,364 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (info@qt.nokia.com) -** -** -** GNU Lesser General Public License Usage -** -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this file. -** Please review the following information to ensure the GNU Lesser General -** Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** Other Usage -** -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** If you have questions regarding the use of this file, please contact -** Nokia at info@qt.nokia.com. -** -**************************************************************************/ -// Copyright (c) 2008 Roberto Raggi <roberto.raggi@gmail.com> -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#ifndef CPLUSPLUS_PARSER_H -#define CPLUSPLUS_PARSER_H - -#include "CPlusPlusForwardDeclarations.h" -#include "ASTfwd.h" -#include "Token.h" -#include "TranslationUnit.h" -#include "MemoryPool.h" -#include <map> - -namespace CPlusPlus { - -class CPLUSPLUS_EXPORT Parser -{ -public: - Parser(TranslationUnit *translationUnit); - ~Parser(); - - bool qtMocRunEnabled() const; - void setQtMocRunEnabled(bool onoff); - - bool cxx0xEnabled() const; - void setCxxOxEnabled(bool onoff); - - bool objCEnabled() const; - void setObjCEnabled(bool onoff); - - bool parseTranslationUnit(TranslationUnitAST *&node); - -public: - bool parseAccessSpecifier(SpecifierAST *&node); - bool parseExpressionList(ExpressionListAST *&node); - bool parseAbstractCoreDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_specifier_list); - bool parseAbstractDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_specifier_list); - bool parseEmptyDeclaration(DeclarationAST *&node); - bool parseAccessDeclaration(DeclarationAST *&node); - bool parseQtPropertyDeclaration(DeclarationAST *&node); - bool parseQtEnumDeclaration(DeclarationAST *&node); - bool parseQtFlags(DeclarationAST *&node); - bool parseQtInterfaces(DeclarationAST *&node); - bool parseAdditiveExpression(ExpressionAST *&node); - bool parseAndExpression(ExpressionAST *&node); - bool parseAsmDefinition(DeclarationAST *&node); - bool parseAsmOperandList(); - bool parseAsmOperand(); - bool parseAsmClobberList(); - bool parseAssignmentExpression(ExpressionAST *&node); - bool parseBaseClause(BaseSpecifierListAST *&node); - bool parseBaseSpecifier(BaseSpecifierListAST *&node); - bool parseBlockDeclaration(DeclarationAST *&node); - bool parseCppCastExpression(ExpressionAST *&node); - bool parseCastExpression(ExpressionAST *&node); - bool parseClassSpecifier(SpecifierListAST *&node); - bool parseCommaExpression(ExpressionAST *&node); - bool parseCompoundStatement(StatementAST *&node); - bool parseBreakStatement(StatementAST *&node); - bool parseContinueStatement(StatementAST *&node); - bool parseGotoStatement(StatementAST *&node); - bool parseReturnStatement(StatementAST *&node); - bool parseCondition(ExpressionAST *&node); - bool parseConditionalExpression(ExpressionAST *&node); - bool parseConstantExpression(ExpressionAST *&node); - bool parseCtorInitializer(CtorInitializerAST *&node); - bool parseCvQualifiers(SpecifierListAST *&node); - bool parseDeclaratorOrAbstractDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_specifier_list); - bool parseDeclaration(DeclarationAST *&node); - bool parseSimpleDeclaration(DeclarationAST *&node, ClassSpecifierAST *declaringClass = 0); - bool parseDeclarationStatement(StatementAST *&node); - bool parseCoreDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_specifier_list, ClassSpecifierAST *declaringClass); - bool parseDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_specifier_list, ClassSpecifierAST *declaringClass = 0); - bool parseDeleteExpression(ExpressionAST *&node); - bool parseDoStatement(StatementAST *&node); - bool parseElaboratedTypeSpecifier(SpecifierListAST *&node); - bool parseEnumSpecifier(SpecifierListAST *&node); - bool parseEnumerator(EnumeratorListAST *&node); - bool parseEqualityExpression(ExpressionAST *&node); - bool parseExceptionDeclaration(ExceptionDeclarationAST *&node); - bool parseExceptionSpecification(ExceptionSpecificationAST *&node); - bool parseExclusiveOrExpression(ExpressionAST *&node); - bool parseExpression(ExpressionAST *&node); - bool parseExpressionOrDeclarationStatement(StatementAST *&node); - bool parseExpressionStatement(StatementAST *&node); - bool parseForInitStatement(StatementAST *&node); - bool parseForeachStatement(StatementAST *&node); - bool parseForStatement(StatementAST *&node); - bool parseFunctionBody(StatementAST *&node); - bool parseIfStatement(StatementAST *&node); - bool parseInclusiveOrExpression(ExpressionAST *&node); - bool parseInitDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_specifier_list, ClassSpecifierAST *declaringClass); - bool parseInitializerList(ExpressionListAST *&node); - bool parseInitializer(ExpressionAST *&node, unsigned *equals_token); - bool parseInitializerClause(ExpressionAST *&node); - bool parseLabeledStatement(StatementAST *&node); - bool parseLinkageBody(DeclarationAST *&node); - bool parseLinkageSpecification(DeclarationAST *&node); - bool parseLogicalAndExpression(ExpressionAST *&node); - bool parseLogicalOrExpression(ExpressionAST *&node); - bool parseMemInitializer(MemInitializerListAST *&node); - bool parseMemInitializerList(MemInitializerListAST *&node); - bool parseMemberSpecification(DeclarationAST *&node, ClassSpecifierAST *declaringClass); - bool parseMultiplicativeExpression(ExpressionAST *&node); - bool parseTemplateId(NameAST *&node, unsigned template_token = 0); - bool parseClassOrNamespaceName(NameAST *&node); - bool parseNameId(NameAST *&node); - bool parseName(NameAST *&node, bool acceptTemplateId = true); - bool parseNestedNameSpecifier(NestedNameSpecifierListAST *&node, bool acceptTemplateId); - bool parseNestedNameSpecifierOpt(NestedNameSpecifierListAST *&name, bool acceptTemplateId); - bool parseNamespace(DeclarationAST *&node); - bool parseNamespaceAliasDefinition(DeclarationAST *&node); - bool parseNewArrayDeclarator(NewArrayDeclaratorListAST *&node); - bool parseNewExpression(ExpressionAST *&node); - bool parseNewPlacement(NewPlacementAST *&node); - bool parseNewInitializer(NewInitializerAST *&node); - bool parseNewTypeId(NewTypeIdAST *&node); - bool parseOperator(OperatorAST *&node); - bool parseConversionFunctionId(NameAST *&node); - bool parseOperatorFunctionId(NameAST *&node); - bool parseParameterDeclaration(ParameterDeclarationAST *&node); - bool parseParameterDeclarationClause(ParameterDeclarationClauseAST *&node); - bool parseParameterDeclarationList(ParameterDeclarationListAST *&node); - bool parsePmExpression(ExpressionAST *&node); - bool parseTypeidExpression(ExpressionAST *&node); - bool parseTypenameCallExpression(ExpressionAST *&node); - bool parseCorePostfixExpression(ExpressionAST *&node); - bool parsePostfixExpression(ExpressionAST *&node); - bool parsePostfixExpressionInternal(ExpressionAST *&node); - bool parsePrimaryExpression(ExpressionAST *&node); - bool parseNestedExpression(ExpressionAST *&node); - bool parsePtrOperator(PtrOperatorListAST *&node); - bool parseRelationalExpression(ExpressionAST *&node); - bool parseShiftExpression(ExpressionAST *&node); - bool parseStatement(StatementAST *&node); - bool parseThisExpression(ExpressionAST *&node); - bool parseBoolLiteral(ExpressionAST *&node); - bool parseNumericLiteral(ExpressionAST *&node); - bool parseStringLiteral(ExpressionAST *&node); - bool parseSwitchStatement(StatementAST *&node); - bool parseTemplateArgument(ExpressionAST *&node); - bool parseTemplateArgumentList(ExpressionListAST *&node); - bool parseTemplateDeclaration(DeclarationAST *&node); - bool parseTemplateParameter(DeclarationAST *&node); - bool parseTemplateParameterList(DeclarationListAST *&node); - bool parseThrowExpression(ExpressionAST *&node); - bool parseTryBlockStatement(StatementAST *&node); - bool parseCatchClause(CatchClauseListAST *&node); - bool parseTypeId(ExpressionAST *&node); - bool parseTypeIdList(ExpressionListAST *&node); - bool parseTypenameTypeParameter(DeclarationAST *&node); - bool parseTemplateTypeParameter(DeclarationAST *&node); - bool parseTypeParameter(DeclarationAST *&node); - - bool parseBuiltinTypeSpecifier(SpecifierListAST *&node); - bool parseAttributeSpecifier(SpecifierListAST *&node); - bool parseAttributeList(AttributeListAST *&node); - - bool parseSimpleTypeSpecifier(SpecifierListAST *&node) - { return parseDeclSpecifierSeq(node, true, true); } - - bool parseTypeSpecifier(SpecifierListAST *&node) - { return parseDeclSpecifierSeq(node, true); } - - bool parseDeclSpecifierSeq(SpecifierListAST *&node, - bool onlyTypeSpecifiers = false, - bool simplified = false); - bool parseUnaryExpression(ExpressionAST *&node); - bool parseUnqualifiedName(NameAST *&node, bool acceptTemplateId = true); - bool parseUsing(DeclarationAST *&node); - bool parseUsingDirective(DeclarationAST *&node); - bool parseWhileStatement(StatementAST *&node); - - void parseExpressionWithOperatorPrecedence(ExpressionAST *&lhs, int minPrecedence); - - // Qt MOC run - bool parseQtMethod(ExpressionAST *&node); - - // C++0x - bool parseInitializer0x(ExpressionAST *&node, unsigned *equals_token); - bool parseBraceOrEqualInitializer0x(ExpressionAST *&node); - bool parseInitializerClause0x(ExpressionAST *&node); - bool parseInitializerList0x(ExpressionListAST *&node); - bool parseBracedInitList0x(ExpressionAST *&node); - - bool parseLambdaExpression(ExpressionAST *&node); - bool parseLambdaIntroducer(LambdaIntroducerAST *&node); - bool parseLambdaCapture(LambdaCaptureAST *&node); - bool parseLambdaDeclarator(LambdaDeclaratorAST *&node); - bool parseCapture(CaptureAST *&node); - bool parseCaptureList(CaptureListAST *&node); - bool parseTrailingReturnType(TrailingReturnTypeAST *&node); - bool parseTrailingTypeSpecifierSeq(SpecifierListAST *&node); - - // ObjC++ - bool parseObjCExpression(ExpressionAST *&node); - bool parseObjCClassForwardDeclaration(DeclarationAST *&node); - bool parseObjCInterface(DeclarationAST *&node, - SpecifierListAST *attributes = 0); - bool parseObjCProtocol(DeclarationAST *&node, - SpecifierListAST *attributes = 0); - - bool parseObjCSynchronizedStatement(StatementAST *&node); - bool parseObjCEncodeExpression(ExpressionAST *&node); - bool parseObjCProtocolExpression(ExpressionAST *&node); - bool parseObjCSelectorExpression(ExpressionAST *&node); - bool parseObjCStringLiteral(ExpressionAST *&node); - bool parseObjCMessageExpression(ExpressionAST *&node); - bool parseObjCMessageReceiver(ExpressionAST *&node); - bool parseObjCMessageArguments(ObjCSelectorAST *&selNode, ObjCMessageArgumentListAST *& argNode); - bool parseObjCSelectorArg(ObjCSelectorArgumentAST *&selNode, ObjCMessageArgumentAST *&argNode); - bool parseObjCMethodDefinitionList(DeclarationListAST *&node); - bool parseObjCMethodDefinition(DeclarationAST *&node); - - bool parseObjCProtocolRefs(ObjCProtocolRefsAST *&node); - bool parseObjClassInstanceVariables(ObjCInstanceVariablesDeclarationAST *&node); - bool parseObjCInterfaceMemberDeclaration(DeclarationAST *&node); - bool parseObjCInstanceVariableDeclaration(DeclarationAST *&node); - bool parseObjCPropertyDeclaration(DeclarationAST *&node, - SpecifierListAST *attributes = 0); - bool parseObjCImplementation(DeclarationAST *&node); - bool parseObjCMethodPrototype(ObjCMethodPrototypeAST *&node); - bool parseObjCPropertyAttribute(ObjCPropertyAttributeAST *&node); - bool parseObjCTypeName(ObjCTypeNameAST *&node); - bool parseObjCSelector(unsigned &selector_token); - bool parseObjCKeywordDeclaration(ObjCSelectorArgumentAST *&argument, ObjCMessageArgumentDeclarationAST *&node); - bool parseObjCTypeQualifiers(unsigned &type_qualifier); - bool peekAtObjCContextKeyword(int kind); - bool parseObjCContextKeyword(int kind, unsigned &in_token); - - bool lookAtObjCSelector() const; - - bool skipUntil(int token); - void skipUntilDeclaration(); - bool skipUntilStatement(); - bool skip(int l, int r); - - bool lookAtTypeParameter() const; - bool lookAtCVQualifier() const; - bool lookAtFunctionSpecifier() const; - bool lookAtStorageClassSpecifier() const; - bool lookAtBuiltinTypeSpecifier() const; - bool lookAtClassKey() const; - - const Identifier *className(ClassSpecifierAST *ast) const; - const Identifier *identifier(NameAST *name) const; - - void match(int kind, unsigned *token); - - bool maybeAmbiguousStatement(DeclarationStatementAST *ast, StatementAST *&node); - bool maybeForwardOrClassDeclaration(SpecifierListAST *decl_specifier_seq) const; - - int peekAtQtContextKeyword() const; - - bool switchTemplateArguments(bool templateArguments); - - bool blockErrors(bool block); - void warning(unsigned index, const char *format, ...); - void error(unsigned index, const char *format, ...); - void fatal(unsigned index, const char *format, ...); - - inline const Token &tok(int i = 1) const - { return _translationUnit->tokenAt(_tokenIndex + i - 1); } - - inline int LA(int n = 1) const - { return _translationUnit->tokenKind(_tokenIndex + n - 1); } - - inline int consumeToken() - { return _tokenIndex++; } - - inline unsigned cursor() const - { return _tokenIndex; } - - void rewind(unsigned cursor); - - struct TemplateArgumentListEntry { - unsigned index; - unsigned cursor; - ExpressionListAST *ast; - - TemplateArgumentListEntry(unsigned index = 0, unsigned cursor = 0, ExpressionListAST *ast = 0) - : index(index), cursor(cursor), ast(ast) {} - }; - - TemplateArgumentListEntry *templateArgumentListEntry(unsigned tokenIndex); - void clearTemplateArgumentList() { _templateArgumentList.clear(); } - -private: - TranslationUnit *_translationUnit; - Control *_control; - MemoryPool *_pool; - unsigned _tokenIndex; - bool _templateArguments: 1; - bool _qtMocRunEnabled: 1; - bool _cxx0xEnabled: 1; - bool _objCEnabled: 1; - bool _inFunctionBody: 1; - bool _inObjCImplementationContext: 1; - bool _inExpressionStatement: 1; - int _expressionDepth; - - MemoryPool _expressionStatementTempPool; - std::map<unsigned, TemplateArgumentListEntry> _templateArgumentList; - - class Rewind; - friend class Rewind; - -private: - Parser(const Parser& source); - void operator =(const Parser& source); -}; - -} // namespace CPlusPlus - - -#endif // CPLUSPLUS_PARSER_H |