英語版
このページの英語版を見る
dmd.cparse
レキシカルストリームをレキシカルパーサーから取得し、抽象構文木に解析する。
仕様 C11
Authors:
License:
ソースcparse.d
適用範囲 https://codecov.io/gh/dlang/dmd/src/master/src/dmd/cparse.d
- class
CParser(AST): Parser!AST; -
- bool
addFuncName; - 関数シンボルテーブルに_func_の宣言を追加する
- bool
importBuiltins; - Cコンパイラのビルトイン関数の使用が見られたので、_importc_builtinsをインポートする。
- Array!(void*)
typedefTab; - AST.Type[Identifier]の配列、Identifierでインデックスされた型定義
- AST.Dsymbols*
parseModule(); - 翻訳単位の解析。 C11 6.9 翻訳単位: 外部宣言 翻訳単位外部宣言外部宣言: 関数定義 宣言Returns:宣言されたDシンボルの配列
- AST.Statement
cparseStatement(intflags, const(char)**endPtr= null, Loc*pEndloc= null); - 文パーサーC11 6.8 文: ラベル付き文 複合文 式文 選択文 反復文 ジャンプ文 "expression-statement"式"Parameters:
int flagsPSxxxx const(char)** endPtr閉じ波括弧の格納場所 Loc* pEndlocif { ...文... }, 閉じ波括弧の位置、それ以外は文の最後のトークンの位置 Returns:解析された文 - AST.Expression
cparseExpression(); - 式パーサーC11 6.5.17 式: 代入式 式 , 代入式
- AST.Expression
cparsePrimaryExp(); - C11 6.5.1 基本式: 識別子 定数 文字列リテラル (式) 汎用選択 _builtin_va_arg(代入式, 型)
- AST.Expression
cparseAssignExp(); - C11 6.5.16 代入式: 条件式 単項式代入演算子代入式代入演算子: = *= /= %= += -= <<= >>= &= ^= |=
- void
cparseDeclaration(LVLlevel); - 宣言パーサーC11 6.7 宣言: 宣言指定子 init-declarator-list (オプション) ; static_assert-declaration init-declarator-list: init-declarator init-declarator-list , init-declarator init-declarator: declarator declarator = initializer ==Parameters:
LVL level宣言コンテキスト - AST.Dsymbol
cparseFunctionDefinition(Identifierid, AST.TypeFunctionft, ref Specifierspecifier); - C11 関数定義 関数定義 宣言指定子 宣言子宣言リスト(オプション) 複合文宣言リスト: 宣言 宣言リスト宣言 宣言リスト(opt)まではすでに解析済みである。 そこから再開する。Parameters:
Identifier id関数識別子 AST.TypeFunction ft関数型 Specifier specifier関数指定子 Returns: 関数用の記号関数用の記号 - AST.Initializer
cparseInitializer(); - C11 初期化 初期化子: 代入式 { } // C23 6.7.10 追加 {初期化子リスト} {初期化子リスト, }初期化子リスト: 指定 (オプション) 初期化子 初期化子リスト , 指定 (オプション) 初期化子 指定: 指定子リスト = 指定子リスト: 指定子 指定子リスト 指定子 指定子: [ 常数式 ] . 識別子Returns:初期化子
- MOD
cparseTypeQualifierList(); - C11 6.7.3 型修飾子: const restrict volatile Atomic _stdcall
- AST.Type
cparseTypeName(); - C11 6.7.7
- AST.Type
cparseSpecifierQualifierList(LVLlevel, ref Specifierspecifier); - C11 6.7.2.1 指定子修飾子リスト: 型指定子 指定子修飾子リスト (オプション) 型修飾子 指定子修飾子リスト (オプション)Parameters:
LVL level宣言コンテキスト Specifier specifier指定子 in および out Returns: 結果の型、指定されていない場合はnull結果の型、指定されていない場合はnull - AST.ParameterList
cparseParameterList(); - C11 6.7.6.3 ( parameter-type-list ) ( identifier-list (opt) )
- void
cparseStructDeclaration(AST.Dsymbols*members); - C11 6.7.2.1 構造体宣言のメンバを解析する。 struct-declaration: specifier-qualifier-list struct-declarator-list (opt) ; static_assert-declarationstruct-declarator-list: struct-declarator struct-declarator-list , struct-declarator struct-declarator: declarator declarator (opt) : constant-expressionParameters:
AST.Dsymbols* membersフィールド(メンバ)を配置する場所 - bool
isDeclarationList(ref Token*pt); - 宣言リストが存在するか確認する。Returns:宣言リストが存在する場合、たとえ空であってもtrueとする
- enum
LVL; - さらに宣言コンテキスト
global- グローバル
parameter- 関数パラメータ(関数識別子リストの宣言)
prototype- 関数プロトタイプ
local- ローカル
member- 構造体メンバ
- enum
DTR; - 解析する宣言子の型
xdirect- C11 6.7.6 直接宣言子
xabstract- C11 6.7.7 抽象宣言子
xparameter- パラメータ宣言子は直接または抽象のいずれかである可能性がある
- enum
SCW: uint; - C11 6.7.1 記憶クラス指定子
- enum
MOD: uint; - C11 6.7.3 "型修飾子"
- struct
Specifier; - すべてのさまざまな指定子に対する集約子
- bool
noreturn; - ノーリターン属性
- bool
naked; - ネイキッド属性
- bool
_nothrow; - nothrow属性
- bool
_pure; - 純粋属性
- bool
dllimport; - dllimport属性
- bool
dllexport; - dllexport属性
- bool
_deprecated; - 非推奨属性
- AST.Expression
depMsg; - 非推奨メッセージ
- uint
vector_size; - 2のべき乗 基本型の倍数 型サイズ
- SCW
scw; - ストレージクラス指定子
- MOD
mod; - 型修飾子
- AST.Expressions*
alignExps; - アラインメント
- structalign_t
packalign; - #pragma pack alignment 値
- StorageClass
specifiersToSTC(LVLlevel, const ref Specifierspecifier); - C言語の指定子をD言語のストレージクラスに変換するParameters:
LVL level宣言、コンテキスト Specifier specifier指定子、コンテキストなど。 Returns: 対応するDストレージクラス対応するDストレージクラス - void
specifiersToFuncDeclaration(AST.FuncDeclarationfd, const ref Specifierspecifier); - 指定子から関数に属性を追加するParameters:
AST.FuncDeclaration fd関数に適用する Specifier specifier指定子に - void
specifiersToVarDeclaration(AST.VarDeclarationvd, const ref Specifierspecifier); - 指定子から変数に属性を追加するParameters:
AST.VarDeclaration vd関数に適用する Specifier specifier指定子に適用する - void
panic(); - エラーが発生した後、右中括弧またはセミコロンが見つかるまで、またはファイルの終わりまで前方にスキャンする。
- bool
isFunctionTypedef(AST.Typet); - typedefTab シンボルテーブル型 t が関数型であるかどうかを決定する。Parameters:
AST.Type t型をテストする Returns:関数を表している場合は true を返す - bool
isTypedef(Identifierid); - が型定義のシンボルであるかどうかを判断します。
idシンボルが型定義のシンボルであるかどうかを判断します。Parameters:Identifier id可能な typedef Returns:id が型である場合は true を追加する - void
insertIdToTypedefTab(Identifierid); idtypedefTab[]に追加するが、既存のtypedefをマスクする場合のみとする。Parameters:Identifier id非型定義シンボル用の識別子 - void
insertTypedefToTypedefTab(Identifierid, AST.Typet); - typedefTab[]に追加
idtypedefTab[]に追加するParameters: typedefシンボル用の識別子をtypedefTab[]に追加するIdentifier idtypedefシンボル用の識別子 AST.Type t型定義シンボルの型 - AST.Type*
lookupTypedef(Identifierid); - typedefTab[]でidを検索する。Returns:見つからなければ null。 見つかれば Type*。 参照解除すると、それが typedef でなければ null が返され、 typedef であれば型が返される。
- bool
parseSpecialTokenSequence(); - ディレクティブパーサー
- void
addDefines(); - #define Parser定義バッファ内の #define を順に調べ、Dシンボルに変換できるものがないか確認する。 変換できたものは、symbols[]に追加される。
Copyright © 1999-2025 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.109.1
サイト全体のドキュメントのdmdのバージョン: 2.109.1
最新のdmdのバージョン: 2.111.0 ダウンロード
翻訳日付:
HTML生成日時:
編集者: dokutoku