diff options
Diffstat (limited to 'src/shared/cplusplus/Parser.h')
-rw-r--r-- | src/shared/cplusplus/Parser.h | 60 |
1 files changed, 34 insertions, 26 deletions
diff --git a/src/shared/cplusplus/Parser.h b/src/shared/cplusplus/Parser.h index 555e58c270..0c48ab9c54 100644 --- a/src/shared/cplusplus/Parser.h +++ b/src/shared/cplusplus/Parser.h @@ -78,6 +78,12 @@ public: bool parseAbstractDeclarator(DeclaratorAST *&node); bool parseEmptyDeclaration(DeclarationAST *&node); bool parseAccessDeclaration(DeclarationAST *&node); +#ifdef ICHECK_BUILD + bool parseQPropertyDeclaration(DeclarationAST *&node); + bool parseQEnumDeclaration(DeclarationAST *&node); + bool parseQFlags(DeclarationAST *&node); + bool parseQDeclareFlags(DeclarationAST *&node); +#endif bool parseAdditiveExpression(ExpressionAST *&node); bool parseAndExpression(ExpressionAST *&node); bool parseAsmDefinition(DeclarationAST *&node); @@ -85,12 +91,12 @@ public: bool parseAsmOperand(); bool parseAsmClobberList(); bool parseAssignmentExpression(ExpressionAST *&node); - bool parseBaseClause(BaseSpecifierAST *&node); - bool parseBaseSpecifier(BaseSpecifierAST *&node); + bool parseBaseClause(BaseSpecifierListAST *&node); + bool parseBaseSpecifier(BaseSpecifierListAST *&node); bool parseBlockDeclaration(DeclarationAST *&node); bool parseCppCastExpression(ExpressionAST *&node); bool parseCastExpression(ExpressionAST *&node); - bool parseClassSpecifier(SpecifierAST *&node); + bool parseClassSpecifier(SpecifierListAST *&node); bool parseCommaExpression(ExpressionAST *&node); bool parseCompoundStatement(StatementAST *&node); bool parseBreakStatement(StatementAST *&node); @@ -101,7 +107,7 @@ public: bool parseConditionalExpression(ExpressionAST *&node); bool parseConstantExpression(ExpressionAST *&node); bool parseCtorInitializer(CtorInitializerAST *&node); - bool parseCvQualifiers(SpecifierAST *&node); + bool parseCvQualifiers(SpecifierListAST *&node); bool parseDeclaratorOrAbstractDeclarator(DeclaratorAST *&node); bool parseDeclaration(DeclarationAST *&node); bool parseSimpleDeclaration(DeclarationAST *&node, bool acceptStructDeclarator = false); @@ -110,9 +116,9 @@ public: bool parseDeclarator(DeclaratorAST *&node, bool stopAtCppInitializer = false); bool parseDeleteExpression(ExpressionAST *&node); bool parseDoStatement(StatementAST *&node); - bool parseElaboratedTypeSpecifier(SpecifierAST *&node); - bool parseEnumSpecifier(SpecifierAST *&node); - bool parseEnumerator(EnumeratorAST *&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); @@ -135,19 +141,19 @@ public: bool parseLinkageSpecification(DeclarationAST *&node); bool parseLogicalAndExpression(ExpressionAST *&node); bool parseLogicalOrExpression(ExpressionAST *&node); - bool parseMemInitializer(MemInitializerAST *&node); - bool parseMemInitializerList(MemInitializerAST *&node); + bool parseMemInitializer(MemInitializerListAST *&node); + bool parseMemInitializerList(MemInitializerListAST *&node); bool parseMemberSpecification(DeclarationAST *&node); bool parseMultiplicativeExpression(ExpressionAST *&node); bool parseTemplateId(NameAST *&node); bool parseClassOrNamespaceName(NameAST *&node); bool parseNameId(NameAST *&node); bool parseName(NameAST *&node, bool acceptTemplateId = true); - bool parseNestedNameSpecifier(NestedNameSpecifierAST *&node, bool acceptTemplateId); - bool parseNestedNameSpecifierOpt(NestedNameSpecifierAST *&name, bool acceptTemplateId); + bool parseNestedNameSpecifier(NestedNameSpecifierListAST *&node, bool acceptTemplateId); + bool parseNestedNameSpecifierOpt(NestedNameSpecifierListAST *&name, bool acceptTemplateId); bool parseNamespace(DeclarationAST *&node); bool parseNamespaceAliasDefinition(DeclarationAST *&node); - bool parseNewArrayDeclarator(NewArrayDeclaratorAST *&node); + bool parseNewArrayDeclarator(NewArrayDeclaratorListAST *&node); bool parseNewExpression(ExpressionAST *&node); bool parseNewPlacement(NewPlacementAST *&node); bool parseNewInitializer(NewInitializerAST *&node); @@ -166,7 +172,7 @@ public: bool parsePostfixExpressionInternal(ExpressionAST *&node); bool parsePrimaryExpression(ExpressionAST *&node); bool parseNestedExpression(ExpressionAST *&node); - bool parsePtrOperator(PtrOperatorAST *&node); + bool parsePtrOperator(PtrOperatorListAST *&node); bool parseRelationalExpression(ExpressionAST *&node); bool parseShiftExpression(ExpressionAST *&node); bool parseStatement(StatementAST *&node); @@ -182,24 +188,24 @@ public: bool parseTemplateParameterList(DeclarationListAST *&node); bool parseThrowExpression(ExpressionAST *&node); bool parseTryBlockStatement(StatementAST *&node); - bool parseCatchClause(CatchClauseAST *&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(SpecifierAST *&node); - bool parseAttributeSpecifier(SpecifierAST *&node); - bool parseAttributeList(AttributeAST *&node); + bool parseBuiltinTypeSpecifier(SpecifierListAST *&node); + bool parseAttributeSpecifier(SpecifierListAST *&node); + bool parseAttributeList(AttributeListAST *&node); - bool parseSimpleTypeSpecifier(SpecifierAST *&node) + bool parseSimpleTypeSpecifier(SpecifierListAST *&node) { return parseDeclSpecifierSeq(node, true, true); } - bool parseTypeSpecifier(SpecifierAST *&node) + bool parseTypeSpecifier(SpecifierListAST *&node) { return parseDeclSpecifierSeq(node, true); } - bool parseDeclSpecifierSeq(SpecifierAST *&node, + bool parseDeclSpecifierSeq(SpecifierListAST *&node, bool onlyTypeSpecifiers = false, bool simplified = false); bool parseUnaryExpression(ExpressionAST *&node); @@ -208,6 +214,8 @@ public: bool parseUsingDirective(DeclarationAST *&node); bool parseWhileStatement(StatementAST *&node); + void parseExpressionWithOperatorPrecedence(ExpressionAST *&lhs, int minPrecedence); + // Qt MOC run bool parseQtMethod(ExpressionAST *&node); @@ -215,16 +223,15 @@ public: bool parseObjCExpression(ExpressionAST *&node); bool parseObjCClassForwardDeclaration(DeclarationAST *&node); bool parseObjCInterface(DeclarationAST *&node, - SpecifierAST *attributes = 0); + SpecifierListAST *attributes = 0); bool parseObjCProtocol(DeclarationAST *&node, - SpecifierAST *attributes = 0); + SpecifierListAST *attributes = 0); bool parseObjCSynchronizedStatement(StatementAST *&node); bool parseObjCEncodeExpression(ExpressionAST *&node); bool parseObjCProtocolExpression(ExpressionAST *&node); bool parseObjCSelectorExpression(ExpressionAST *&node); bool parseObjCStringLiteral(ExpressionAST *&node); - bool parseObjCMethodSignature(); bool parseObjCMessageExpression(ExpressionAST *&node); bool parseObjCMessageReceiver(ExpressionAST *&node); bool parseObjCMessageArguments(ObjCSelectorAST *&selNode, ObjCMessageArgumentListAST *& argNode); @@ -237,7 +244,7 @@ public: bool parseObjCInterfaceMemberDeclaration(DeclarationAST *&node); bool parseObjCInstanceVariableDeclaration(DeclarationAST *&node); bool parseObjCPropertyDeclaration(DeclarationAST *&node, - SpecifierAST *attributes = 0); + SpecifierListAST *attributes = 0); bool parseObjCImplementation(DeclarationAST *&node); bool parseObjCMethodPrototype(ObjCMethodPrototypeAST *&node); bool parseObjCPropertyAttribute(ObjCPropertyAttributeAST *&node); @@ -251,7 +258,7 @@ public: bool lookAtObjCSelector() const; bool skipUntil(int token); - bool skipUntilDeclaration(); + void skipUntilDeclaration(); bool skipUntilStatement(); bool skip(int l, int r); @@ -265,7 +272,7 @@ public: void match(int kind, unsigned *token); bool maybeAmbiguousStatement(DeclarationStatementAST *ast) const; - bool maybeForwardOrClassDeclaration(SpecifierAST *decl_specifier_seq) const; + bool maybeForwardOrClassDeclaration(SpecifierListAST *decl_specifier_seq) const; bool isPointerDeclaration(DeclarationStatementAST *ast) const; private: @@ -308,6 +315,7 @@ private: bool _objCEnabled: 1; bool _inFunctionBody: 1; bool _inObjCImplementationContext: 1; + int _expressionDepth; std::map<unsigned, TemplateArgumentListEntry> _templateArgumentList; |