@@ -32,9 +32,14 @@ use crate::utils::{
32
32
// example: https://gitlab.gnome.org/federico/gnome-class/-/blob/master/src/parser/mod.rs
33
33
34
34
mod kw {
35
+ use derive_syn_parse:: Parse ;
36
+ use syn:: Token ;
37
+
35
38
syn:: custom_keyword!( relation) ;
36
39
syn:: custom_keyword!( lattice) ;
37
- syn:: custom_punctuation!( LongLeftArrow , <--) ;
40
+ #[ allow( dead_code) ] // for unused fields of LongLeftArrow
41
+ #[ derive( Parse ) ]
42
+ pub struct LongLeftArrow ( Token ! [ <] , Token ! [ -] , Token ! [ -] ) ;
38
43
syn:: custom_keyword!( agg) ;
39
44
syn:: custom_keyword!( ident) ;
40
45
syn:: custom_keyword!( expr) ;
@@ -451,16 +456,10 @@ impl Parse for RuleNode {
451
456
} ;
452
457
453
458
if input. peek ( Token ! [ ; ] ) {
454
- // println!("fact rule!!!");
455
459
input. parse :: < Token ! [ ; ] > ( ) ?;
456
460
Ok ( RuleNode { head_clauses, body_items : vec ! [ ] /*Punctuated::default()*/ } )
457
461
} else {
458
- input. parse :: < Token ! [ <] > ( ) ?;
459
- input. parse :: < Token ! [ -] > ( ) ?;
460
- input. parse :: < Token ! [ -] > ( ) ?;
461
- // NOTE this does not work with quote!
462
- // input.parse::<kw::LongLeftArrow>()?;
463
-
462
+ input. parse :: < kw:: LongLeftArrow > ( ) ?;
464
463
let body_items = Punctuated :: < BodyItemNode , Token ! [ , ] > :: parse_separated_nonempty ( input) ?;
465
464
input. parse :: < Token ! [ ; ] > ( ) ?;
466
465
Ok ( RuleNode { head_clauses, body_items : body_items. into_iter ( ) . collect ( ) } )
@@ -599,13 +598,10 @@ pub(crate) struct DsAttributeContents {
599
598
600
599
impl Parse for DsAttributeContents {
601
600
fn parse ( input : ParseStream ) -> Result < Self > {
602
- let content = input;
603
- // parenthesized!(content in input);
604
-
605
- let path = syn:: Path :: parse_mod_style ( & content) ?;
606
- let args = if content. peek ( Token ! [ : ] ) {
607
- content. parse :: < Token ! [ : ] > ( ) ?;
608
- TokenStream :: parse ( & content) ?
601
+ let path = syn:: Path :: parse_mod_style ( & input) ?;
602
+ let args = if input. peek ( Token ! [ : ] ) {
603
+ input. parse :: < Token ! [ : ] > ( ) ?;
604
+ TokenStream :: parse ( & input) ?
609
605
} else {
610
606
TokenStream :: default ( )
611
607
} ;
0 commit comments