英語版
このページの英語版を見る
dmd.expression
式レベルで AST を表すクラスの大部分を定義する。
Authors:
License:
ソース expression.d
- enum
Modifiable: int; - 戻り値checkModifiable
no- 変更不可
yes- 変更可能(型は変更可能)
initialization- 初期化なので変更可能
- enum
ModifyFlags: int; - checkModifyが特定の状況をどのように扱うかを指定する
none- 変数の無効な変更に対してエラーメッセージを出す
noError- 無効な変更に対してエラーは発生しない
fieldAssign- 変更は現在の変数のサブフィールドに対して行われる
- inout(Expression)
lastComma(inout Expressione); - 最後の非コンマ式を見つける。Parameters:
Expression eカンマでつながれた式 Returns:右端の非カンマ式 - void
expandTuples(Expressions*exps, Identifiers*names= null); - タプルをインプレースで展開する。
例: f(10, pair: AliasSeq!(20, 30), single: 40) という呼び出しがあった場合、入力は以下のようになる:
exps= [10, (20, 30), 40]names= [null, "pair", "single"] 配列は次のように変更される:exps= [10, 20, 30, 40]names= [null, "pair", null, "single"]Parameters:Expressions* exps"式"の配列 Identifiers* names"式"に対応する名前のオプション配列。 - @safe TemplateDeclaration
getFuncTemplateDecl(Dsymbols); - もし
sが関数テンプレート、つまりテンプレートの唯一のメンバで、そのメンバが関数である場合 で、そのメンバが関数である場合、そのテンプレートを返す。Parameters:Dsymbol s関数テンプレート化された関数かもしれないシンボル Returns:その関数のテンプレート。そうでない場合はnullを返す。 - @safe DotIdExp
typeDotIdExp(const ref Locloc, Typetype, Identifierident); - TypeDotIdExp
- VarDeclaration
expToVariable(Expressione); - Expressionが与えられたとき、それが実際にどの変数であるかを調べる。例えば、a[index] は本当はa であり、s.f は本当はs である。Parameters:
Expression e見るべき式 Returns:変数があれば変数、なければNULL - abstract class
Expression: dmd.ast_node.ASTNode; -
- final const pure nothrow @nogc @safe size_t
size(); - Returns:この式のクラス・インスタンス・サイズ(extern(C++) のため、手動で実装する。)
- static void
deinitialize(); - コンパイラのグローバル状態を初期化する。これは、_init によって設定された状態を元の状態に戻すために使用できる。 状態に戻すことができる。
- final Expression
copy(); - ディープ・コピーは行わない。
- static @safe Expression
combine(Expressione1, Expressione2); - e1とe2の両方がNULLでなければ、CommaExpで結合する。
- static @safe Expression
extractLast(Expressione, out Expressione0); - e'がカンマのツリーである場合、ツリーからカンマを取り除いた右端の式を返す。 を返す。ツリーの残りの部分 は e0 によって返される。 それ以外の場合、'e' は直接返され、e0 は NULL に設定される。
- bool
isLvalue(); - expressionがl値であれば、!=0を返す。
- bool
checkType(); - 式が有効な型を持っているかチェックする。 そうでない場合は、"... has no type"というエラーを生成する。Returns:式が有効でない場合は真を返す。
注釈: この関数がtrueを返すとき、checkValue() もtrueを返すべきである。
- bool
checkValue(); - 式が有効な値を持っているかチェックする。 有効でない場合、エラー"... has no value"を生成する。Returns:式が有効でないか、またはvoid型の場合はtrueを返す。
- final bool
checkReadModifyWrite(EXPrmwOp, Expressionex= null); - 式がRMW演算を許すかどうかをチェックし、許さない場合はrmw演算子の診断でエラーとなる。 exはRHS式、または++/--が使われた場合はNULL(診断用)。 エラーが発生したら真を返す。
- final Expression
addressOf(); - 式のアドレスを取る。
- final Expression
deref(); - これが参照なら、それを非参照にする。
- const bool
isIdentical(const Expressione); - 単に等しいだけでなく、同一である。すなわち、ビットパターンが異なる NaN は同一ではない。
- Optional!bool
toBool(); - 可能であれば、この式をbool に静的に評価する。Returns:値を含むか空であるかのオプション。
- class
IntegerExp: dmd.expression.Expression; - コンパイル時に既知の整数値である。
- IntegerExp
literal(int v)(); - よく使われるリテラル(0や1など)の新しいインスタンスを作成する代わりに、これを使う。 0や1のような一般的に使用されるリテラル用の新しいインスタンスを作成する代わりに、これを使用する。
パラメータ v = 式の値
Returns:式の静的インスタンスで、Tint32 として型付けされる。 - static IntegerExp
createBool(boolb); - よく使われるboolのインスタンスを新しく作る代わりにこれを使う。
パラメータ b = 式の値。
Returns:式の静的インスタンス。Type.tbool として型付けされる。
- class
ErrorExp: dmd.expression.Expression; - この式をエラー回復に使用する。エラーメッセージがさらに連鎖するのを防ぐために、この式は「シンク」として振る舞うべきである。
- class
VoidInitExp: dmd.expression.Expression; - 初期化されていない値、 ボイド初期化子から生成される。
- VarDeclaration
var; - void値の元となった変数、不明な場合はnull。
- @safe this(VarDeclaration
var); - エラーメッセージに有用である。
- class
RealExp: dmd.expression.Expression; - コンパイル時に既知の浮動小数点数
- class
ComplexExp: dmd.expression.Expression; - コンパイル時の複素数(非推奨)
- class
IdentifierExp: dmd.expression.Expression; - (宣言ではなく)式のコンテキストにおける識別子。
int x; // 識別子付きVarDeclaration x++; // IdentifierExpを持つPostExp
- class
DollarExp: dmd.expression.IdentifierExp; - 配列のインデックス付けやスライス時に使用されるドル演算子。例:a[$] 、a[1 .. $] など。
- class
DsymbolExp: dmd.expression.Expression; - パーサーによって生成されない。
- class
ThisExp: dmd.expression.Expression; - class
SuperExp: dmd.expression.ThisExp; - class
NullExp: dmd.expression.Expression; - コンパイル時に既知のnull 。
- class
StringExp: dmd.expression.Expression; -
- bool
committed; - 文字列リテラルの型が固定かどうか。
例:
wstring x = "abc"; // OK、文字列リテラルは柔軟だ wstring y = cast(string) "abc"; // エラー: キャスト後に型がコミットされた
- bool
hexString; - 文字列が16進文字列リテラルから解析された場合
- const size_t
numberOfCodeUnits(inttynto= 0); - 文字列をtyntoとして再エンコードした場合のコードユニット数を返す。 tyntoとして再エンコードした場合のコードユニット数を返す。Parameters:
int tynto対象エンコーディングのコードユニット型 Returns:コードユニット数 - const void
writeTo(void*dest, boolzero, inttyto= 0); - 文字列の内容をdestに書き込む。 結果のサイズを決定するには numberOfCodeUnits() を使用する。Parameters:
void* dest出力先 int tyto結果のエンコード型 bool zero終端0を追加する - const pure dchar
getCodeUnit(size_ti); - インデックスiのコードユニットを取得するParameters:
size_t iインデックス Returns:インデックスiのコード・ユニット - const pure dinteger_t
getIndex(size_ti); - Returns:インデックスの整数
i - void
setCodeUnit(size_ti, dcharc); - インデックスiのコードユニットをcに設定するParameters:
size_t iインデックス dchar cに設定するコード・ユニット - const pure nothrow @nogc int
compare(const StringExpse2); - 二つのStringExp を長さで比較する。で見られるような通常のC言語のスタイルでの比較ではなく、まず長さに基づいて比較する。 strcmp やmemcmp で見られるような通常のCスタイルの比較ではなく、まず長さに基づいて比較する。 これにより、疎なデータを比較する際に、より高速な検索とソートが可能になる。 この順序付けスキームは、文字列切り替え機能で利用されている。 Druntimeのcore.internal.switch_ のコードは、case文の間でバイナリ検索を行う際に、この順序付けに依存している。 のコードでは、case文のバイナリ検索を行う際に、この順序付けに依存している。 StringExp は両方とも同じエンコーディングでなければならない。Parameters:
StringExp se2this と比較する文字列式。 Returns:0 this が se2 と等しい場合、 より大きい値である。 よりも大きいとみなされる。0 thisse2, this よりも小さい場合は0 よりも小さい値である。se2. - const const(char)[]
toStringz(); - 文字列の内容を0終端文字列に変換する、 mem.xmalloc()によって確保される。
- const const(ubyte)[]
peekData(); - データのスライスを取得する。
- ubyte[]
borrowData(); - データのスライスを借りる。 データのスライスを借りる。
- void
setData(void*s, size_tlen, ubytesz); - 新しい文字列データを設定する。 this データの新しい所有者になる。
- class
TupleExp: dmd.expression.Expression; - 一連の式
alias AliasSeq(T...) = T; alias Tup = AliasSeq!(3, int, "abc");
- class
ArrayLiteralExp: dmd.expression.Expression; - [e1, e2, e3, ... ]である。
- Expression
basis; - がNULLの場合、elements[]はスパースになり、basisが要素の「デフォルト」値に使われる。 デフォルトの"要素値"に使われる。言い換えると、非NULLのelements[i]は、この「basis」値を上書きする。 この"basis"値を上書きする。
- class
AssocArrayLiteralExp: dmd.expression.Expression; - [key0 : value0, key1 : value1, ... ]である。
- Expression
lowering; - 静的初期化用にcore.internal.newaaに下げる。
- enum int
stageScrub; - scrubReturnValueが実行されている。
- enum int
stageSearchPointers; - hasNonConstPointers実行中
- enum int
stageOptimize; - optimizeが実行されている
- enum int
stageApply; - applyが実行されている
- enum int
stageInlineScan; - inlineScanが実行されている
- enum int
stageToCBuffer; - toCBuffer実行中
- class
StructLiteralExp: dmd.expression.Expression; - sd( e1, e2, e3, ... )
- StructDeclaration
sd; - これはどの集約のためか
- Expressions*
elements; - sd.fields[]と並行し、スキップするフィールドにはnullを指定する
- Type
stype; - 結果の最終型(sdの型と異なっていても構わない)
- void*
sym; - リテラルで初期化するバックエンドのシンボル(シンボル*として使用される)
- StructLiteralExp
inlinecopy; - これらのフィールドは、構造体の1つのフィールドが'this'ポインタで初期化されたときの無限再帰を防ぐ必要がある。
- StructLiteralExp
origin; - 式の原点インスタンスへのポインタ。 新しい式が作成されると、originは'this'に設定される。 式のコピーが作成されると、いつでも'origin'ポインタが'this'に設定される。 origin'ポインタは元の式の'値'に設定される。
- ubyte
stageflags; - 再帰関数が呼び出されるときはいつでも、'stageflags' に現在のステージのビットフラグがセットされる。 でマークし、この関数から戻る前にマークを解除する。 'inlinecopy'も同様の'stageflags'を使用し、'doInline'を複数回評価する。 (無限再帰)を使用する。
- bool
useStaticInit; - これが true の場合、StructDeclaration の init シンボルを使用する。
- bool
isOriginal; - を示すためにインスタンスを移動するときに使用されるthis is this.origin
- Expression
getField(Typetype, uintoffset); - 型のオフセットにある式を取得する。 見つからなければ NULL を返す。
- int
getFieldIndex(Typetype, uintoffset); - フィールドのインデックスを取得する。 見つからなければ -1 を返す。
- class
CompoundLiteralExp: dmd.expression.Expression; - C11 6.5.2.5 ( 型名 ) { initializer-list }.
- Initializer
initializer; - イニシャライザ・リスト
- class
TypeExp: dmd.expression.Expression; - 主に単なるプレースホルダ
- class
ScopeExp: dmd.expression.Expression; - 主に パッケージ、モジュール、Nspace、TemplateInstance(TemplateMixinを含む)。IFTIを必要とするテンプレートインスタンス: foo!tiargs(fargs) // foo! は、CallExp::semantic()またはresolveProperties()まで残される
- class
TemplateExp: dmd.expression.Expression; - 主に単なるプレースホルダー
- class
NewExp: dmd.expression.Expression; - newtype(引数)
- ArgumentList
argumentList(); - arguments とnames をArgumentList に入れ、簡単に渡せるようにする。 後方互換性のために、フィールドはまだ分離されている。
- class
NewAnonClassExp: dmd.expression.Expression; - クラス baseclasses { } (引数)
- class
SymbolExp: dmd.expression.Expression; - class
SymOffExp: dmd.expression.SymbolExp; - シンボルからのオフセット
- class
VarExp: dmd.expression.SymbolExp; - 変数
- class
OverExp: dmd.expression.Expression; - オーバーロードセット
- class
FuncExp: dmd.expression.Expression; - 関数/委譲リテラル
- class
DeclarationExp: dmd.expression.Expression; - シンボルの宣言D文法では、宣言は文としてのみ許される。しかし、AST表現では では、任意の式の一部とすることができる。これは、たとえば内部構文の書き換えの際に、隠れた記号を挿入するために使われる。 構文を書き換えるときに使われる。
- class
TypeidExp: dmd.expression.Expression; - typeid(int)
- class
TraitsExp: dmd.expression.Expression; - _traits(識別子, 引数...)
- class
HaltExp: dmd.expression.Expression; - 停止命令を生成する。assert(0) は次のように書き換えられる。CHECKACTION.halt
- class
IsExp: dmd.expression.Expression; - is(targ id tok tspec) is(targ id == tok2) である。
- abstract class
UnaExp: dmd.expression.Expression; - 単項演算子の基本クラス
- final Expression
incompatibleTypes(); - 単項式の型は互換性がない。 エラーメッセージを表示する。Returns:エラー
- final void
setNoderefOperand(); - オペランドを決して再参照されないものとしてマークする、 これは、"@safe"チェックに有用な情報である。 オペランドのsemantic()がオペランドを書き換える前に行う。
- abstract class
BinExp: dmd.expression.Expression; - 二項演算子の基底クラス
- final Expression
incompatibleTypes(); - 二項式の型に互換性がない。 エラー・メッセージを表示する。Returns:エラー
- final void
setNoderefOperands(); - オペランドを決して再参照されないものとしてマークする、 これは、"@safe"チェックに有用な情報である。 オペランドのsemantic()がオペランドを書き換える前に行う。
- class
BinAssignExp: dmd.expression.BinExp; - 二項演算子代入、+= -= *= など。
- class
MixinExp: dmd.expression.Expression; - 文字列ミックスイン"、mixin("x")
- class
ImportExp: dmd.expression.UnaExp; - import式、import("file.txt")モジュールのインポート(import std.stdio )と混同しないように。ImportStatement https://dlang.org/spec/expression.html#import_expressions である。
- class
AssertExp: dmd.expression.UnaExp; - アサート式、assert(x == y)
- class
ThrowExp: dmd.expression.UnaExp; - throw <e1> DIP 1034で提案されている。非推奨のThrowStatement 。 の代わりになる。
- class
DotIdExp: dmd.expression.UnaExp; - class
DotTemplateExp: dmd.expression.UnaExp; - 主に単なるプレースホルダーである。
- class
DotVarExp: dmd.expression.UnaExp; - class
DotTemplateInstanceExp: dmd.expression.UnaExp; - (引数)
- class
DelegateExp: dmd.expression.UnaExp; - class
DotTypeExp: dmd.expression.UnaExp; - struct
ArgumentList; - 関数呼び出しの引数。式のリストを含む。名前付き引数の場合names リストには同じインデックスに非NULLのエントリがある。
- const pure nothrow @nogc @safe bool
hasNames(); - Returns:この引数リストに名前付き引数が含まれているかどうか。
- class
CallExp: dmd.expression.UnaExp; -
- bool
inDebugStatement; - デバッグ文の場合はtrueを返す。
- bool
ignoreAttributes; - 属性を強制しない(例えば、@nogcコードで@gc関数を呼び出す)。
- bool
isUfcsRewrite; - 最初の引数はUFCSの書き換えによってここに押し込まれた。
- ArgumentList
argumentList(); - arguments とnames をArgumentList に入れ、簡単に受け渡しができるようにした。 後方互換性のため、フィールドは分離されたままである。
- this(const ref Loc
loc, FuncDeclarationfd, Expressionearg1); - 新しい関数呼び出し式をインスタンス化する。Parameters:
Loc loc場所 FuncDeclaration fd呼び出す関数の宣言。 Expression earg1関数の引数 - static CallExp
create(const ref Locloc, FuncDeclarationfd, Expressionearg1); - 新しい関数呼び出し式を作成する。Parameters:
Loc loc場所 FuncDeclaration fd呼び出す関数の宣言。 Expression earg1関数の引数
- TypeFunction
calledFunctionType(CallExpce); - 呼び出し式から呼び出される関数型を取得するParameters:
CallExp ce関数呼び出し式。意味解析が行われている必要がある。 Returns:エラー/意味解析が行われていない場合は、null 。 - class
AddrExp: dmd.expression.UnaExp; - のアドレス」演算子、&p
- class
PtrExp: dmd.expression.UnaExp; - ポインタ非参照演算子、*p
- class
NegExp: dmd.expression.UnaExp; - 否定演算子、-x
- class
UAddExp: dmd.expression.UnaExp; - 単項加算演算子+x
- class
ComExp: dmd.expression.UnaExp; - ビットごとの補数演算子~x
- class
NotExp: dmd.expression.UnaExp; - 論理not演算子、!x
- class
DeleteExp: dmd.expression.UnaExp; - delete演算子、delete x (非推奨)
- class
CastExp: dmd.expression.UnaExp; - 型キャスト演算子、cast(T) xある型にペイントしながら、別の型にキャストすることができる。 https://dlang.org/spec/expression.html#cast_expressions
- class
VectorExp: dmd.expression.UnaExp; - class
VectorArrayExp: dmd.expression.UnaExp; - e1.arrayプロパティはベクトル用である。
- class
SliceExp: dmd.expression.UnaExp; - e1 [lwr ... upr].
- @safe this(const ref Loc
loc, Expressione1, IntervalExpie);
- class
ArrayLengthExp: dmd.expression.UnaExp; - 配列の.length プロパティ
- class
ArrayExp: dmd.expression.UnaExp; - e1 [ a0, a1, a2, a3 ,... ]。
- class
DotExp: dmd.expression.BinExp; - class
CommaExp: dmd.expression.BinExp; -
- const bool
isGenerated; - これはAssignExpがCommaExpを書き換えるために必要である。 が非推奨のトリガーとなる。
- bool
allowCommaExp; - カンマ式の非推奨を有効/無効にする一時変数。 を有効/無効にするための一時的な変数である。 ほとんどのコンストラクタ呼び出しは書き換えを行うので、falseが渡されるのは falseが渡されるのはパーサーだけである。
- static @safe void
allow(Expressionexp); - 引数がCommaExpの場合、非推奨メッセージを防ぐフラグを設定する。CommaExp.semanticから結果が使われるかどうかを知ることはできない。 したがって、結果(型 != void)がある場合、非推奨メッセージが常に出力される。 メッセージが常に出力される。 しかし、いくつかの構文は結果を生成できるが、それを使用しない。 (ExpStatementとforループのインクリメント)。 それらはこの関数を呼び出すべきである。 を呼び出すべきである。Parameters:
Expression exp結果を破棄する式。 引数がNULLまたはCommaExpでない場合は何も起こらない。
- class
IntervalExp: dmd.expression.Expression; - 主に単なるプレースホルダーである。
- class
DelegatePtrExp: dmd.expression.UnaExp; - dg.ptr プロパティ。デリゲートの「コンテキスト」を指す。c.f.DelegateFuncptrExp 、デリゲートの関数ポインタを指す。dg.funcptr
- class
DelegateFuncptrExp: dmd.expression.UnaExp; - dg.funcptr プロパティ。デリゲートの関数を指す。c.f.DelegatePtrExp 、デリゲートの関数ポインタを指す。dg.ptr
- class
IndexExp: dmd.expression.BinExp; - e1 [ e2 ]。
- class
PostExp: dmd.expression.BinExp; - 後置インクリメント/デクリメント演算子、i++ /i--
- class
PreExp: dmd.expression.UnaExp; - 前置インクリメント/デクリメント演算子、++i /--i
- class
AssignExp: dmd.expression.BinExp; - 代入/初期化演算子、=
注釈: 演算子代入 はベースが異なる。 代入演算子op= は異なる基底クラスを持つ、BinAssignExp
- @safe this(const ref Loc
loc, Expressione1, Expressione2);
- class
LoweredAssignExp: dmd.expression.AssignExp; - 代入式がdruntime呼び出しに下げられるとき、このクラスは下げられた代入式を格納するために使われる。 このクラスは、代入式がdruntime呼び出しに下げられたときに、下げられた代入式を格納するために使用される。 このクラスは基本的にAssignExpと同じように動作する。 のためにスペースを無駄にしないために使われる。 のスペースを無駄にしないために使用される。
- class
ConstructExp: dmd.expression.AssignExp; - class
BlitExp: dmd.expression.AssignExp; - e2 からe1
- class
AddAssignExp: dmd.expression.BinAssignExp; - x += y
- class
MinAssignExp: dmd.expression.BinAssignExp; - x -= y
- class
MulAssignExp: dmd.expression.BinAssignExp; - x *= y
- class
DivAssignExp: dmd.expression.BinAssignExp; - x /= y
- class
ModAssignExp: dmd.expression.BinAssignExp; - x %= y
- class
AndAssignExp: dmd.expression.BinAssignExp; - x &= y
- class
OrAssignExp: dmd.expression.BinAssignExp; - x |= y
- class
XorAssignExp: dmd.expression.BinAssignExp; - x ^= y
- class
PowAssignExp: dmd.expression.BinAssignExp; - x ^^= y
- class
ShlAssignExp: dmd.expression.BinAssignExp; - x <<= y
- class
ShrAssignExp: dmd.expression.BinAssignExp; - x >>= y
- class
UshrAssignExp: dmd.expression.BinAssignExp; - x >>>= y
- class
CatAssignExp: dmd.expression.BinAssignExp; - ~= 。以下の演算子のいずれかを持つことができる: EXP.concatenateAssign - T[]をT[]に追加する。 EXP.concatenateElemAssign - TをT[]に追加する。 EXP.concatenateDcharAssign - T[]にdcharを追加する。 パーサは、最初にEXP.concatenateAssignに設定し、後でsemantic()が3つのうちどれに設定するかを決定する。 に設定される。
- class
CatElemAssignExp: dmd.expression.CatAssignExp; - 単一の要素を追加するときの~= 演算子
- class
CatDcharAssignExp: dmd.expression.CatAssignExp; - 1つの要素を追加するときの~= 演算子dchar
- class
AddExp: dmd.expression.BinExp; - 加算演算子、x + y
- class
MinExp: dmd.expression.BinExp; - マイナス演算子、x - y
- class
CatExp: dmd.expression.BinExp; - 連結演算子、x ~ y
- class
MulExp: dmd.expression.BinExp; - 乗算演算子、x * y
- class
DivExp: dmd.expression.BinExp; - 除算演算子、x / y
- class
ModExp: dmd.expression.BinExp; - モジュロ演算子、x % y
- class
PowExp: dmd.expression.BinExp; - べき乗演算子、x ^^ y
- class
ShlExp: dmd.expression.BinExp; - shift left' 演算子、x << y
- class
ShrExp: dmd.expression.BinExp; - shift right' 演算子、x >> y
- class
UshrExp: dmd.expression.BinExp; - 符号なし右シフト」演算子、x >>> y
- class
AndExp: dmd.expression.BinExp; - ビット単位の 'and' 演算子、x & y
- class
OrExp: dmd.expression.BinExp; - ビットごとの 'or' 演算子、x | y
- class
XorExp: dmd.expression.BinExp; - ビットごとの 'xor' 演算子、x ^ y
- class
LogicalExp: dmd.expression.BinExp; - 論理 'and' / 'or' 演算子、X && Y /X || Y
- class
CmpExp: dmd.expression.BinExp; - 比較演算子、< <= > >=op のいずれかである: EXP.lessThan、EXP.lessOrEqual、EXP.greaterThan、EXP.greaterOrEqual のいずれかである。 https://dlang.org/spec/expression.html#relation_expressions
- class
InExp: dmd.expression.BinExp; - in 演算子、"a" in ["a": 1]
演算子 x !in y はパーサで!(x in y) に書き換えられる。
https://dlang.org/spec/expression.html#in_expressions に書き換える。 - class
RemoveExp: dmd.expression.BinExp; - 連想配列の削除、aa.remove(arg)これは連想配列 e2 からキー e1 を削除する。
- class
EqualExp: dmd.expression.BinExp; - == と !=EXP.equalとEXP.notEqualを使用する。 https://dlang.org/spec/expression.html#equality_expressions
- class
IdentityExp: dmd.expression.BinExp; - is そして !isEXP.identityとEXP.notIdentityである。 https://dlang.org/spec/expression.html#identity_expressions
- class
CondExp: dmd.expression.BinExp; - 三項演算子、econd ? e1 : e2
- class
DefaultInitExp: dmd.expression.Expression; - 関数のデフォルト引数として使われる場合の特別なキーワード。可能な限り、特殊キーワードはパーサーで解決されるが デフォルト引数として現れると、関数呼び出しのたびに解決される この基底クラスから派生した式が、関数呼び出しごとに解決される。
const x = __LINE__; // パーサーで解決された void foo(string file = __FILE__, int line = __LINE__); // DefaultInitExp
https://dlang.org/spec/expression.html#specialkeywords- @safe this(const ref Loc
loc, EXPop); - Parameters:
Loc locロケーション EXP opEXP.prettyFunction、EXP.functionString、EXP.moduleString、 EXP.line、EXP.file、EXP.fileFullPath
- class
FileInitExp: dmd.expression.DefaultInitExp; - デフォルト引数としての__FILE__ トークン
- class
LineInitExp: dmd.expression.DefaultInitExp; - デフォルト引数としての__LINE__ トークン
- class
ModuleInitExp: dmd.expression.DefaultInitExp; - デフォルトの引数としての__MODULE__ トークン
- class
FuncInitExp: dmd.expression.DefaultInitExp; - デフォルトの引数としての__FUNCTION__ トークン
- class
PrettyFuncInitExp: dmd.expression.DefaultInitExp; - デフォルトの引数としての__PRETTY_FUNCTION__ トークン
- class
ClassReferenceExp: dmd.expression.Expression; - クラスまたはインターフェースへの参照。これは 基底クラスを指すときに必要となる(型が何であるかを記録しなければならない)。
- class
CTFEExp: dmd.expression.Expression; - この型はインタープリターによってのみ使用される。
- class
ThrownExceptionExp: dmd.expression.Expression; - スローされた例外を保持するフェイク・クラス。 例外処理の実装に使用する。
- class
ObjcClassReferenceExp: dmd.expression.Expression; - Objective-Cのクラス参照式。Objective-C クラスのメタクラスNSObject.Class を取得するために使用する。
- class
GenericExp: dmd.expression.Expression; - C11 6.5.1.1 汎用選択 ImportCの場合
- Expression
cntlExp; - 汎用選択の制御式(評価されない)
- Types*
types; - 一般的な関連付けの型名(default のエントリは NULL)
- Expressions*
exps; - typeNamesとexpsの1:1マッピング
- bool
isArrayConstruction(const Identifierid); - 与えられた識別子がd_array{,set}ctorかどうかを検証する。Parameters:
Identifier id検証する識別子 Returns:true その識別子がコンストラクション・ランタイム・フックに対応する場合、 そうでなければfalse
Copyright © 1999-2025 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
サイト全体のドキュメントのdmdのバージョン: 2.109.1
最新のdmdのバージョン: 2.111.0 ダウンロード
翻訳日付:
HTML生成日時:
編集者: dokutoku