(input: &str)
| 644 | } |
| 645 | |
| 646 | pub fn parse_cos_graph_query(input: &str) -> IResult<&str, Vec<CosGraphQuery>> { |
| 647 | println!("Starting to parse input:\n{}", input); |
| 648 | let result = many0(alt(( |
| 649 | preceded( |
| 650 | ws_tag("define"), |
| 651 | alt(( |
| 652 | preceded( |
| 653 | ws_tag("entity"), |
| 654 | map(entity_definition, |ed| { |
| 655 | println!("Parsed entity definition: {:?}", ed); |
| 656 | CosGraphQuery::EntityDefinition(ed) |
| 657 | }), |
| 658 | ), |
| 659 | preceded( |
| 660 | ws_tag("relationship"), |
| 661 | map(relationship_definition, |rd| { |
| 662 | println!("Parsed relationship definition: {:?}", rd); |
| 663 | CosGraphQuery::RelationshipDefinition(rd) |
| 664 | }), |
| 665 | ), |
| 666 | preceded( |
| 667 | ws_tag("rule"), |
| 668 | map(rule, |r| { |
| 669 | println!("Parsed rule: {:?}", r); |
| 670 | CosGraphQuery::Rule(r) |
| 671 | }), |
| 672 | ), |
| 673 | )), |
| 674 | ), |
| 675 | preceded( |
| 676 | ws_tag("insert"), |
| 677 | alt(( |
| 678 | map(entity_insertion, |ei| { |
| 679 | println!("Parsed entity insertion: {:?}", ei); |
| 680 | CosGraphQuery::EntityInsertion(ei) |
| 681 | }), |
| 682 | map(relationship_insertion, |ri| { |
| 683 | println!("Parsed relationship insertion: {:?}", ri); |
| 684 | CosGraphQuery::RelationshipInsertion(ri) |
| 685 | }), |
| 686 | )), |
| 687 | ), |
| 688 | preceded( |
| 689 | ws_tag("match"), |
| 690 | map(query, |q| { |
| 691 | println!("Parsed query: {:?}", q); |
| 692 | CosGraphQuery::Query(q) |
| 693 | }), |
| 694 | ), |
| 695 | )))(input); |
| 696 | |
| 697 | match &result { |
| 698 | Ok((remaining, queries)) => { |
| 699 | println!("Parsing completed. {} queries parsed.", queries.len()); |
| 700 | if !remaining.is_empty() { |
| 701 | println!("Remaining unparsed input:\n{}", remaining); |
| 702 | } |
| 703 | } |
no test coverage detected