@@ -8,6 +8,7 @@ CodeQL has a large selection of classes for representing the abstract syntax tre
88.. include :: ../reusables/abstract-syntax-tree.rst
99
1010An ``IDENTIFIER `` should match the regular expression ``/[a-zA-Z_][a-zA-Z0-9_]*/ ``. A ``CNAME `` should match ``/[A-Z][a-zA-Z0-9_]*/ ``.
11+ ``TERM `` is either a semicolon or a newline used to terminate a statement.
1112
1213Statement classes
1314~~~~~~~~~~~~~~~~~
@@ -74,10 +75,6 @@ All classes in this subsection are subclasses of ConstantAccess_.
7475+========================================+======================+======================+===================+
7576| CNAME | ConstantReadAccess _ | ConstantAccess _ | |
7677+----------------------------------------+----------------------+----------------------+-------------------+
77- | ``class `` CNAME StmtSequence _ ``end `` | ConstantWriteAccess _ | ConstantAccess _ | class definition |
78- +----------------------------------------+----------------------+----------------------+-------------------+
79- | ``module `` CNAME StmtSequence _ ``end `` | ConstantWriteAccess _ | ConstantAccess _ | module definition |
80- +----------------------------------------+----------------------+----------------------+-------------------+
8178| CNAME ``= `` Expr _ | ConstantAssignment _ | ConstantWriteAccess _ | |
8279+----------------------------------------+----------------------+----------------------+-------------------+
8380
@@ -272,6 +269,19 @@ All classes in this subsection are subclasses of Literal_.
272269| ``:foo `` | SymbolLiteral _ | StringlikeLiteral _ | |
273270+----------------------------+-------------------+----------------------------+-------------------+
274271
272+ Modules and Ruby classes
273+ ~~~~~~~~~~~~~~~~~~~~~~~~
274+
275+ All classes in this subsection are subclasses of BodyStmt _ and Scope _.
276+
277+ +----------------------------------------------------------------+--------------------+----------------------------------+-------------------+
278+ | Expression syntax | CodeQL class | Superclasses | Remarks |
279+ +================================================================+====================+==================================+===================+
280+ | ``class `` CNAME [``< `` Expr _] TERM StmtSequence _ TERM ``end `` | ClassDeclaration _ | Namespace _, ConstantWriteAccess _ | |
281+ | ``module `` CNAME TERM StmtSequence _ TERM ``end `` | ModuleDeclaration _ | Namespace _, ConstantWriteAccess _ | |
282+ | ``class << `` Expr _ TERM StmtSequence _ TERM ``end `` | SingletonClass _ | ModuleBase _ | |
283+ +----------------------------------------------------------------+--------------------+----------------------------------+-------------------+
284+
275285Method classes
276286~~~~~~~~~~~~~~
277287
@@ -297,20 +307,9 @@ All classes in this subsection are subclasses of Callable_.
297307| ``(`` StmtSequence_ ``)`` | ParenthesizedExpr_ | StmtSequence_ | |
298308| ``rescue`` TODO | RescueClause_ | Expr_ | |
299309| Stmt_ ``rescue`` Stmt_ | RescueModifierExpr_ | Expr_ | |
300- | StmtSequence_ ``;`` Stmt_ | StmtSequence_ | Expr_ | A sequence of 0 or more statements, separated by semicolons or newlines |
310+ | StmtSequence_ TERM Stmt_ | StmtSequence_ | Expr_ | A sequence of 0 or more statements, separated by semicolons or newlines |
301311| StringLiteral_ StringLiteral_ | StringConcatenation_ | Expr_ | Implicit concatenation of consecutive string literals |
302312
303-
304- ..
305- Module.qll
306- | | ClassDeclaration_ | | |
307- | | Module_ | | |
308- | | ModuleBase_ | | |
309- | | ModuleDeclaration_ | | |
310- | | Namespace_ | | |
311- | | SingletonClass_ | | |
312- | | Toplevel_ | | |
313-
314313..
315314 Parameter.qll
316315| | BlockParameter_ | | |
0 commit comments