1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#[macro_use]
use crate::def::*;
use regex::Regex;

add_rule!(
    Nat => Zero ({reg("Z")})
        |   Succ ({reg("S")},{reg(r"\(")},Nat,{reg(r"\)")})
);

add_rule!(
    Judgement => Plus (Nat, {reg("plus")}, Nat, {reg("is")}, Nat)
        |   Times (Nat, {reg("times")}, Nat, {reg("is")}, Nat)
);

fn reg(s: &str) -> Regex {
    Regex::new(s).unwrap()
}