英語版
このページの英語版を見る
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 flags
PSxxxx const(char)** endPtr
閉じ波括弧の格納場所 Loc* pEndloc
if { ...文... }, 閉じ波括弧の位置、それ以外は文の最後のトークンの位置 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
); id
typedefTab[]に追加するが、既存のtypedefをマスクする場合のみとする。Parameters:Identifier id
非型定義シンボル用の識別子 - void
insertTypedefToTypedefTab
(Identifierid
, AST.Typet
); - typedefTab[]に追加
id
typedefTab[]に追加するParameters: typedefシンボル用の識別子をtypedefTab[]に追加するIdentifier id
typedefシンボル用の識別子 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-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.109.1
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku