Function fluent_syntax::parser::parse
source · pub fn parse<'s, S>(input: S) -> Result<S>where
S: Slice<'s>,
Expand description
Parses an input into a complete Abstract Syntax Tree representation with all source information preserved.
This mode is intended for tooling, linters and other scenarios where complete representation, with comments, is preferred over speed and memory utilization.
§Example
use fluent_syntax::parser;
use fluent_syntax::ast;
let ftl = r#"
### Resource Level Comment
# This is a message comment
hello-world = Hello World!
"#;
let resource = parser::parse(ftl)
.expect("Failed to parse an FTL resource.");
assert_eq!(
resource.body[0],
ast::Entry::ResourceComment(
ast::Comment {
content: vec![
"Resource Level Comment"
]
}
)
);
assert_eq!(
resource.body[1],
ast::Entry::Message(
ast::Message {
id: ast::Identifier {
name: "hello-world"
},
value: Some(ast::Pattern {
elements: vec![
ast::PatternElement::TextElement {
value: "Hello World!"
},
]
}),
attributes: vec![],
comment: Some(
ast::Comment {
content: vec!["This is a message comment"]
}
)
}
),
);