comment.rs |
|
2338 |
core.rs |
|
8840 |
errors.rs |
|
5220 |
expression.rs |
|
8288 |
helper.rs |
|
4741 |
macros.rs |
|
222 |
mod.rs |
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. |
7144 |
pattern.rs |
|
7720 |
runtime.rs |
|
1786 |
slice.rs |
|
531 |