y_lang/ast/
array.rs

1use pest::iterators::Pair;
2
3use super::{Expression, Integer, Position, Rule};
4
5#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
6pub struct Array<T> {
7    pub initializer: Box<Expression<T>>,
8    pub size: Integer<()>,
9    pub position: Position,
10    pub info: T,
11}
12
13impl Array<()> {
14    pub fn from_pair(pair: Pair<Rule>, file: &str) -> Array<()> {
15        assert_eq!(pair.as_rule(), Rule::array);
16        let (line, col) = pair.line_col();
17
18        let mut inner = pair.into_inner();
19
20        let initializer = inner.next().unwrap();
21        let initializer = Expression::from_pair(initializer, file);
22
23        let size = inner.next().unwrap();
24        let size = Integer::from_pair(size, file);
25
26        Array {
27            initializer: Box::new(initializer),
28            size,
29            position: (file.to_owned(), line, col),
30            info: (),
31        }
32    }
33}