# 语法规格

Fluent Syntax distinguishes between well-formed and valid resources.

For example, the message.attr(param: "value") syntax is well-formed. message.attr is an AttributeExpression which may be the callee of a CallExpression. However, this syntax is not valid. Message attributes, just like message values, cannot be parameterized the way terms can.

The distinction between well-formed and valid syntax allows us to keep Fluent’s EBNF simple. More complex rules are enforced in the validation step. Some implementations might choose to support well-formed Fluent resources and skip some validation for performance or other reasons. If they do so, it’s recommended that the affected Fluent resources be validated outside of these implementations, for instance as part of a build-time or compile-time step.