Skip to main content

spyne_syntax/
ast.rs

1use std::collections::HashMap;
2
3use crate::token::{Span, TokenTree};
4
5pub struct ParsedStruct {
6    pub name: String,
7    pub fields: Vec<ParsedField>,
8    pub span: Span
9}
10
11pub struct ParsedEnum {
12    pub name: String,
13    pub variants: Vec<ParsedVariant>,
14    pub span: Span
15}
16
17pub struct ParsedField {
18    pub name: Option<String>,
19    pub attrs: Vec<ParsedAttribute>,
20    pub ty: Vec<TokenTree>,
21    pub span: Span
22}
23
24pub struct ParsedVariant {
25    pub name: String,
26    pub index: u32,
27    pub data: VariantData,
28    pub span: Span
29}
30
31pub enum VariantData {
32    Unit(Span),
33    Tuple(Vec<ParsedField>, Span),
34    Struct(Vec<ParsedField>, Span)
35}
36
37pub struct ParsedAttribute {
38    pub name: String,
39    pub args: HashMap<String, Vec<TokenTree>>,
40    pub span: Span
41}