英語版
このページの英語版を見る

dmd.statement

文のASTノードを定義する。
Authors:

ソース statement.d

abstract class Statement: dmd.ast_node.ASTNode;
static Statements* arraySyntaxCopy(Statements* a);
"文"の配列の構文コピーを行う。
const pure nothrow bool hasBreak();
このステートメントにbreak 。 ステートメントに適用されるかどうかを判断する。
Returns:
true もしそうなら
const pure nothrow bool hasContinue();
continue 、この文に適用されるかどうかを判断する。 文に適用されるかどうかを判断する。
Returns:
true もしそうなら
final bool usesEH();
Returns:
true if文は例外処理を使用する。
final bool comeFrom();
Returns:
true if文は、gotoのように他のどこかから「来た」ものである。
final bool hasCode();
Returns:
true if文に実行可能コードがある。
inout pure nothrow inout(Statement) last();
一連の文の最後の文を見つける。
Returns:
最後の文がない場合はnull
void accept(Visitor v);
サポート・ビジター・パターン
Parameters:
Visitor v ビジター
inout pure nothrow @nogc inout(ReturnStatement) endsWithReturnStatement();
この文はreturn文で終わっているか?
つまり、単一のreturn文なのか、それとも複合文なのか。 無条件にreturn文を打つような複合文なのか。
Returns:
return文で終わっているか、そうでなければnullか。
final inout pure nothrow @nogc @safe inout(ErrorStatement) isErrorStatement();
Statementsのダウンキャストを行う、より安価な方法である。
Returns:
ダウンキャスト可能な場合はダウンキャスト文、そうでない場合null
class ErrorStatement: dmd.statement.Statement;
semantic()に失敗した、またはErrorExpやTypeErrorであるコンポーネントを持つStatementは、semantic()からErrorStatementを返す必要がある。 またはTypeErrorであるコンポーネントを持つステートメントは、semantic()からErrorStatementを返すべきである。
class PeelStatement: dmd.statement.Statement;
class ExpStatement: dmd.statement.Statement;
class DtorExpStatement: dmd.statement.ExpStatement;
class MixinStatement: dmd.statement.Statement;
class CompoundStatement: dmd.statement.Statement;
final @safe this(const ref Loc loc, Statements* statements);
CompoundStatement 既存の の配列を使用してStatementを構築する。
Parameters:
Loc loc インスタンス化情報
Statements* statements このクラスが参照するStatements の配列。
final this(const ref Loc loc, Statement[] sts...);
Statements の配列からCompoundStatement を構築する。
Parameters:
Loc loc インスタンス化情報
Statement[] sts このクラスでコピーされるStatements の可変長配列。 エントリ自体はコピーされない。
class CompoundDeclarationStatement: dmd.statement.CompoundStatement;
class UnrolledLoopStatement: dmd.statement.Statement;
これは、continueが文の次に進み、breakが文の最後に進むようにするためである。 これは、continueが文の次に進み、breakが文の最後に進むようにするためである。
class ScopeStatement: dmd.statement.Statement;
class ForwardingStatement: dmd.statement.Statement;
シンボル・テーブルがforeachインデックス変数を含むステートメント。 ローカル・スコープにあり、他のメンバーを親スコープに転送する。 これは ステートメントをラップする。
こちらも参照のこと:dmd.attrib.ForwardingAttribDeclaration
ForwardingScopeDsymbol sym;
static foreach 変数を含むシンボル。
Statement statement;
ラップされた文。
class WhileStatement: dmd.statement.Statement;
class DoStatement: dmd.statement.Statement;
class ForStatement: dmd.statement.Statement;
class ForeachStatement: dmd.statement.Statement;
class ForeachRangeStatement: dmd.statement.Statement;
class IfStatement: dmd.statement.Statement;
bool isIfCtfeBlock();
Returns:
もしif (__ctfe)
class ConditionalStatement: dmd.statement.Statement;
class StaticForeachStatement: dmd.statement.Statement;
https://dlang.org/spec/version.html#StaticForeachStatement 静的foreach文のようなもの: void main() { 静的foreach(i; 0 ... 10) { pragma(msg, i); } }
class PragmaStatement: dmd.statement.Statement;
class StaticAssertStatement: dmd.statement.Statement;
class SwitchStatement: dmd.statement.Statement;
Expression condition;
switch(条件)
Statement _body;
bool isFinal;
bool hasDefault;
デフォルト文があれば真
bool hasVars;
可変大文字小文字の値があれば真
DefaultStatement sdefault;
デフォルト:
Statement tryBody;
TryCatchStatementまたはTryFinallyStatementに設定する。
TryFinallyStatement tf;
TryFinallyStatementの'finally'ブロックにある場合、設定される
GotoCaseStatements gotoCases;
未解決のGotoCaseStatementの配列
CaseStatements* cases;
CaseStatementの配列
VarDeclaration lastVar;
このステートメントで最後に観測された変数宣言
class CaseStatement: dmd.statement.Statement;
class CaseRangeStatement: dmd.statement.Statement;
class DefaultStatement: dmd.statement.Statement;
class GotoDefaultStatement: dmd.statement.Statement;
class GotoCaseStatement: dmd.statement.Statement;
class SwitchErrorStatement: dmd.statement.Statement;
class ReturnStatement: dmd.statement.Statement;
class BreakStatement: dmd.statement.Statement;
class ContinueStatement: dmd.statement.Statement;
class SynchronizedStatement: dmd.statement.Statement;
class WithStatement: dmd.statement.Statement;
class TryCatchStatement: dmd.statement.Statement;
Statement tryBody;
本体部分にある場合は、囲む TryCatchStatement または TryFinallyStatement に設定する。
class Catch: dmd.rootobject.RootObject;
class TryFinallyStatement: dmd.statement.Statement;
Statement tryBody;
本体部分にある場合、囲む TryCatchStatement または TryFinallyStatement に設定される。
bool bodyFallsThru;
本体が最終的に終了する場合、true を返す
class ScopeGuardStatement: dmd.statement.Statement;
class ThrowStatement: dmd.statement.Statement;
class DebugStatement: dmd.statement.Statement;
class GotoStatement: dmd.statement.Statement;
Statement tryBody;
本体部分にある場合、TryCatchStatement または TryFinallyStatement に設定される
bool inCtfeBlock;
goto がif (__ctfe) ブロック内にある場合に設定される
class LabelStatement: dmd.statement.Statement;
Statement tryBody;
本体部分にある場合、TryCatchStatement または TryFinallyStatement に設定される
class LabelDsymbol: dmd.dsymbol.Dsymbol;
class AsmStatement: dmd.statement.Statement;
class InlineAsmStatement: dmd.statement.AsmStatement;
class GccAsmStatement: dmd.statement.AsmStatement;
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html D 式オペランドを持つアセンブラ命令。
class CompoundAsmStatement: dmd.statement.CompoundStatement;
完全なasm {}ブロック
class ImportStatement: dmd.statement.Statement;
pure @safe string visitStmtCase(string handler);
VisitInitializerのCTFE専用ヘルパー関数。
Parameters:
string handler 訪問ハンドラの名前を文字列で指定する
Returns:
場合の定型コード