dncl_trans/
lib.rs

1#![doc = include_str!("../README.md")]
2
3use proc_macro::TokenStream;
4
5mod impls;
6
7/// DNCLプログラムをRustプログラムにトランスパイルするマクロ
8///
9/// マクロの使用例:
10/// ```rust
11/// dncl_trans::dncl!(
12///     @model = "o1-preview";
13///     @max_completion_tokens = 4096;
14///     @seed = 123456;
15///     @editing = false; // 編集中はtrueにすることでAPIを叩きに行かないようにする
16///     // @file = "もしファイル分割しているならこの変数で指定.dncl";
17///
18///     r#"
19///     /* ここにDNCL記法のコードを書く */
20///     "#
21/// );
22/// ```
23#[proc_macro]
24pub fn dncl(input: TokenStream) -> TokenStream {
25    let input = syn::parse_macro_input!(input as impls::MacroInput);
26
27    impls::dncl_impl(input)
28        .unwrap_or_else(syn::Error::into_compile_error)
29        .into()
30}