scarf_syntax/general/attributes.rs
1// =======================================================================
2// attributes.rs
3// =======================================================================
4// CST Nodes from 1800-2023 A.9.1
5use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct AttributeInstance<'a>(
9 pub Metadata<'a>, // (
10 pub Metadata<'a>, // *
11 pub AttrSpec<'a>,
12 pub Vec<(Metadata<'a>, AttrSpec<'a>)>,
13 pub Metadata<'a>, // *
14 pub Metadata<'a>, // )
15);
16
17#[derive(Clone, Debug, PartialEq)]
18pub struct AttrSpec<'a>(
19 pub AttrName<'a>,
20 pub Option<(Metadata<'a>, ConstantExpression<'a>)>,
21);
22
23#[derive(Clone, Debug, PartialEq)]
24pub struct AttrName<'a>(pub Identifier<'a>);