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.