summaryrefslogtreecommitdiff
path: root/src/main.rs
blob: 911948dfdb2ccbb04c662f56b9fdaef9442af881 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use difx::sexpr::Parser;
use difx::match_rules::{self, Bindings};

fn main() {
    let input = include_str!("../test_rule");
    let rules = difx::def_rules::parse_def_rules(input.to_string());
    // println!("{:#?}", rules);

    let pat = rules[0].clone().lhs;
    println!("{:?}", pat);

    loop {
        let mut input = String::new();
        std::io::stdin()
            .read_line(&mut input)
            .unwrap();

        let mut parser = Parser::new(&input);
        let parsed = parser.parse_one();

        let mut bindings = Bindings::default();

        if match_rules::matches(&pat, &parsed, &mut bindings) {
            println!("{:?}", &bindings);
            println!("MATCH");
        }
    }
}