Parse C++ 0x argument packs.

This commit is contained in:
Roberto Raggi
2010-03-25 12:15:38 +01:00
parent 1bdae0815d
commit fe261bc256
13 changed files with 220 additions and 6 deletions

View File

@@ -162,6 +162,7 @@ public:
virtual BaseSpecifierAST *asBaseSpecifier() { return 0; }
virtual BinaryExpressionAST *asBinaryExpression() { return 0; }
virtual BoolLiteralAST *asBoolLiteral() { return 0; }
virtual BracedInitializerAST *asBracedInitializer() { return 0; }
virtual BreakStatementAST *asBreakStatement() { return 0; }
virtual CallAST *asCall() { return 0; }
virtual CaptureAST *asCapture() { return 0; }
@@ -2895,6 +2896,7 @@ public:
public:
SizeofExpressionAST()
: sizeof_token(0)
, dot_dot_dot_token(0)
, lparen_token(0)
, expression(0)
, rparen_token(0)
@@ -4265,6 +4267,33 @@ protected:
virtual bool match0(AST *, ASTMatcher *);
};
class BracedInitializerAST: public ExpressionAST
{
public:
unsigned lbrace_token;
ExpressionListAST *expression_list;
unsigned comma_token;
unsigned rbrace_token;
public:
BracedInitializerAST()
: lbrace_token(0)
, expression_list(0)
, comma_token(0)
, rbrace_token(0)
{}
virtual BracedInitializerAST *asBracedInitializer() { return this; }
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
virtual BracedInitializerAST *clone(MemoryPool *pool) const;
protected:
virtual void accept0(ASTVisitor *visitor);
virtual bool match0(AST *, ASTMatcher *);
};
} // end of namespace CPlusPlus
#endif // CPLUSPLUS_AST_H