diff options
author | Roberto Raggi <qtc-committer@nokia.com> | 2008-12-03 14:01:19 +0100 |
---|---|---|
committer | Roberto Raggi <qtc-committer@nokia.com> | 2008-12-03 14:01:58 +0100 |
commit | e2e4fcd95b39fb00d132d4018eac15fcfcf9c228 (patch) | |
tree | 953e9e198cdcf06cd6f87feb8c3a9f961f4d0bfd /shared/cplusplus/TranslationUnit.cpp | |
parent | 4222fae24b8cf0f914da032ce4d7ae2b03917bb1 (diff) | |
download | qt-creator-e2e4fcd95b39fb00d132d4018eac15fcfcf9c228.tar.gz |
Added different parsing mode to TranslationUnit/CppDocument.
Diffstat (limited to 'shared/cplusplus/TranslationUnit.cpp')
-rw-r--r-- | shared/cplusplus/TranslationUnit.cpp | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/shared/cplusplus/TranslationUnit.cpp b/shared/cplusplus/TranslationUnit.cpp index 896ab7d1a5..bc4d219e0f 100644 --- a/shared/cplusplus/TranslationUnit.cpp +++ b/shared/cplusplus/TranslationUnit.cpp @@ -146,7 +146,7 @@ unsigned TranslationUnit::matchingBrace(unsigned index) const MemoryPool *TranslationUnit::memoryPool() const { return _pool; } -TranslationUnitAST *TranslationUnit::ast() const +AST *TranslationUnit::ast() const { return _ast; } bool TranslationUnit::isTokenized() const @@ -218,17 +218,49 @@ bool TranslationUnit::skipFunctionBody() const void TranslationUnit::setSkipFunctionBody(bool skipFunctionBody) { _skipFunctionBody = skipFunctionBody; } -void TranslationUnit::parse() +bool TranslationUnit::parse(ParseMode mode) { if (isParsed()) - return; + return false; if (! isTokenized()) tokenize(); Parser parser(this); parser.setQtMocRunEnabled(_qtMocRunEnabled); - parser.parseTranslationUnit(_ast); + + bool parsed = false; + + switch (mode) { + case ParseTranlationUnit: { + TranslationUnitAST *node = 0; + parsed = parser.parseTranslationUnit(node); + _ast = node; + } break; + + case ParseDeclaration: { + DeclarationAST *node = 0; + parsed = parser.parseDeclaration(node); + _ast = node; + } break; + + case ParseExpression: { + ExpressionAST *node = 0; + parsed = parser.parseExpression(node); + _ast = node; + } break; + + case ParseStatement: { + StatementAST *node = 0; + parsed = parser.parseStatement(node); + _ast = node; + } break; + + default: + break; + } // switch + + return parsed; } void TranslationUnit::pushLineOffset(unsigned offset) |