9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_INTEGRAL_LITERAL_EXPRESSION_MATCHER_H
10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_INTEGRAL_LITERAL_EXPRESSION_MATCHER_H
12#include <clang/Lex/Token.h>
13#include <llvm/ADT/ArrayRef.h>
33 : Current(Tokens.begin()), End(Tokens.end()), CommaAllowed(CommaAllowed) {
41 bool consume(tok::TokenKind
Kind);
42 bool nonTerminalChainedExpr(
44 const std::function<
bool(Token)> &IsKind);
45 template <tok::TokenKind Kind>
46 bool nonTerminalChainedExpr(
48 return nonTerminalChainedExpr(NonTerminal,
49 [](Token Tok) {
return Tok.is(
Kind); });
51 template <tok::TokenKind K1, tok::TokenKind K2, tok::TokenKind... Ks>
52 bool nonTerminalChainedExpr(
53 bool (IntegralLiteralExpressionMatcher::*NonTerminal)()) {
54 return nonTerminalChainedExpr(
55 NonTerminal, [](Token Tok) {
return Tok.isOneOf(K1, K2, Ks...); });
60 bool multiplicativeExpr();
64 bool relationalExpr();
67 bool exclusiveOrExpr();
68 bool inclusiveOrExpr();
69 bool logicalAndExpr();
71 bool conditionalExpr();
75 ArrayRef<Token>::iterator Current;
76 ArrayRef<Token>::iterator End;
IntegralLiteralExpressionMatcher(ArrayRef< Token > Tokens, bool CommaAllowed)
LiteralSize largestLiteralSize() const