This commit is contained in:
Andy Grove 2018-02-09 05:58:14 -07:00
parent b16396aef3
commit fcf6b1150e
4 changed files with 279 additions and 278 deletions

52
examples/acme_parser.rs Normal file
View file

@ -0,0 +1,52 @@
use std::str::Chars;
extern crate datafusion_sql;
use datafusion_sql::tokenizer::*;
use datafusion_sql::parser::*;
#[derive(Debug)]
enum AcmeToken {
/// Factorial operator `!!`
Factorial
}
#[derive(Debug)]
enum AcmeOperator {
Factorial
}
#[derive(Debug)]
enum AcmeTokenizerError {
}
struct AcmeTokenizer {
//chars: &'a Chars
}
impl SQLTokenizer<AcmeToken, AcmeTokenizerError> for AcmeTokenizer {
fn peek_token(&mut self) -> Result<Option<SQLToken<AcmeToken>>, TokenizerError<AcmeTokenizerError>> {
Ok(Some(SQLToken::Custom(AcmeToken::Factorial)))
}
fn next_token(&mut self) -> Result<Option<SQLToken<AcmeToken>>, TokenizerError<AcmeTokenizerError>> {
Ok(Some(SQLToken::Custom(AcmeToken::Factorial)))
}
}
fn main() {
let sql = "1 + !! 5 * 2";
let mut tokenizer = AcmeTokenizer { };
println!("token = {:?}", tokenizer.peek_token().unwrap());
}