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§

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.