pub struct Preprocessor { /* private fields */ }Expand description
プリプロセッサ
Implementations§
Source§impl Preprocessor
impl Preprocessor
Sourcepub fn set_macro_def_callback(&mut self, callback: Box<dyn MacroDefCallback>)
pub fn set_macro_def_callback(&mut self, callback: Box<dyn MacroDefCallback>)
マクロ定義コールバックを設定
Sourcepub fn take_macro_def_callback(&mut self) -> Option<Box<dyn MacroDefCallback>>
pub fn take_macro_def_callback(&mut self) -> Option<Box<dyn MacroDefCallback>>
マクロ定義コールバックを取得(所有権を移動)
Sourcepub fn set_comment_callback(&mut self, callback: Box<dyn CommentCallback>)
pub fn set_comment_callback(&mut self, callback: Box<dyn CommentCallback>)
コメントコールバックを設定
Sourcepub fn take_comment_callback(&mut self) -> Option<Box<dyn CommentCallback>>
pub fn take_comment_callback(&mut self) -> Option<Box<dyn CommentCallback>>
コメントコールバックを取得(所有権を移動)
Sourcepub fn set_macro_called_callback(
&mut self,
macro_name: InternedStr,
callback: Box<dyn MacroCalledCallback>,
)
pub fn set_macro_called_callback( &mut self, macro_name: InternedStr, callback: Box<dyn MacroCalledCallback>, )
特定マクロの呼び出しコールバックを設定
指定したマクロが展開されたときにコールバックが呼ばれる。
Sourcepub fn take_macro_called_callback(
&mut self,
macro_name: InternedStr,
) -> Option<Box<dyn MacroCalledCallback>>
pub fn take_macro_called_callback( &mut self, macro_name: InternedStr, ) -> Option<Box<dyn MacroCalledCallback>>
マクロ呼び出しコールバックを取得(所有権移動)
Sourcepub fn get_macro_called_callback(
&self,
macro_name: InternedStr,
) -> Option<&Box<dyn MacroCalledCallback>>
pub fn get_macro_called_callback( &self, macro_name: InternedStr, ) -> Option<&Box<dyn MacroCalledCallback>>
マクロ呼び出しコールバックへの参照を取得
Sourcepub fn get_macro_called_callback_mut(
&mut self,
macro_name: InternedStr,
) -> Option<&mut Box<dyn MacroCalledCallback>>
pub fn get_macro_called_callback_mut( &mut self, macro_name: InternedStr, ) -> Option<&mut Box<dyn MacroCalledCallback>>
マクロ呼び出しコールバックへの可変参照を取得
Sourcepub fn add_wrapped_macro(&mut self, macro_name: &str)
pub fn add_wrapped_macro(&mut self, macro_name: &str)
マーカーで囲むマクロを登録(assert 等の特殊処理用)
登録されたマクロは展開時に MacroBegin/MacroEnd マーカーで囲まれ、
is_wrapped フラグが true になる。パーサーは args から元の式を復元できる。
Sourcepub fn add_skip_expand_macro(&mut self, name: InternedStr)
pub fn add_skip_expand_macro(&mut self, name: InternedStr)
展開抑制マクロを追加
登録されたマクロは展開されず、識別子としてそのまま出力される。 bindings.rs に存在する定数名を登録することで、コード生成時に 定数名を保持できる。
Sourcepub fn add_skip_expand_macros(
&mut self,
names: impl IntoIterator<Item = InternedStr>,
)
pub fn add_skip_expand_macros( &mut self, names: impl IntoIterator<Item = InternedStr>, )
複数の展開抑制マクロを追加
Sourcepub fn add_explicit_expand_macro(&mut self, name: InternedStr)
pub fn add_explicit_expand_macro(&mut self, name: InternedStr)
明示展開マクロを追加(preserve_function_macros モードで展開対象となる)
Sourcepub fn add_explicit_expand_macros(
&mut self,
names: impl IntoIterator<Item = InternedStr>,
)
pub fn add_explicit_expand_macros( &mut self, names: impl IntoIterator<Item = InternedStr>, )
複数の明示展開マクロを追加
Sourcepub fn add_source_file(&mut self, path: &Path) -> Result<(), CompileError>
pub fn add_source_file(&mut self, path: &Path) -> Result<(), CompileError>
ファイルをソースとして登録する
注: この関数はファイルを InputSource として登録するだけで、
実際のマクロ展開処理は行わない。マクロ展開は next_token() や
collect_tokens() の呼び出し時に遅延実行される。
Sourcepub fn next_token(&mut self) -> Result<Token, CompileError>
pub fn next_token(&mut self) -> Result<Token, CompileError>
次のトークンを取得(メインインターフェース)
Sourcepub fn unget_token(&mut self, token: Token)
pub fn unget_token(&mut self, token: Token)
トークンを先読みバッファに戻す
パーサーが先読みしたトークンを戻す必要がある場合に使用。
Sourcepub fn files(&self) -> &FileRegistry
pub fn files(&self) -> &FileRegistry
ファイルレジストリへの参照
Sourcepub fn interner(&self) -> &StringInterner
pub fn interner(&self) -> &StringInterner
文字列インターナーへの参照
Sourcepub fn interner_mut(&mut self) -> &mut StringInterner
pub fn interner_mut(&mut self) -> &mut StringInterner
文字列インターナーへの可変参照
Sourcepub fn macros(&self) -> &MacroTable
pub fn macros(&self) -> &MacroTable
マクロテーブルへの参照
Sourcepub fn expand_macro_body_for_inference(
&mut self,
body: &[Token],
params: &[InternedStr],
args: &[Vec<Token>],
in_progress: &mut HashSet<InternedStr>,
) -> Result<(Vec<Token>, HashSet<InternedStr>), CompileError>
pub fn expand_macro_body_for_inference( &mut self, body: &[Token], params: &[InternedStr], args: &[Vec<Token>], in_progress: &mut HashSet<InternedStr>, ) -> Result<(Vec<Token>, HashSet<InternedStr>), CompileError>
Sourcepub fn collect_tokens(&mut self) -> Result<Vec<Token>, CompileError>
pub fn collect_tokens(&mut self) -> Result<Vec<Token>, CompileError>
全トークンを収集
Trait Implementations§
Source§impl TokenSource for Preprocessor
TokenSource trait の実装
impl TokenSource for Preprocessor
TokenSource trait の実装
Parser がプリプロセッサをトークンソースとして使用できるようにする