Module fluent_syntax::parser[][src]

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

ParserError

Error containing information about an error encountered by the Fluent Parser.

Enums

ErrorKind

Kind of an error associated with the ParserError.

Traits

Slice

Functions

parse

Parses an input into a complete Abstract Syntax Tree representation with all source information preserved.

parse_runtime

Parses an input into an Abstract Syntax Tree representation with comments stripped.

Type Definitions

Result

Parser result always returns an AST representation of the input, and if parsing errors were encountered, a list of ParserError elements is also returned.