[clang] [ASTMatchers][Docs] make dump_ast_matchers.py read classes from sources (PR #203784)
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 26 08:50:13 PDT 2026
================
@@ -6,17 +6,27 @@
import collections
import re
import os
-from urllib.request import urlopen
+CURRENT_DIR = os.path.dirname(__file__)
-CLASS_INDEX_PAGE_URL = "https://clang.llvm.org/doxygen/classes.html"
-try:
- CLASS_INDEX_PAGE = urlopen(CLASS_INDEX_PAGE_URL).read().decode("utf-8")
-except Exception as e:
- CLASS_INDEX_PAGE = None
- print("Unable to get %s: %s" % (CLASS_INDEX_PAGE_URL, e))
-CURRENT_DIR = os.path.dirname(__file__)
+def _build_local_class_set():
+ """Return the set of class names declared in clang/include/clang/AST/"""
+ classes = set()
+ ast_dir = os.path.join(CURRENT_DIR, "../../include/clang/AST")
+ for fname in os.listdir(ast_dir):
+ if not fname.endswith(".h"):
+ continue
+ try:
+ content = open(os.path.join(ast_dir, fname)).read()
+ except OSError:
+ continue
+ for m in re.finditer(r"\b(?:class|struct)\s+([A-Z][a-zA-Z0-9_]+)\b", content):
----------------
Endilll wrote:
Hmm, I suggested clang-format infra based on the fact that this script does not have all the necessary information from the build system to be able to semantically analyze the header like the compiler does, but maybe not that much is actually needed for libclang to parse it.
https://github.com/llvm/llvm-project/pull/203784
More information about the cfe-commits
mailing list