Macro formality_core::declare_language
source · macro_rules! declare_language { ( $(#[$the_lang_m:meta])* $the_lang_v:vis mod $the_lang:ident { const NAME = $name:expr; type Kind = $kind:ty; type Parameter = $param:ty; const BINDING_OPEN = $binding_open:expr; const BINDING_CLOSE = $binding_close:expr; } ) => { ... }; }
Expand description
Declares a new formality language.
This will generate a module with a name you choose that contains various items;
among them will be a struct named FormalityLang
that implements the
Language
trait.
When you use the auto-derives or the term
macro, they will generate
code that references crate::FormalityLang
, so you need to bring that in scope at the root
of your crate (e.g., if you called the module mylang
, you might
add use crate::mylang::FormalityLang
at the root of your crate,
so that the auto-derives can find it.)
See the mdbook for more coverage of how it works.