Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/rust.ungram')
-rw-r--r--crates/syntax/rust.ungram36
1 files changed, 34 insertions, 2 deletions
diff --git a/crates/syntax/rust.ungram b/crates/syntax/rust.ungram
index 3113fc7430..324b2bbd58 100644
--- a/crates/syntax/rust.ungram
+++ b/crates/syntax/rust.ungram
@@ -126,9 +126,41 @@ MacroStmts =
Attr =
'#' '!'? '[' Meta ']'
+CfgAttrMeta =
+ 'cfg_attr' '(' CfgPredicate ',' (Meta (',' Meta)* ','?) ')'
+
+CfgMeta =
+ 'cfg' '(' CfgPredicate ','? ')'
+
+CfgPredicate =
+ CfgAtom
+| CfgComposite
+
+CfgAtom =
+ ('#ident' | 'true' | 'false') ('=' '@string')?
+
+CfgComposite =
+ keyword:'#ident' '(' (CfgPredicate (',' CfgPredicate)* ','?) ')'
+
Meta =
- 'unsafe' '(' Path ('=' Expr | TokenTree)? ')'
-| Path ('=' Expr | TokenTree)?
+ CfgAttrMeta
+| CfgMeta
+| UnsafeMeta
+| PathMeta
+| KeyValueMeta
+| TokenTreeMeta
+
+UnsafeMeta =
+ 'unsafe' '(' Meta ')'
+
+PathMeta =
+ Path
+
+KeyValueMeta =
+ Path '=' Expr
+
+TokenTreeMeta =
+ Path TokenTree
//*************************//
// Items //