customasm/asm/parser/
directive_include.rs1use 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}