Module fluent_syntax::parser
source · Expand description
Fluent Translation List parsing utilities
FTL resources can be parsed using one of two methods:
parse
- parses an input into a complete Abstract Syntax Tree representation with all source information preserved.parse_runtime
- parses an input into a runtime optimized Abstract Syntax Tree representation with comments stripped.
§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"]
}
)
}
),
);
§Error Recovery
In both modes the parser is lenient, attempting to recover from errors.
The Result
return the resulting AST in both scenarios, and in the
error scenario a vector of ParserError
elements is returned as well.
Any unparsed parts of the input are returned as ast::Entry::Junk
elements.
Structs§
- Error containing information about an error encountered by the Fluent Parser.
Enums§
- Kind of an error associated with the
ParserError
.
Traits§
Functions§
- Parses an input into a complete Abstract Syntax Tree representation with all source information preserved.
- Parses an input into an Abstract Syntax Tree representation with comments stripped.
Type Aliases§
- Parser result always returns an AST representation of the input, and if parsing errors were encountered, a list of
ParserError
elements is also returned.