customasm/asm/parser/
directive_include.rs

1use crate::*;
2
3
4#[derive(Clone, Debug)]
5pub struct AstDirectiveInclude
6{
7    pub header_span: diagn::Span,
8    pub filename_span: diagn::Span,
9    pub filename: String,
10}
11
12
13pub fn parse(
14    report: &mut diagn::Report,
15    walker: &mut syntax::Walker,
16    header_span: diagn::Span)
17    -> Result<AstDirectiveInclude, ()>
18{
19    let tk_filename = walker.expect(report, syntax::TokenKind::String)?;
20
21    let filename = syntax::excerpt_as_string_contents(
22        report,
23        tk_filename.span,
24        walker.get_span_excerpt(tk_filename.span))?;
25
26    walker.expect_linebreak(report)?;
27
28    Ok(AstDirectiveInclude {
29        header_span: header_span.join(tk_filename.span),
30        filename_span: tk_filename.span,
31        filename,
32    })
33}