qbe-parser 0.1.0

A parser for QBE IR
Documentation
macro_rules! impl_string_like {
    ($target:ident) => {
        impl Debug for $target {
            fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
                f.debug_tuple(stringify!($target))
                    .field(&self.text())
                    .finish()
            }
        }
        impl AsRef<str> for $target {
            #[inline]
            fn as_ref(&self) -> &str {
                self.text()
            }
        }
        impl Borrow<str> for $target {
            #[inline]
            fn borrow(&self) -> &str {
                self.text()
            }
        }
        impl equivalent::Equivalent<String> for $target {
            fn equivalent(&self, other: &String) -> bool {
                self.text().equivalent(other)
            }
        }
        impl equivalent::Comparable<String> for $target {
            fn compare(&self, key: &String) -> core::cmp::Ordering {
                self.text().cmp(key)
            }
        }
    };
}
macro_rules! impl_ident_like {
    ($target:ident) => {
        impl_string_like!($target);
        impl AsRef<Ident> for $target {
            #[inline]
            fn as_ref(&self) -> &Ident {
                self.ident()
            }
        }
        impl Borrow<Ident> for $target {
            #[inline]
            fn borrow(&self) -> &Ident {
                self.ident()
            }
        }
        impl equivalent::Equivalent<Ident> for $target {
            fn equivalent(&self, other: &Ident) -> bool {
                self.ident().equivalent(other)
            }
        }
        impl equivalent::Comparable<Ident> for $target {
            fn compare(&self, key: &Ident) -> core::cmp::Ordering {
                self.ident().cmp(key)
            }
        }
    };
}