@@ -67,28 +67,6 @@ impl<'a> PrattParser for Parser<'a> {
67
67
/// A prefix expression is an expression that does not have a left operand.
68
68
fn parse_prefix ( & mut self ) -> Result < Expression , ParsingError > {
69
69
if let Ok ( keyword) = self . peek_as_keyword ( ) {
70
- // Check if it's one of the special expressions
71
- if keyword == Keyword :: Null
72
- || keyword == Keyword :: CurrentTime
73
- || keyword == Keyword :: CurrentDate
74
- || keyword == Keyword :: CurrentTimestamp
75
- {
76
- self . consume_as_keyword ( keyword) ?;
77
-
78
- match keyword {
79
- Keyword :: Null => return Ok ( Expression :: LiteralValue ( LiteralValue :: Null ) ) ,
80
- Keyword :: CurrentTime => {
81
- return Ok ( Expression :: LiteralValue ( LiteralValue :: CurrentTime ) )
82
- }
83
- Keyword :: CurrentDate => {
84
- return Ok ( Expression :: LiteralValue ( LiteralValue :: CurrentDate ) )
85
- }
86
- Keyword :: CurrentTimestamp => {
87
- return Ok ( Expression :: LiteralValue ( LiteralValue :: CurrentTimestamp ) )
88
- }
89
- _ => { }
90
- }
91
- }
92
70
match keyword {
93
71
Keyword :: Case => return CaseExpressionParser :: parse_case_expression ( self ) ,
94
72
Keyword :: Cast => return CastExpressionParser :: parse_cast_expression ( self ) ,
@@ -97,12 +75,21 @@ impl<'a> PrattParser for Parser<'a> {
97
75
return ExistsExpressionParser :: parse_exists_expression ( self , false )
98
76
}
99
77
Keyword :: Raise => return RaiseExpressionParser :: parse_raise_expression ( self ) ,
100
- Keyword :: Null
101
- | Keyword :: CurrentTime
102
- | Keyword :: CurrentDate
103
- | Keyword :: CurrentTimestamp => {
104
- // These are literals, so we don't need to do anything here
105
- // as the pratt parser will handle them
78
+ Keyword :: Null => {
79
+ self . consume_as_keyword ( Keyword :: Null ) ?;
80
+ return Ok ( Expression :: LiteralValue ( LiteralValue :: Null ) ) ;
81
+ }
82
+ Keyword :: CurrentTime => {
83
+ self . consume_as_keyword ( Keyword :: CurrentTime ) ?;
84
+ return Ok ( Expression :: LiteralValue ( LiteralValue :: CurrentTime ) ) ;
85
+ }
86
+ Keyword :: CurrentDate => {
87
+ self . consume_as_keyword ( Keyword :: CurrentDate ) ?;
88
+ return Ok ( Expression :: LiteralValue ( LiteralValue :: CurrentDate ) ) ;
89
+ }
90
+ Keyword :: CurrentTimestamp => {
91
+ self . consume_as_keyword ( Keyword :: CurrentTimestamp ) ?;
92
+ return Ok ( Expression :: LiteralValue ( LiteralValue :: CurrentTimestamp ) ) ;
106
93
}
107
94
_ => return Err ( ParsingError :: UnexpectedKeyword ( keyword) ) ,
108
95
}
0 commit comments