#![feature(hash_set_entry)]
#![feature(once_cell)]
#![allow(dead_code)]
pub mod constants;
pub mod matching;
pub mod path;
pub mod segment;
pub mod facttree;
pub mod kbase;
mod knowledge;
pub mod kparser;
pub mod lexicon;
pub mod parse_result;
mod parser;
extern crate pest;
#[macro_use]
extern crate pest_derive;
extern crate proc_macro;
extern crate proc_macro2;
#[macro_use]
extern crate quote;
extern crate syn;
use proc_macro2::TokenStream;
pub fn derive_dbase(input: proc_macro2::TokenStream) -> TokenStream {
let ast: syn::DeriveInput = syn::parse2(input).unwrap();
let name = ast.ident;
let attr = &ast.attrs[0];
let derived_parser = parser::derive_parser(attr);
let derived_db = knowledge::derive_db();
quote! {
use std::collections::{ HashMap, HashSet, VecDeque };
use std::cell::RefCell;
use std::mem;
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
use log::{info, trace};
use pest::error::Error;
use pest::Parser;
use pest::iterators::Pair;
use uindex::constants;
use uindex::facttree::FactSet;
use uindex::kbase::{ DataBase, DBGen };
use uindex::lexicon::Lexicon;
use uindex::matching::{ MPMatching };
use uindex::path::{ TSegment, MPPath };
use uindex::segment::MPSegment;
use uindex::kparser;
use uindex::parse_result::ParseResult;
#derived_parser
#derived_db
impl<'a> DBGen<'a> for #name {
type Output = DB<'a>;
fn gen_db() -> DB<'a> {
DB::new()
}
}
}
}