zen_parser/parser/
definitions.rs1#[derive(Debug, PartialEq)]
2pub(crate) enum Associativity {
3 Left,
4 Right,
5}
6
7#[derive(Debug, PartialEq)]
8pub(crate) enum Arity {
9 Single,
10 Closure,
11 Dual,
12}
13
14#[derive(Debug, PartialEq)]
15pub(crate) struct Operator {
16 pub precedence: u8,
17 pub associativity: Associativity,
18}
19
20#[derive(Debug, PartialEq)]
21pub(crate) struct BuiltIn {
22 pub arity: Arity,
23}
24
25#[macro_export]
26macro_rules! hashmap {
27 (@single $($x:tt)*) => (());
28 (@count $($rest:expr),*) => (<[()]>::len(&[$(hashmap!(@single $rest)),*]));
29
30 ($($key:expr => $value:expr,)+) => { hashmap!($($key => $value),+) };
31 ($($key:expr => $value:expr),*) => {
32 {
33 let _cap = hashmap!(@count $($key),*);
34 let mut _map = ::std::collections::HashMap::default();
35 _map.reserve(_cap);
36 $(
37 let _ = _map.insert($key, $value);
38 )*
39 _map
40 }
41 };
42}