[clang-tools-extra] [clang-pseudo] clang-format file (PR #87900)

via cfe-commits cfe-commits at lists.llvm.org
Sat Apr 6 15:46:02 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-tools-extra

Author: Jeremy Rifkin (jeremy-rifkin)

<details>
<summary>Changes</summary>

This PR just clang-formats the `clang-tools-extra/pseudo` directory to make contribution easier.

One issue I ran into is clang-format kept changing this region, despite the `clang-format off` directives, which I manually reverted:
```
//clang-format off
#define NONTERMINAL(NAME, ID) \
};                            \
}                             \
namespace NAME {              \
enum Rule : RuleID {
//clang-format on
```

---

Patch is 23.04 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/87900.diff


11 Files Affected:

- (modified) clang-tools-extra/pseudo/gen/Main.cpp (+2-2) 
- (modified) clang-tools-extra/pseudo/include/clang-pseudo/GLR.h (+2-2) 
- (modified) clang-tools-extra/pseudo/include/clang-pseudo/cxx/CXX.h (+1-1) 
- (modified) clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRGraph.h (+3-3) 
- (modified) clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRTable.h (+2-3) 
- (modified) clang-tools-extra/pseudo/lib/DirectiveTree.cpp (+4-4) 
- (modified) clang-tools-extra/pseudo/lib/GLR.cpp (+11-8) 
- (modified) clang-tools-extra/pseudo/lib/cxx/CXX.cpp (+67-68) 
- (modified) clang-tools-extra/pseudo/lib/grammar/GrammarBNF.cpp (+4-4) 
- (modified) clang-tools-extra/pseudo/tool/ClangPseudo.cpp (+5-4) 
- (modified) clang-tools-extra/pseudo/unittests/GLRTest.cpp (+16-22) 


``````````diff
diff --git a/clang-tools-extra/pseudo/gen/Main.cpp b/clang-tools-extra/pseudo/gen/Main.cpp
index 25cb26563837a6..779d5077f40ba7 100644
--- a/clang-tools-extra/pseudo/gen/Main.cpp
+++ b/clang-tools-extra/pseudo/gen/Main.cpp
@@ -74,7 +74,7 @@ std::string mangleSymbol(SymbolID SID, const Grammar &G) {
 #define TOK(X) llvm::StringRef(#X).upper(),
 #define KEYWORD(Keyword, Condition) llvm::StringRef(#Keyword).upper(),
 #include "clang/Basic/TokenKinds.def"
-      };
+  };
   if (isToken(SID))
     return TokNames[symbolToToken(SID)];
   std::string Name = G.symbolName(SID).str();
@@ -84,7 +84,7 @@ std::string mangleSymbol(SymbolID SID, const Grammar &G) {
 }
 
 // Mangles the RHS of a rule definition into a valid identifier.
-// 
+//
 // These are unique only for a fixed LHS.
 // e.g. for the grammar rule `ptr-declarator := ptr-operator ptr-declarator`,
 // it is `ptr_operator__ptr_declarator`.
diff --git a/clang-tools-extra/pseudo/include/clang-pseudo/GLR.h b/clang-tools-extra/pseudo/include/clang-pseudo/GLR.h
index 0100f818d4ed78..84610b47360b9d 100644
--- a/clang-tools-extra/pseudo/include/clang-pseudo/GLR.h
+++ b/clang-tools-extra/pseudo/include/clang-pseudo/GLR.h
@@ -120,8 +120,8 @@ struct ParseParams {
   const TokenStream &Code;
 
   // Arena for data structure used by the GLR algorithm.
-  ForestArena &Forest;  // Storage for the output forest.
-  GSS &GSStack;         // Storage for parsing stacks.
+  ForestArena &Forest; // Storage for the output forest.
+  GSS &GSStack;        // Storage for parsing stacks.
 };
 
 // Parses the given token stream as the start symbol with the GLR algorithm,
diff --git a/clang-tools-extra/pseudo/include/clang-pseudo/cxx/CXX.h b/clang-tools-extra/pseudo/include/clang-pseudo/cxx/CXX.h
index 7bbb4d2c00201f..897727ab61ca7a 100644
--- a/clang-tools-extra/pseudo/include/clang-pseudo/cxx/CXX.h
+++ b/clang-tools-extra/pseudo/include/clang-pseudo/cxx/CXX.h
@@ -65,7 +65,7 @@ enum Rule : RuleID {
 #define RULE(LHS, RHS, ID) RHS = ID,
 #include "CXXSymbols.inc"
 };
-}
+} // namespace dummy
 } // namespace rules
 } // namespace detail
 
diff --git a/clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRGraph.h b/clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRGraph.h
index dd9e87c2c172bf..4527f0e41c9452 100644
--- a/clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRGraph.h
+++ b/clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRGraph.h
@@ -143,9 +143,9 @@ class LRGraph {
   //   stmt := { . stmt-seq [recover=braces] }
   // has a Recovery { Src = S, Strategy=braces, Result=stmt-seq }.
   struct Recovery {
-    StateID Src; // The state we are in when encountering the error.
-    ExtensionID Strategy;      // Heuristic choosing the tokens to match.
-    SymbolID Result;           // The symbol that is produced.
+    StateID Src;          // The state we are in when encountering the error.
+    ExtensionID Strategy; // Heuristic choosing the tokens to match.
+    SymbolID Result;      // The symbol that is produced.
   };
 
   llvm::ArrayRef<State> states() const { return States; }
diff --git a/clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRTable.h b/clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRTable.h
index 1706b6936c9ea2..26c3d1f6c8c829 100644
--- a/clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRTable.h
+++ b/clang-tools-extra/pseudo/include/clang-pseudo/grammar/LRTable.h
@@ -76,14 +76,13 @@ class LRTable {
   // Expected to be called by LR parsers.
   // If the nonterminal is invalid here, returns std::nullopt.
   std::optional<StateID> getGoToState(StateID State,
-                                       SymbolID Nonterminal) const {
+                                      SymbolID Nonterminal) const {
     return Gotos.get(gotoIndex(State, Nonterminal, numStates()));
   }
   // Returns the state after we shift a terminal.
   // Expected to be called by LR parsers.
   // If the terminal is invalid here, returns std::nullopt.
-  std::optional<StateID> getShiftState(StateID State,
-                                        SymbolID Terminal) const {
+  std::optional<StateID> getShiftState(StateID State, SymbolID Terminal) const {
     return Shifts.get(shiftIndex(State, Terminal, numStates()));
   }
 
diff --git a/clang-tools-extra/pseudo/lib/DirectiveTree.cpp b/clang-tools-extra/pseudo/lib/DirectiveTree.cpp
index 9e853e46edc232..fcd2ea0c637d13 100644
--- a/clang-tools-extra/pseudo/lib/DirectiveTree.cpp
+++ b/clang-tools-extra/pseudo/lib/DirectiveTree.cpp
@@ -148,9 +148,9 @@ struct Dumper {
   llvm::raw_ostream &OS;
   unsigned Indent = 0;
 
-  Dumper(llvm::raw_ostream& OS) : OS(OS) {}
-  void operator()(const DirectiveTree& Tree) {
-    for (const auto& Chunk : Tree.Chunks)
+  Dumper(llvm::raw_ostream &OS) : OS(OS) {}
+  void operator()(const DirectiveTree &Tree) {
+    for (const auto &Chunk : Tree.Chunks)
       std::visit(*this, Chunk);
   }
   void operator()(const DirectiveTree::Conditional &Conditional) {
@@ -185,7 +185,7 @@ DirectiveTree DirectiveTree::parse(const TokenStream &Code) {
 // Define operator<< in terms of dump() functions above.
 #define OSTREAM_DUMP(Type)                                                     \
   llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const Type &T) {        \
-    Dumper{OS}(T);                                                         \
+    Dumper{OS}(T);                                                             \
     return OS;                                                                 \
   }
 OSTREAM_DUMP(DirectiveTree)
diff --git a/clang-tools-extra/pseudo/lib/GLR.cpp b/clang-tools-extra/pseudo/lib/GLR.cpp
index ac43c02db521eb..6f74d9a9196d57 100644
--- a/clang-tools-extra/pseudo/lib/GLR.cpp
+++ b/clang-tools-extra/pseudo/lib/GLR.cpp
@@ -317,7 +317,7 @@ template <typename T> void sortAndUnique(std::vector<T> &Vec) {
 // storage across calls).
 class GLRReduce {
   const ParseParams &Params;
-  const Language& Lang;
+  const Language ⟪
   // There are two interacting complications:
   // 1.  Performing one reduce can unlock new reduces on the newly-created head.
   // 2a. The ambiguous ForestNodes must be complete (have all sequence nodes).
@@ -390,7 +390,7 @@ class GLRReduce {
   struct PushSpec {
     // The last node popped before pushing. Its parent is the reduction base(s).
     // (Base is more fundamental, but this is cheaper to store).
-    const GSS::Node* LastPop = nullptr;
+    const GSS::Node *LastPop = nullptr;
     Sequence *Seq = nullptr;
   };
   KeyedQueue<Family, PushSpec> Sequences; // FIXME: rename => PendingPushes?
@@ -402,6 +402,7 @@ class GLRReduce {
   SymbolID Lookahead;
 
   Sequence TempSequence;
+
 public:
   GLRReduce(const ParseParams &Params, const Language &Lang)
       : Params(Params), Lang(Lang) {}
@@ -603,7 +604,8 @@ ForestNode &glrParse(const ParseParams &Params, SymbolID StartSymbol,
                      const Language &Lang) {
   GLRReduce Reduce(Params, Lang);
   assert(isNonterminal(StartSymbol) && "Start symbol must be a nonterminal");
-  llvm::ArrayRef<ForestNode> Terminals = Params.Forest.createTerminals(Params.Code);
+  llvm::ArrayRef<ForestNode> Terminals =
+      Params.Forest.createTerminals(Params.Code);
   auto &GSS = Params.GSStack;
 
   StateID StartState = Lang.Table.getStartState(StartSymbol);
@@ -628,9 +630,10 @@ ForestNode &glrParse(const ParseParams &Params, SymbolID StartSymbol,
   };
   // Each iteration fully processes a single token.
   for (unsigned I = 0; I < Terminals.size();) {
-    LLVM_DEBUG(llvm::dbgs() << llvm::formatv(
-                   "Next token {0} (id={1})\n",
-                  Lang.G.symbolName(Terminals[I].symbol()), Terminals[I].symbol()));
+    LLVM_DEBUG(llvm::dbgs()
+               << llvm::formatv("Next token {0} (id={1})\n",
+                                Lang.G.symbolName(Terminals[I].symbol()),
+                                Terminals[I].symbol()));
     // Consume the token.
     glrShift(Heads, Terminals[I], Params, Lang, NextHeads);
 
@@ -749,8 +752,8 @@ unsigned GSS::gc(std::vector<const Node *> &&Queue) {
   while (!Queue.empty()) {
     Node *N = const_cast<Node *>(Queue.back()); // Safe: we created these nodes.
     Queue.pop_back();
-    if (N->GCParity != GCParity) { // Not seen yet
-      N->GCParity = GCParity;      // Mark as seen
+    if (N->GCParity != GCParity) {       // Not seen yet
+      N->GCParity = GCParity;            // Mark as seen
       for (const Node *P : N->parents()) // And walk parents
         Queue.push_back(P);
     }
diff --git a/clang-tools-extra/pseudo/lib/cxx/CXX.cpp b/clang-tools-extra/pseudo/lib/cxx/CXX.cpp
index 4188dab31d3a91..5e39acfac48c8a 100644
--- a/clang-tools-extra/pseudo/lib/cxx/CXX.cpp
+++ b/clang-tools-extra/pseudo/lib/cxx/CXX.cpp
@@ -207,89 +207,88 @@ bool hasExclusiveType(const ForestNode *N) {
     // All supported symbols are nonterminals.
     assert(N->kind() == ForestNode::Sequence);
     switch (N->rule()) {
-      // seq := element seq: check element then continue into seq
-      case rule::decl_specifier_seq::decl_specifier__decl_specifier_seq:
-      case rule::defining_type_specifier_seq::defining_type_specifier__defining_type_specifier_seq:
-      case rule::type_specifier_seq::type_specifier__type_specifier_seq:
-        if (hasExclusiveType(N->children()[0]))
-          return true;
-        N = N->children()[1];
-        continue;
-      // seq := element: continue into element
-      case rule::decl_specifier_seq::decl_specifier:
-      case rule::type_specifier_seq::type_specifier:
-      case rule::defining_type_specifier_seq::defining_type_specifier:
-        N = N->children()[0];
-        continue;
-
-      // defining-type-specifier
-      case rule::defining_type_specifier::type_specifier:
-        N = N->children()[0];
-        continue;
-      case rule::defining_type_specifier::class_specifier:
-      case rule::defining_type_specifier::enum_specifier:
+    // seq := element seq: check element then continue into seq
+    case rule::decl_specifier_seq::decl_specifier__decl_specifier_seq:
+    case rule::defining_type_specifier_seq::
+        defining_type_specifier__defining_type_specifier_seq:
+    case rule::type_specifier_seq::type_specifier__type_specifier_seq:
+      if (hasExclusiveType(N->children()[0]))
         return true;
+      N = N->children()[1];
+      continue;
+    // seq := element: continue into element
+    case rule::decl_specifier_seq::decl_specifier:
+    case rule::type_specifier_seq::type_specifier:
+    case rule::defining_type_specifier_seq::defining_type_specifier:
+      N = N->children()[0];
+      continue;
 
-      // decl-specifier
-      case rule::decl_specifier::defining_type_specifier:
-        N = N->children()[0];
-        continue;
-      case rule::decl_specifier::CONSTEVAL:
-      case rule::decl_specifier::CONSTEXPR:
-      case rule::decl_specifier::CONSTINIT:
-      case rule::decl_specifier::INLINE:
-      case rule::decl_specifier::FRIEND:
-      case rule::decl_specifier::storage_class_specifier:
-      case rule::decl_specifier::TYPEDEF:
-      case rule::decl_specifier::function_specifier:
-        return false;
+    // defining-type-specifier
+    case rule::defining_type_specifier::type_specifier:
+      N = N->children()[0];
+      continue;
+    case rule::defining_type_specifier::class_specifier:
+    case rule::defining_type_specifier::enum_specifier:
+      return true;
 
-      // type-specifier
-      case rule::type_specifier::elaborated_type_specifier:
-      case rule::type_specifier::typename_specifier:
-        return true;
-      case rule::type_specifier::simple_type_specifier:
-        N = N->children()[0];
-        continue;
-      case rule::type_specifier::cv_qualifier:
-        return false;
+    // decl-specifier
+    case rule::decl_specifier::defining_type_specifier:
+      N = N->children()[0];
+      continue;
+    case rule::decl_specifier::CONSTEVAL:
+    case rule::decl_specifier::CONSTEXPR:
+    case rule::decl_specifier::CONSTINIT:
+    case rule::decl_specifier::INLINE:
+    case rule::decl_specifier::FRIEND:
+    case rule::decl_specifier::storage_class_specifier:
+    case rule::decl_specifier::TYPEDEF:
+    case rule::decl_specifier::function_specifier:
+      return false;
 
-      // simple-type-specifier
-      case rule::simple_type_specifier::type_name:
-      case rule::simple_type_specifier::template_name:
-      case rule::simple_type_specifier::builtin_type:
-      case rule::simple_type_specifier::nested_name_specifier__TEMPLATE__simple_template_id:
-      case rule::simple_type_specifier::nested_name_specifier__template_name:
-      case rule::simple_type_specifier::nested_name_specifier__type_name:
-      case rule::simple_type_specifier::decltype_specifier:
-      case rule::simple_type_specifier::placeholder_type_specifier:
-        return true;
-      case rule::simple_type_specifier::LONG:
-      case rule::simple_type_specifier::SHORT:
-      case rule::simple_type_specifier::SIGNED:
-      case rule::simple_type_specifier::UNSIGNED:
-        return false;
+    // type-specifier
+    case rule::type_specifier::elaborated_type_specifier:
+    case rule::type_specifier::typename_specifier:
+      return true;
+    case rule::type_specifier::simple_type_specifier:
+      N = N->children()[0];
+      continue;
+    case rule::type_specifier::cv_qualifier:
+      return false;
 
-      default:
-        LLVM_DEBUG(llvm::errs() << "Unhandled rule " << N->rule() << "\n");
-        llvm_unreachable("hasExclusiveType be exhaustive!");
+    // simple-type-specifier
+    case rule::simple_type_specifier::type_name:
+    case rule::simple_type_specifier::template_name:
+    case rule::simple_type_specifier::builtin_type:
+    case rule::simple_type_specifier::
+        nested_name_specifier__TEMPLATE__simple_template_id:
+    case rule::simple_type_specifier::nested_name_specifier__template_name:
+    case rule::simple_type_specifier::nested_name_specifier__type_name:
+    case rule::simple_type_specifier::decltype_specifier:
+    case rule::simple_type_specifier::placeholder_type_specifier:
+      return true;
+    case rule::simple_type_specifier::LONG:
+    case rule::simple_type_specifier::SHORT:
+    case rule::simple_type_specifier::SIGNED:
+    case rule::simple_type_specifier::UNSIGNED:
+      return false;
+
+    default:
+      LLVM_DEBUG(llvm::errs() << "Unhandled rule " << N->rule() << "\n");
+      llvm_unreachable("hasExclusiveType be exhaustive!");
     }
   }
 }
 
 llvm::DenseMap<ExtensionID, RuleGuard> buildGuards() {
-#define GUARD(cond)                                                            \
-  {                                                                            \
-    [](const GuardParams &P) { return cond; }                                  \
-  }
+#define GUARD(cond) {[](const GuardParams &P) { return cond; }}
 #define TOKEN_GUARD(kind, cond)                                                \
-  [](const GuardParams& P) {                                                   \
+  [](const GuardParams &P) {                                                   \
     const Token &Tok = onlyToken(tok::kind, P.RHS, P.Tokens);                  \
     return cond;                                                               \
   }
 #define SYMBOL_GUARD(kind, cond)                                               \
-  [](const GuardParams& P) {                                                   \
-    const ForestNode &N = onlySymbol(Symbol::kind, P.RHS, P.Tokens); \
+  [](const GuardParams &P) {                                                   \
+    const ForestNode &N = onlySymbol(Symbol::kind, P.RHS, P.Tokens);           \
     return cond;                                                               \
   }
   return {
diff --git a/clang-tools-extra/pseudo/lib/grammar/GrammarBNF.cpp b/clang-tools-extra/pseudo/lib/grammar/GrammarBNF.cpp
index f1b8e06e22432c..f3054af61e791f 100644
--- a/clang-tools-extra/pseudo/lib/grammar/GrammarBNF.cpp
+++ b/clang-tools-extra/pseudo/lib/grammar/GrammarBNF.cpp
@@ -60,8 +60,8 @@ class GrammarBuilder {
       Consider(Spec.Target);
       for (const RuleSpec::Element &Elt : Spec.Sequence) {
         Consider(Elt.Symbol);
-        for (const auto& KV : Elt.Attributes)
-           UniqueAttributeValues.insert(KV.second);
+        for (const auto &KV : Elt.Attributes)
+          UniqueAttributeValues.insert(KV.second);
       }
     }
     for (llvm::StringRef Name : UniqueNonterminals) {
@@ -183,7 +183,7 @@ class GrammarBuilder {
     struct Element {
       llvm::StringRef Symbol; // Name of the symbol
       // Attributes that are associated to the sequence symbol or rule.
-      std::vector<std::pair<llvm::StringRef/*Key*/, llvm::StringRef/*Value*/>>
+      std::vector<std::pair<llvm::StringRef /*Key*/, llvm::StringRef /*Value*/>>
           Attributes;
     };
     std::vector<Element> Sequence;
@@ -248,7 +248,7 @@ class GrammarBuilder {
     return true;
   }
   // Apply the parsed extensions (stored in RuleSpec) to the grammar Rule.
-  void applyAttributes(const RuleSpec& Spec, const GrammarTable& T, Rule& R) {
+  void applyAttributes(const RuleSpec &Spec, const GrammarTable &T, Rule &R) {
     auto LookupExtensionID = [&T](llvm::StringRef Name) {
       const auto It = llvm::partition_point(
           T.AttributeValues, [&](llvm::StringRef X) { return X < Name; });
diff --git a/clang-tools-extra/pseudo/tool/ClangPseudo.cpp b/clang-tools-extra/pseudo/tool/ClangPseudo.cpp
index 6a64760749cefe..a7ba24b2a25675 100644
--- a/clang-tools-extra/pseudo/tool/ClangPseudo.cpp
+++ b/clang-tools-extra/pseudo/tool/ClangPseudo.cpp
@@ -43,13 +43,14 @@ static opt<bool> PrintSource("print-source", desc("Print token stream"));
 static opt<bool> PrintTokens("print-tokens", desc("Print detailed token info"));
 static opt<bool>
     PrintDirectiveTree("print-directive-tree",
-                      desc("Print directive structure of source code"));
+                       desc("Print directive structure of source code"));
 static opt<bool>
     StripDirectives("strip-directives",
                     desc("Strip directives and select conditional sections"));
 static opt<bool> Disambiguate("disambiguate",
                               desc("Choose best tree from parse forest"));
-static opt<bool> PrintStatistics("print-statistics", desc("Print GLR parser statistics"));
+static opt<bool> PrintStatistics("print-statistics",
+                                 desc("Print GLR parser statistics"));
 static opt<bool> PrintForest("print-forest", desc("Print parse forest"));
 static opt<bool> ForestAbbrev("forest-abbrev", desc("Abbreviate parse forest"),
                               init(true));
@@ -63,8 +64,8 @@ static std::string readOrDie(llvm::StringRef Path) {
   llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> Text =
       llvm::MemoryBuffer::getFile(Path);
   if (std::error_code EC = Text.getError()) {
-    llvm::errs() << "Error: can't read file '" << Path
-                 << "': " << EC.message() << "\n";
+    llvm::errs() << "Error: can't read file '" << Path << "': " << EC.message()
+                 << "\n";
     ::exit(1);
   }
   return Text.get()->getBuffer().str();
diff --git a/clang-tools-extra/pseudo/unittests/GLRTest.cpp b/clang-tools-extra/pseudo/unittests/GLRTest.cpp
index f361fb78247acd..f7572efdcc8a06 100644
--- a/clang-tools-extra/pseudo/unittests/GLRTest.cpp
+++ b/clang-tools-extra/pseudo/unittests/GLRTest.cpp
@@ -52,7 +52,7 @@ Token::Index recoverBraces(Token::Index Begin, const TokenStream &Code) {
   EXPECT_GT(Begin, 0u);
   const Token &Left = Code.tokens()[Begin - 1];
   EXPECT_EQ(Left.Kind, tok::l_brace);
-  if (const auto* Right = Left.pair()) {
+  if (const auto *Right = Left.pair()) {
     EXPECT_EQ(Right->Kind, tok::r_brace);
     return Code.index(*Right);
   }
@@ -71,7 +71,7 @@ class GLRTest : public ::testing::Test {
     Empty.finalize();
     return Empty;
   }
- 
+
   void buildGrammar(std::vector<std::string> Nonterminals,
                     std::vector<std::string> Rules) {
     Nonterminals.push_back("_");
@@ -185,8 +185,8 @@ TEST_F(GLRTest, ReduceConflictsSplitting) {
       GSStack.addNode(1, &Arena.createTerminal(tok::identifier, 0), {GSSNode0});
 
   std::vector<const GSS::Node *> Heads = {GSSNode1};
-  glrReduce(Heads, tokenSymbol(tok::eof),
-            {emptyTokenStream(), Arena, GSStack}, TestLang);
+  glrR...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/87900


More information about the cfe-commits mailing list