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}