@@ -62,19 +62,24 @@ impl SQLTokenizer<AcmeToken> for AcmeTokenizer {
62
62
}
63
63
64
64
struct AcmeParser {
65
- ansi_parser : Arc < Mutex < SQLParser < AcmeToken , AcmeExpr > > >
65
+ tokenizer : Arc < Mutex < SQLTokenizer < AcmeToken > > >
66
66
}
67
67
68
+ impl AcmeParser {
69
+
70
+ pub fn new ( tokenizer : Arc < Mutex < SQLTokenizer < AcmeToken > > > ) -> Self {
71
+ AcmeParser { tokenizer : tokenizer. clone ( ) }
72
+ }
73
+
74
+ }
68
75
impl SQLParser < AcmeToken , AcmeExpr > for AcmeParser {
69
76
70
- fn parse_prefix ( & mut self , chars : & mut CharSeq ) -> Result < Box < SQLExpr < AcmeExpr > > , ParserError < AcmeToken > > {
71
- //TODO: add custom overrides
72
- self . ansi_parser . lock ( ) . unwrap ( ) . parse_prefix ( chars)
77
+ fn parse_prefix ( & mut self , chars : & mut CharSeq ) -> Result < Option < Box < SQLExpr < AcmeExpr > > > , ParserError < AcmeToken > > {
78
+ Ok ( None )
73
79
}
74
80
75
81
fn parse_infix ( & mut self , chars : & mut CharSeq , left : & SQLExpr < AcmeExpr > , precedence : usize ) -> Result < Option < Box < SQLExpr < AcmeExpr > > > , ParserError < AcmeToken > > {
76
- //TODO: add custom overrides
77
- self . ansi_parser . lock ( ) . unwrap ( ) . parse_infix ( chars, left, precedence)
82
+ Ok ( None )
78
83
}
79
84
}
80
85
@@ -90,14 +95,18 @@ fn main() {
90
95
ansi_tokenizer : ansi_tokenizer. clone ( )
91
96
} ) ) ;
92
97
98
+ // Create parsers
99
+ let ansi_parser = Arc :: new ( Mutex :: new ( ANSISQLParser :: new ( acme_tokenizer. clone ( ) ) ) ) ;
100
+ let acme_parser = Arc :: new ( Mutex :: new ( AcmeParser :: new ( acme_tokenizer. clone ( ) ) ) ) ;
101
+
102
+ //let parser_list: Vec<Arc<Mutex<SQLParser<>>>> = vec![acme_parser, ansi_parser];
103
+
93
104
// Custom ACME parser
94
- let acme_parser: Arc < Mutex < SQLParser < AcmeToken , AcmeExpr > > > = Arc :: new ( Mutex :: new ( AcmeParser {
95
- ansi_parser : Arc :: new ( Mutex :: new ( ANSISQLParser :: new ( acme_tokenizer) ) )
96
- } ) ) ;
105
+ // let acme_parser: Arc<Mutex<SQLParser<AcmeToken, AcmeExpr>>> = Arc::new(Mutex::new(AcmeParser {
106
+ // ansi_parser: Arc::new(Mutex::new(ANSISQLParser::new(acme_tokenizer)))
107
+ // }));
97
108
98
109
// let expr = parse_expr(acme_parser).unwrap();
99
110
//
100
111
// println!("Parsed: {:?}", expr);
101
-
102
-
103
112
}
0 commit comments