1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crate::{
ast::*,
parser::{combinator::*, token::*},
};
use nom::Parser;
pub fn reference_section(input: &str) -> ParseResult<Vec<ReferenceEntry>> {
tuple_((tag_("REFERENCE;"), reference_list, tag_("ENDSEC;")))
.map(|(_start, list, _end)| list)
.parse(input)
}
pub fn reference_list(input: &str) -> ParseResult<Vec<ReferenceEntry>> {
many0_(reference).parse(input)
}
pub fn reference(input: &str) -> ParseResult<ReferenceEntry> {
tuple_((lhs_occurrence_name, char_('='), resource, char_(';')))
.map(|(name, _def, resource, _semicolon)| ReferenceEntry { name, resource })
.parse(input)
}