sdml_core/syntax/
model.rs

1/*!
2Contains only string constants for the Rust model names used in serialization.
3 */
4
5use super::grammar::*;
6
7// ------------------------------------------------------------------------------------------------
8// Private Macros
9// ------------------------------------------------------------------------------------------------
10
11macro_rules! model {
12    (node $name:ident is $value:expr) => {
13        ::paste::paste! {
14            pub const [< NODE_KIND_ $name >]: &str = stringify!($value) ;
15        }
16    };
17    //(node $name:ident as $value:expr) => {
18    //    ::paste::paste! {
19    //        pub const [< NODE_KIND_ $name >]: &str = $value ;
20    //    }
21    //};
22    (variant $name:ident is $value:expr) => {
23        ::paste::paste! {
24            pub const [< NODE_VARIANT_ $name >]: &str = stringify!($value) ;
25        }
26    };
27    (variant $name:ident as $value:expr) => {
28        ::paste::paste! {
29            pub const [< NODE_VARIANT_ $name >]: &str = $value ;
30        }
31    };
32    (variant $name:ident as_plural $value:expr) => {
33        ::paste::paste! {
34            pub const [< NODE_VARIANT_ $name >]: &str = ::const_format::concatcp!( $value, "s" ) ;
35        }
36    };
37    (field $name:ident is $value:expr) => {
38        ::paste::paste! {
39            pub const [< FIELD_NAME_ $name >]: &str = stringify!($value) ;
40        }
41    };
42    (field $name:ident as $value:expr) => {
43        ::paste::paste! {
44            pub const [< FIELD_NAME_ $name >]: &str = $value ;
45        }
46    };
47    (field $name:ident as_plural $value:expr) => {
48        ::paste::paste! {
49            pub const [< FIELD_NAME_ $name >]: &str = ::const_format::concatcp!( $value, "s" ) ;
50        }
51    };
52}
53
54// ------------------------------------------------------------------------------------------------
55// Public Values ❱ Model Structure Names
56// ------------------------------------------------------------------------------------------------
57
58model!(node CONSTRAINT_BODY is constraint_body);
59model!(node DIMENSION_IDENTITY is dimension_identity);
60model!(node FUNCTION_TYPE is function_type);
61model!(node SEQUENCE_MEMBER is sequence_member);
62model!(node NAMED_VARIABLE_SET is named_variable_set);
63model!(node VARIABLES is variables);
64
65// ------------------------------------------------------------------------------------------------
66// Public Values ❱ Model Field Names
67// ------------------------------------------------------------------------------------------------
68
69model!(field ANNOTATIONS as_plural NODE_KIND_ANNOTATION);
70model!(field END as KW_BLOCK_END);
71model!(field FUNCTIONS as_plural FIELD_NAME_FUNCTION);
72model!(field IMPORTS as_plural KW_IMPORT);
73model!(field IS_LIBRARY_MODULE is is_library_module);
74model!(field IS_OPAQUE is is_opaque);
75model!(field KIND is kind);
76model!(field MEMBERS as_plural NODE_KIND_MEMBER);
77model!(field METHODS as_plural FIELD_NAME_METHOD);
78model!(field OPERAND is operand);
79model!(field NAMES as_plural FIELD_NAME_NAME);
80model!(field PARAMETERS as_plural FIELD_NAME_PARAMETER);
81model!(field PARENTS as_plural KW_DIMENSION_PARENT);
82model!(field SENTENCE is sentence);
83model!(field SOURCE_FILE is source_file);
84model!(field SPAN as NODE_KIND_SPAN);
85model!(field START is start);
86model!(field UNARY is unary);
87model!(field VARIABLES as_plural FIELD_NAME_VARIABLE);
88model!(field VARIANTS is variants);
89
90// ------------------------------------------------------------------------------------------------
91// Public Values ❱ Model Variant Names
92// ------------------------------------------------------------------------------------------------
93
94model!(variant ATOMIC is atomic);
95model!(variant BINARY as NODE_KIND_BINARY);
96model!(variant BOOLEAN as NODE_KIND_BOOLEAN);
97model!(variant COMPOSITION is composition);
98model!(variant CONSTRAINT as NODE_KIND_CONSTRAINT);
99model!(variant DATATYPE as KW_DATATYPE);
100model!(variant DECIMAL as NODE_KIND_DECIMAL);
101model!(variant DEFINITION as NODE_KIND_DEFINITION);
102model!(variant DIMENSION as KW_DIMENSION);
103model!(variant DOUBLE as NODE_KIND_DOUBLE);
104model!(variant ENTITY as KW_ENTITY);
105model!(variant ENUM as KW_ENUM);
106model!(variant EQUATION as NODE_KIND_EQUATION);
107model!(variant EVENT as KW_EVENT);
108model!(variant FORMAL is formal);
109model!(variant FUNCTION as FIELD_NAME_FUNCTION);
110model!(variant IDENTIFIER is identifier);
111model!(variant INEQUATION as NODE_KIND_INEQUATION);
112model!(variant INFORMAL is informal);
113model!(variant INTEGER as NODE_KIND_INTEGER);
114model!(variant IRI as NODE_KIND_IRI);
115model!(variant MAPPING is mapping);
116model!(variant MEMBER as NODE_KIND_MEMBER);
117model!(variant MODULE as NODE_KIND_MODULE);
118model!(variant NAMED is named);
119model!(variant PROPERTY as KW_PROPERTY);
120model!(variant QUALIFIED_IDENTIFIER as NODE_KIND_QUALIFIED_IDENTIFIER);
121model!(variant QUANTIFIED is quantified);
122model!(variant RDF as KW_RDF);
123model!(variant REFERENCE is reference);
124model!(variant RESTRICTIONS as_plural FIELD_NAME_RESTRICTION);
125model!(variant SELF as KW_SELF);
126model!(variant SENTENCE is MODEL_FIELD_SENTENCE);
127model!(variant SEQUENCE is sequence);
128model!(variant SIMPLE is simple);
129model!(variant STRING as NODE_KIND_STRING);
130model!(variant STRUCTURE as KW_STRUCTURE);
131model!(variant TERM is term);
132model!(variant TYPE as "type");
133model!(variant TYPE_CLASS is type_class);
134model!(variant UNARY as FIELD_NAME_UNARY);
135model!(variant UNION as KW_UNION);
136model!(variant UNKNOWN is unknown);
137model!(variant UNSIGNED as NODE_KIND_UNSIGNED);
138model!(variant VALUE as NODE_KIND_VALUE);
139model!(variant VALUE_CONSTRUCTOR is constructor);
140model!(variant WILDCARD as NODE_KIND_WILDCARD);