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