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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#![allow(
    unreachable_code,
    unused_imports,
    unused_macros,
    unused_variables,
    dead_code,
    unused_mut
)]
#![feature(
    box_patterns,
    box_syntax,
    drain_filter,
    map_first_last,
    btree_drain_filter
)]

macro_rules! set {
  () => (Set::new());
  ($($x:expr),*) => {
  vtoset(vec![$($x),*])
  }
}

pub mod bset;
pub mod def;
pub mod expr;
pub mod ops;
pub mod re;

pub use bset::*;
pub use def::*;
pub use def::*;
pub use expr::*;
pub use ops::*;

pub fn vtoset<T: Ord>(v: Vec<T>) -> Set<T> {
    v.into_iter().collect()
}

pub fn parse(src: &str) -> Re {
    re::ReParser::new().parse(&mut 0, src).unwrap()
}

fn arg(n: usize) -> String {
    std::env::args()
        .collect::<Vec<_>>()
        .get(n)
        .cloned()
        .unwrap_or_default()
}

#[test]
fn test() {
    eprintln!("{:?}", parse("123"));
    eprintln!("{:?}", parse("a|b"));
    eprintln!("{:?}", parse("^a|b$"));
}