[clang] [llvm] [clang] Add/enhance documentation for some important classes. (PR #109795)
Yanzuo Liu via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 24 10:02:39 PDT 2024
================
@@ -79,8 +79,24 @@ enum class StringLiteralKind;
// AST classes for statements.
//===----------------------------------------------------------------------===//
-/// Stmt - This represents one statement.
+/// A statement or expression in the program.
///
+/// This is the base for the hierarchy of statements (ForStmt, ReturnStmt...)
+/// as well as expressions (Expr, CastExpr, IntegerLiteral...).
+/// Classing expressions as Stmt allows them to appear as statements without
+/// needing an extra "expression-statement" node.
+///
+/// Statements can have children and so form trees. e.g. `while (i>0) i--;`
+///
+/// WhileStmt
+/// |-BinaryOperator >
+/// | |-DeclRefExpr i
+/// | `-IntegerLiteral 0
+/// `-UnaryOperator --
+/// DeclRefExpr i
+///
----------------
zwuis wrote:
We can use `\code` and `\endcode` commands for code block so that it is treated as code instead of text by doxygen.
```cpp
/// \code
/// WhileStmt
/// |-BinaryOperator >
/// ...
/// \endcode
```
https://github.com/llvm/llvm-project/pull/109795
More information about the llvm-commits
mailing list