File tree Expand file tree Collapse file tree 1 file changed +8
-6
lines changed Expand file tree Collapse file tree 1 file changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -478,11 +478,8 @@ with values. `proto!` is an item, defining a new name.
478
478
479
479
## Macros
480
480
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}
484
482
485
- ~~~~ {.ebnf .gram}
486
483
expr_macro_rules : "macro_rules" '!' ident '(' macro_rule * ')'
487
484
macro_rule : '(' matcher * ')' "=>" '(' transcriber * ')' ';'
488
485
matcher : '(' matcher * ')' | '[' matcher * ']'
@@ -494,13 +491,18 @@ transcriber : '(' transcriber * ')' | '[' transcriber * ']'
494
491
| '$' '(' transcriber * ')' sep_token? [ '*' | '+' ]
495
492
| non_special_token
496
493
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
+
498
500
(A ` sep_token ` is any token other than ` * ` and ` + ` . A ` non_special_token ` is
499
501
any token other than a delimiter or ` $ ` .)
500
502
501
503
Macro invocations are looked up by name, and each macro rule is tried in turn;
502
504
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:
504
506
505
507
### Macro By Example
506
508
You can’t perform that action at this time.
0 commit comments