sdml_core/syntax/
model.rs1use super::grammar::*;
6
7macro_rules! model {
12 (node $name:ident is $value:expr) => {
13 ::paste::paste! {
14 pub const [< NODE_KIND_ $name >]: &str = stringify!($value) ;
15 }
16 };
17 (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
54model!(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
65model!(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
90model!(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);