AST: add begin expressions

This commit is contained in:
Arthur Baars
2021-02-18 13:41:47 +01:00
parent 5659388ec0
commit 3ee83870b6
3 changed files with 35 additions and 11 deletions

View File

@@ -36,7 +36,21 @@ class EmptyStmt extends Stmt, @token_empty_statement {
}
/**
* An `BEGIN` block.
* A `begin` statement.
* ```rb
* begin
* puts "hello world"
* end
* ```
*/
class BeginExpr extends BodyStatement, @begin {
final override Begin::Range range;
final override string getAPrimaryQlClass() { result = "BeginExpr" }
}
/**
* A `BEGIN` block.
* ```rb
* BEGIN { puts "starting ..." }
* ```

View File

@@ -90,16 +90,6 @@ module ParenthesizedExpr {
}
}
module BeginBlock {
class Range extends StmtSequence::Range, @begin_block {
final override Generated::BeginBlock generated;
final override Stmt getStmt(int n) { result = generated.getChild(n) }
final override string toString() { result = "BEGIN { ... }" }
}
}
module ThenExpr {
class Range extends StmtSequence::Range, @then {
final override Generated::Then generated;

View File

@@ -17,6 +17,26 @@ module EmptyStmt {
}
}
module Begin {
class Range extends BodyStatement::Range, @begin {
final override Generated::Begin generated;
final override Generated::AstNode getChild(int n) { result = generated.getChild(n) }
final override string toString() { result = "begin ... " }
}
}
module BeginBlock {
class Range extends StmtSequence::Range, @begin_block {
final override Generated::BeginBlock generated;
final override Stmt getStmt(int n) { result = generated.getChild(n) }
final override string toString() { result = "BEGIN { ... }" }
}
}
module EndBlock {
class Range extends StmtSequence::Range, @end_block {
final override Generated::EndBlock generated;