Module fluent_syntax::parser [−][src]
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 Definitions
Parser result always returns an AST representation of the input,
and if parsing errors were encountered, a list of ParserError
elements
is also returned.