diff options
author | Daniel Jasper <djasper@google.com> | 2012-12-20 20:25:19 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2012-12-20 20:25:19 +0000 |
commit | 909610266e67ce40a9d8a4df8be81b3de999b120 (patch) | |
tree | e1be36c8f788aca0f9e0d28263424a1fcbc6711e /lib/Parse/ParseExpr.cpp | |
parent | 154120cde4f56ed04261bab302fdbbed1a7f080b (diff) |
Move operator precedence calculation to new header
Thereby, it can be reused by clang-format and others.
Review: http://llvm-reviews.chandlerc.com/D229
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170757 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseExpr.cpp')
-rw-r--r-- | lib/Parse/ParseExpr.cpp | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index b7705f8c0d..5229336929 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -32,67 +32,6 @@ #include "llvm/ADT/SmallVector.h" using namespace clang; -/// \brief Return the precedence of the specified binary operator token. -static prec::Level getBinOpPrecedence(tok::TokenKind Kind, - bool GreaterThanIsOperator, - bool CPlusPlus0x) { - switch (Kind) { - case tok::greater: - // C++ [temp.names]p3: - // [...] When parsing a template-argument-list, the first - // non-nested > is taken as the ending delimiter rather than a - // greater-than operator. [...] - if (GreaterThanIsOperator) - return prec::Relational; - return prec::Unknown; - - case tok::greatergreater: - // C++0x [temp.names]p3: - // - // [...] Similarly, the first non-nested >> is treated as two - // consecutive but distinct > tokens, the first of which is - // taken as the end of the template-argument-list and completes - // the template-id. [...] - if (GreaterThanIsOperator || !CPlusPlus0x) - return prec::Shift; - return prec::Unknown; - - default: return prec::Unknown; - case tok::comma: return prec::Comma; - case tok::equal: - case tok::starequal: - case tok::slashequal: - case tok::percentequal: - case tok::plusequal: - case tok::minusequal: - case tok::lesslessequal: - case tok::greatergreaterequal: - case tok::ampequal: - case tok::caretequal: - case tok::pipeequal: return prec::Assignment; - case tok::question: return prec::Conditional; - case tok::pipepipe: return prec::LogicalOr; - case tok::ampamp: return prec::LogicalAnd; - case tok::pipe: return prec::InclusiveOr; - case tok::caret: return prec::ExclusiveOr; - case tok::amp: return prec::And; - case tok::exclaimequal: - case tok::equalequal: return prec::Equality; - case tok::lessequal: - case tok::less: - case tok::greaterequal: return prec::Relational; - case tok::lessless: return prec::Shift; - case tok::plus: - case tok::minus: return prec::Additive; - case tok::percent: - case tok::slash: - case tok::star: return prec::Multiplicative; - case tok::periodstar: - case tok::arrowstar: return prec::PointerToMember; - } -} - - /// \brief Simple precedence-based parser for binary/ternary operators. /// /// Note: we diverge from the C99 grammar when parsing the assignment-expression |