```antlr
lit_suffix : ident;
-literal : [ string_lit | char_lit | byte_string_lit | byte_lit | num_lit ] lit_suffix ?;
+literal : [ string_lit | char_lit | byte_string_lit | byte_lit | num_lit | bool_lit ] lit_suffix ?;
```
+The optional `lit_suffix` production is only used for certain numeric literals,
+but is reserved for future extension. That is, the above gives the lexical
+grammar, but a Rust parser will reject everything but the 12 special cases
+mentioned in [Number literals](reference.html#number-literals) in the
+reference.
+
#### Character and string literals
```antlr
#### Boolean literals
-**FIXME:** write grammar
+```antlr
+bool_lit : [ "true" | "false" ] ;
+```
The two values of the boolean type are written `true` and `false`.
```antlr
item : mod_item | fn_item | type_item | struct_item | enum_item
- | static_item | trait_item | impl_item | extern_block ;
+ | const_item | static_item | trait_item | impl_item | extern_block ;
```
### Type Parameters
**FIXME:** grammar?
+### Enumerations
+
+**FIXME:** grammar?
+
### Constant items
```antlr
rather than referring to it by name or some other evaluation rule. A literal is
a form of constant expression, so is evaluated (primarily) at compile time.
-The optional suffix is only used for certain numeric literals, but is
-reserved for future extension, that is, the above gives the lexical
-grammar, but a Rust parser will reject everything but the 12 special
-cases mentioned in [Number literals](#number-literals) below.
-
#### Examples
##### Characters and strings