@@ -43,7 +43,7 @@ defmodule SQL.BNF do
4343 cond do
4444 String . ends_with? ( r , "word>" ) == true ->
4545 e = if is_map_key ( opts , r ) , do: e ++ opts [ r ] , else: e
46- { [ { r , ( for v <- e , v not in [ "|" , "AS" ] , do: { atom ( v ) , quoted_match ( v ) , quoted_guard ( v ) } ) } | keywords ] , operators , letters , digits , terminals }
46+ { [ { r , ( for v <- e , v not in [ "|" , "AS" ] , do: { atom ( v ) , quoted_inline_match ( v ) } ) } | keywords ] , operators , letters , digits , terminals }
4747 String . ends_with? ( r , "letter>" ) == true -> { keywords , operators , [ { r , Enum . reject ( e , & ( & 1 == "|" ) ) } | letters ] , digits , terminals }
4848 String . ends_with? ( r , "digit>" ) == true -> { keywords , operators , letters , [ { r , Enum . reject ( e , & ( & 1 == "|" ) ) } | digits ] , terminals }
4949 String . ends_with? ( r , "operator>" ) == true -> { keywords , [ rule | operators ] , letters , digits , terminals }
@@ -201,7 +201,7 @@ defmodule SQL.BNF do
201201 @ doc false
202202 def cast ( << ?< , b , _ :: binary >> = expr ) when b in ?a .. ?z or b in ?A .. ?Z , do: expr
203203 def cast ( expr ) when expr in [ "|" , "{" , "}" , "[" , "]" , :ignore , :self , "\u0020 " , "\u0009 " , "\u000D " , "\u00A0 " , "\u00A0 " , "\u1680 " , "\u2000 " , "\u2001 " , "\u2002 " , "\u2003 " , "\u2004 " , "\u2005 " , "\u2006 " , "\u2007 " , "\u2008 " , "\u2009 " , "\u200A " , "\u202F " , "\u205F " , "\u3000 " , "\u180E " , "\u200B " , "\u200C " , "\u200D " , "\u2060 " , "\uFEFF " , "\u000A " , "\u000B " , "\u000C " , "\u000D " , "\u0085 " , "\u2028 " , "\u2029 " ] , do: expr
204- def cast ( expr ) when is_binary ( expr ) , do: { atom ( expr ) , quoted_match ( expr ) , quoted_guard ( expr ) }
204+ def cast ( expr ) when is_binary ( expr ) , do: { atom ( expr ) , quoted_inline_match ( expr ) }
205205 def cast ( expr ) when is_tuple ( expr ) or is_list ( expr ) or is_atom ( expr ) , do: expr
206206
207207 @ doc false
@@ -213,34 +213,18 @@ defmodule SQL.BNF do
213213 if String . match? ( e , ~r/ [^A-Za-z]/ ) do
214214 { String . to_atom ( e ) , quoted_inline_match ( e ) }
215215 else
216- { atom ( e ) , quoted_match ( e ) , quoted_guard ( e ) }
216+ { atom ( e ) , quoted_inline_match ( e ) }
217217 end
218218 end
219219 end
220220
221- @ doc false
222- def quoted_match ( value ) , do: Enum . reduce ( 1 .. byte_size ( value ) , [ ] , fn n , acc -> [ { :"b#{ n } " , [ ] , Elixir } | acc ] end )
223-
224221 @ doc false
225222 def quoted_inline_match ( value ) do
226- for << k <- value >> , reduce: [ ] do
223+ for << k <- String . downcase ( value ) >> , reduce: [ ] do
227224 acc -> [ k | acc ]
228225 end
229226 end
230227
231- @ doc false
232- def quoted_guard ( value , acc \\ [ ] ) do
233- { value , _n } = for << k <- String . downcase ( value ) >> , reduce: { acc , 1 } do
234- { [ ] , n } -> { __guard__ ( k , n ) , n + 1 }
235- { acc , n } -> { { :and , [ context: Elixir , imports: [ { 2 , Kernel } ] ] , [ acc , __guard__ ( k , n ) ] } , n + 1 }
236- end
237- value
238- end
239-
240- @ doc false
241- def __guard__ ( k , n ) do
242- { :in , [ context: Elixir , imports: [ { 2 , Kernel } ] ] , [ { :"b#{ n } " , [ ] , Elixir } , { :sigil_c , [ delimiter: "\" " , context: Elixir , imports: [ { 2 , Kernel } ] ] , [ { :<<>> , [ ] , [ "#{ << k >> } #{ String . upcase ( << k >> ) } " ] } , [ ] ] } ] }
243- end
244228
245229 @ doc false
246230 def get_rules ( ) do
0 commit comments