diff options
Diffstat (limited to 'src/shared/cplusplus/AST.h')
-rw-r--r-- | src/shared/cplusplus/AST.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h index f345fd76b0..d22735eeb1 100644 --- a/src/shared/cplusplus/AST.h +++ b/src/shared/cplusplus/AST.h @@ -131,6 +131,7 @@ public: virtual ExpressionListAST *asExpressionList() { return 0; } virtual ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement() { return 0; } virtual ExpressionStatementAST *asExpressionStatement() { return 0; } + virtual ForeachStatementAST *asForeachStatement() { return 0; } virtual ForStatementAST *asForStatement() { return 0; } virtual FunctionDeclaratorAST *asFunctionDeclarator() { return 0; } virtual FunctionDefinitionAST *asFunctionDefinition() { return 0; } @@ -1135,6 +1136,37 @@ protected: virtual void accept0(ASTVisitor *visitor); }; +class CPLUSPLUS_EXPORT ForeachStatementAST: public StatementAST +{ +public: + unsigned foreach_token; + unsigned lparen_token; + // declaration + SpecifierAST *type_specifiers; + DeclaratorAST *declarator; + // or an expression + ExpressionAST *initializer; + unsigned comma_token; + ExpressionAST *expression; + unsigned rparen_token; + StatementAST *statement; + +public: // annotations + Block *symbol; + +public: + virtual ForeachStatementAST *asForeachStatement() + { return this; } + + virtual unsigned firstToken() const; + virtual unsigned lastToken() const; + + virtual ForeachStatementAST *clone(MemoryPool *pool) const; + +protected: + virtual void accept0(ASTVisitor *visitor); +}; + class CPLUSPLUS_EXPORT ForStatementAST: public StatementAST { public: |