Skip to content

Commit c639f44

Browse files
committed
Tidy up macro_rules grammar.
1 parent 58807b0 commit c639f44

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

doc/rust.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -478,11 +478,8 @@ with values. `proto!` is an item, defining a new name.
478478

479479
## Macros
480480

481-
User-defined syntax extensions are called "macros", and they can be defined
482-
with the `macro_rules!` syntax extension. User-defined macros can currently
483-
only be invoked in expression position.
481+
~~~~~~~~ {.ebnf .gram}
484482
485-
~~~~ {.ebnf .gram}
486483
expr_macro_rules : "macro_rules" '!' ident '(' macro_rule * ')'
487484
macro_rule : '(' matcher * ')' "=>" '(' transcriber * ')' ';'
488485
matcher : '(' matcher * ')' | '[' matcher * ']'
@@ -494,13 +491,18 @@ transcriber : '(' transcriber * ')' | '[' transcriber * ']'
494491
| '$' '(' transcriber * ')' sep_token? [ '*' | '+' ]
495492
| non_special_token
496493
497-
~~~~
494+
~~~~~~~~
495+
496+
User-defined syntax extensions are called "macros", and they can be defined
497+
with the `macro_rules!` syntax extension. User-defined macros can currently
498+
only be invoked in expression position.
499+
498500
(A `sep_token` is any token other than `*` and `+`. A `non_special_token` is
499501
any token other than a delimiter or `$`.)
500502

501503
Macro invocations are looked up by name, and each macro rule is tried in turn;
502504
the first successful match is transcribed. The matching and transcribing
503-
processes are close cousins, and will be described together:
505+
processes are closely related, and will be described together:
504506

505507
### Macro By Example
506508

0 commit comments

Comments
 (0)