英語版
このページの英語版を見る
dmd.expressionsem
表現の意味解析。
Authors:
License:
ソース expressionsem.d
- bool
expressionsToString
(ref OutBufferbuf
, Scope*sc
, Expressions*exps
); - 式に対して意味解析とCTFEを行い、文字列を生成する。 文字列を生成する。Parameters:
OutBuffer buf
生成された文字列をバッファに追加する Scope* sc
コンテキスト Expressions* exps
"式"の配列。 Returns:エラー時にtrueを返す - FuncDeclaration
hasThis
(Scope*sc
); - this 関数が見つかるまで スコープを関数が見つかるまで歩くことによって、。Parameters:
Scope* sc
どこで包含関数を探し始めるか。 Returns:isThis() を満たしていれば関数が見つかる。null - StringExp
semanticString
(Scope*sc
, Expressionexp
, const char*s
); - 解決する
exp
をコンパイル時に既知の文字列として解決する。Parameters:Scope* sc
スコープ Expression exp
文字列として期待される式 char* s
この文字列が何に使われるかは、エラー診断で使われる。 Returns:文字列リテラル、またはエラーが発生した場合はnull 。 - StringExp
toUTF8
(StringExpse
, Scope*sc
); - 文字列をchar[]に変換する。
- TupleDeclaration
isAliasThisTuple
(Expressione
); - このタプルのエイリアスを展開する。
- Expression
resolveOpDollar
(Scope*sc
, ArrayExpae
, Expression*pe0
); - ae.argumentsのセマンティックを実行する。一時変数を宣言する。 が使用された場合、一時変数を宣言する。
- Expression
resolveOpDollar
(Scope*sc
, ArrayExpae
, IntervalExpie
, Expression*pe0
); - se.lwrとse.uprに対してセマンティックを実行する。が使用された場合、一時変数を宣言する。 が使用された場合、一時変数を宣言する。Returns:エラーが発生した場合は ae または ErrorExp を実行する。
- bool
arrayExpressionSemantic
(Expression[]exps
, Scope*sc
, boolpreserveErrors
= false); - 式の配列に対してsemantic()を実行する。
- Expression
doCopyOrMove
(Scope*sc
, Expressione
, Typet
= null); - l値のポストブリット呼び出し、またはr値の移動を処理する。Parameters:
Scope* sc
式が発生したスコープ。 Expression e
移動またはコピーが必要な式(ソース) Type t
構造体がコピーコンストラクタを定義している場合、コピー先の型。 Returns:値をコピー構築または移動する式。 - Expression
valueNoDtor
(Expressione
); - この式の値が欲しいが、デストラクタを呼び出したくない場合、次のようになる。 デストラクタを呼び出したくない場合。
- Expression
resolvePropertiesOnly
(Scope*sc
, Expressione1
); - e1がプロパティ関数(テンプレート化された関数)であれば、それを解決する。
- Expression
symbolToExp
(Dsymbols
, const ref Locloc
, Scope*sc
, boolhasOverloads
); - シンボル
s
をそれが表す式に変える。Parameters:Dsymbol s
解決する記号 Loc loc
の使用場所 s
Scope* sc
コンテキスト bool hasOverloads
が適用される。 s
が関数を表す場合に適用される。 trueはオーバーロードされ、後で解決されることを意味する、 falseは正確な関数シンボルであることを意味する。Returns:s
エラーが発生した場合、ErrorExp 。 - void
checkOverriddenDtor
(FuncDeclarationf
, Scope*sc
, const ref Locloc
, scope bool function(DtorDeclaration)check
, const stringcheckName
); - であるかどうかをチェックする。
f
がユーザー定義のものを隠すために生成されたDtorDeclaration かどうかをチェックする。 を渡す。check
をパスする。f
を隠す生成されたものであるかどうかをチェックする(例えば、ユーザー定義のdtorは純粋だが、生成されたdtorは純粋でない場合)。 生成されたdtorはそうでない場合など)。 その場合、このメソッドは属性の不一致を引き起こすすべてのメンバを特定し、表示する。 のミスマッチを引き起こすすべてのメンバを特定して表示する。Parameters:FuncDeclaration f
潜在的なDtorDeclaration Scope* sc
スコープ Loc loc
位置 bool function(DtorDeclaration) check
現在のチェック(純粋かどうかなど) string checkName
チェックの種類 (例:"pure") - Package
resolveIsPackage
(Dsymbolsym
); - シンボルがモジュールかパッケージかを判定する (is(型==モジュール)とis(型==パッケージ)のヘルパーとして使われる)Parameters:
Dsymbol sym
チェックするシンボル Returns:を表すシンボルsym
を表す(Package を表さない場合はnull )。 - Expression
trySemantic
(Expressionexp
, Scope*sc
); - セマンティック・ルーチンの実行を試みる。 失敗した場合はNULLを返す。
- Expression
unaSemantic
(UnaExpe
, Scope*sc
); - エラー伝搬を容易にするためのヘルパー関数。 エラーが発生した場合、ErrorExp を返す。それ以外は NULL を返す。
- Expression
binSemantic
(BinExpe
, Scope*sc
); - 簡単なエラー伝播のためのヘルパー関数。 エラーが発生した場合、ErrorExpを返す。それ以外は NULL を返す。
- Expression
dotIdSemanticProp
(DotIdExpexp
, Scope*sc
, boolgag
); - UFCSを見ることなく、プロパティを解決する、つまり、e1.ident 。Parameters:
DotIdExp exp
解決する式 Scope* sc
コンテキスト bool gag
を返すだけで、エラーメッセージは出さない。null Returns:を返すだけである。 - Expression
dotTemplateSemanticProp
(DotTemplateInstanceExpexp
, Scope*sc
, boolgag
); - UFCSを見ずにe1.ident!tiargs を解決する。Parameters:
DotTemplateInstanceExp exp
解決するDotTemplateInstanceExp Scope* sc
意味的スコープ bool gag
not a property "エラーを止め、null 。 Returns:null エラーまたは見つからない場合は、解決された式を返す。 - bool
checkSharedAccess
(Expressione
, Scope*sc
, boolreturnRef
= false); - expressionが共有されている場合、アクセスできるかチェックする。 見つからない場合はエラーメッセージを出す。Parameters:
Expression e
チェックする式 Scope* sc
文脈 bool returnRef
この式がreturn 。 ref 。この場合、単一レベルの再参照が許される( )。 この場合、単一レベルの再参照が許される(例:shared(int)*)。 Returns:エラー時にtrueを返す - Expression
resolveLoc
(Expressionexp
, const ref Locloc
, Scope*sc
); - FILE__, __LINE__, __MODULE__, __FUNCTION__, __PRETTY_FUNCTION__, __FILE_FULL_PATH__" を loc に解決する。
- Expression
addDtorHook
(Expressione
, Scope*sc
); - デストラクタはVarDeclarationに付けられる。 したがって、式がデストラクタを必要とするtempを返す場合、必ずVarDeclarationを作成すること、 そのtempに対してVarDeclarationを作成する。
- Expression
toLvalue
(Expression_this
, Scope*sc
, const(char)*action
); - 式をl値に変換してみる。l値でない場合はエラーを出す。Parameters:
Expression _this
変換する式 Scope* sc
スコープ const(char)* action
エラーメッセージの場合、l値が何のために必要なのか(例えば、&x の場合はアドレスを取る、x++ の場合は修正する)。 Returns:変換された式、またはエラー時のErrorExp 。 - Modifiable
checkModifiable
(Expressionexp
, Scope*sc
, ModifyFlagsflag
= ModifyFlags.none); パラメータ sc: スコープ flag: 1: 無効な修正に対してエラーメッセージを発行しない。 2: expがDotVarExpで、左端の変数のサブフィールドが変更される 変数が変更される
Returns:型が変更可能かどうか。- Expression
modifiableLvalue
(Expression_this
, Scope*sc
); - toLvalue と同様であるが、変更可能であることを強制するか、エラーを発生させる。Parameters:
Expression _this
変換する式 Scope* sc
スコープ Returns:_this
をl値に変換する。ErrorExp - bool
checkAddressVar
(Scope*sc
, Expressionexp
, VarDeclarationv
); - を決定する。
exp
アドレスが取得された場合、安全にそれを行うことができる。Parameters:Scope* sc
コンテキスト Expression exp
アドレスを取られる式 VarDeclaration v
アドレスを取られる変数 Returns:true OKなら、 。false - bool
checkAddressable
(Expressione
, Scope*sc
); - このチェックは、exp のオブジェクトがアドレスを取得されるか、診断エラーを出すかを確実にする。 診断エラーを出す。Parameters:
Expression e
チェックする式 Scope* sc
コンテキスト Returns:式がアドレス可能であればtrueを返す。 - Expression
getThisSkipNestedFuncs
(const ref Locloc
, Scope*sc
, Dsymbols
, AggregateDeclarationad
, Expressione1
, Typet
, Dsymbolvar
, boolflag
= false); - getRightThis() のヘルパー関数。 次の外部集約のthis を取得する。Parameters:
Loc loc
エラーメッセージに使用する場所 Scope* sc
コンテキスト Dsymbol s
既存のthis AggregateDeclaration ad
構造体やクラスの親シンボルで、this 。 Expression e1
既存のthis Type t
既存の型this Dsymbol var
アクセスしているadの特定のメンバー bool flag
もしtrueなら、エラーを投げる代わりにnull 。 Returns:varに対するthis を表す式。 - VarDeclaration
makeThis2Argument
(const ref Locloc
, Scope*sc
, FuncDeclarationfd
); - this 引数として使用するデュアルコンテキストのコンテナを作成する。Parameters:
Loc loc
エラーメッセージに使用する場所 Scope* sc
現在のスコープ FuncDeclaration fd
this 引数を受け取るターゲット関数 Returns:一時的なクロージャ変数。注釈 この関数
fd
のネストされた参照に追加される。 に追加される。 のアドレスがfd
のアドレスが取られたときに、その変数に対してクロージャが作られるようにする。 - bool
verifyHookExist
(const ref Locloc
, ref Scopesc
, Identifierid
, stringdescription
, Identifiermodule_
= Id.object); - 実行時フック
id
が存在することを確認する。Parameters:Loc loc
エラーメッセージに使用する場所 Scope sc
現在のスコープ Identifier id
フックの識別子 string description
フックが何をするか Identifier module_
フックがどのモジュールにあるか Returns:フックが存在するかどうかを示すbool 。 - Expression
getVarExp
(EnumMemberem
, const ref Locloc
, Scope*sc
); - 戻り値
em
VariableExpとしてParameters:EnumMember em
ラップするEnumMember Loc loc
emの使用場所 Scope* sc
emの使用範囲 Returns:VarExp参照em
またはErrorExpを参照する。em
無効/非推奨の場合 - Expression
toBoolean
(Expressionexp
, Scope*sc
); - をブール値として扱う。
exp
をブール値として扱うようにする、Parameters:Expression exp
式" とする。 Scope* sc
を評価する exp
である。Returns:成功時には修正された式、エラー時にはErrorExpが返される。 - bool
evalStaticCondition
(Scope*sc
, Expressionoriginal
, Expressione
, out boolerrors
, Expressions*negatives
= null); - コンパイル時に静的条件を意味的に分析し、評価する。 これは特別なことで、トップ・レベルの短絡演算子&&、 ||、? 式の結果が必要でない場合は、意味解析されないからである。 は意味解析されないからである。Parameters:
Scope* sc
スコープのインスタンス化 Expression original
元の式、エラーメッセージ用 Expression e
結果の式 bool errors
エラーが発生した場合はtrue に設定される Expressions* negatives
否定句を格納する配列 Returns:trueと評価された場合はtrue
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku