mod.rs 1.4 KB
Newer Older
P
Phodal Huang 已提交
1
pub mod rule_factory;
P
Phodal Huang 已提交
2

P
Phodal Huang 已提交
3 4
pub mod abstract_rule;
pub mod begin_end_rule;
P
Phodal Huang 已提交
5
pub mod begin_while_rule;
P
Phodal Huang 已提交
6
pub mod capture_rule;
P
Phodal Huang 已提交
7
pub mod compiled_rule;
P
Phodal Huang 已提交
8
pub mod empty_rule;
P
Phodal Huang 已提交
9 10
pub mod include_only_rule;
pub mod match_rule;
P
Phodal Huang 已提交
11
pub mod reg_exp_source;
P
Phodal Huang 已提交
12
pub mod rule;
P
Phodal Huang 已提交
13 14

pub use self::abstract_rule::AbstractRule;
P
Phodal Huang 已提交
15
pub use self::begin_end_rule::BeginEndRule;
P
Phodal Huang 已提交
16 17
pub use self::begin_while_rule::BeginWhileRule;
pub use self::capture_rule::CaptureRule;
P
Phodal Huang 已提交
18
pub use self::compiled_rule::CompiledRule;
P
Phodal Huang 已提交
19
pub use self::empty_rule::EmptyRule;
P
Phodal Huang 已提交
20 21
pub use self::include_only_rule::IncludeOnlyRule;
pub use self::match_rule::MatchRule;
P
Phodal Huang 已提交
22 23
pub use self::reg_exp_source::RegExpSource;
pub use self::reg_exp_source::RegExpSourceList;
P
Phodal Huang 已提交
24
pub use self::rule::Rule;
P
Phodal Huang 已提交
25

P
Phodal Huang 已提交
26
use crate::inter::{IRawGrammar, IRawRepository};
27

P
Phodal Huang 已提交
28 29 30
// todo: trait with types
// https://users.rust-lang.org/t/impl-trait-with-generic-function-for-generic-struct/27083/2
pub trait IRuleRegistry {
P
Phodal Huang 已提交
31
    fn register_id(&mut self) -> i32;
P
Phodal Huang 已提交
32
    fn get_rule(&mut self, pattern_id: i32) -> Box<dyn AbstractRule>;
P
Phodal Huang 已提交
33
    fn register_rule(&mut self, result: Box<dyn AbstractRule>) -> Box<dyn AbstractRule>;
P
Phodal Huang 已提交
34 35 36
}

pub trait IGrammarRegistry {
P
Phodal Huang 已提交
37 38 39 40 41
    fn get_external_grammar(
        &self,
        scope_name: String,
        repository: IRawRepository,
    ) -> Option<IRawGrammar>;
P
Phodal Huang 已提交
42 43 44
}

pub trait IRuleFactoryHelper: IGrammarRegistry + IRuleRegistry {}
P
Phodal Huang 已提交
45 46 47 48

#[cfg(test)]
mod tests {
    #[test]
P
Phodal Huang 已提交
49 50
    fn should_build_json_code() {}
}