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