fix
This commit is contained in:
parent
fc53ed34b9
commit
45d41245f9
@ -11,6 +11,8 @@
|
||||
|
||||
%% API
|
||||
-export([parse/1, test/0]).
|
||||
-export([parse_bracket/1]).
|
||||
|
||||
|
||||
test() ->
|
||||
%Rule = <<"SELECT * FROM service.data WHERE id > 0 AND (name = 'anlicheng' OR name = 'test')">>,
|
||||
@ -133,3 +135,29 @@ get_tag(_) ->
|
||||
complex.
|
||||
|
||||
|
||||
%% 括号解析
|
||||
parse_bracket(Tokens) ->
|
||||
parse_bracket(Tokens, [], []).
|
||||
|
||||
parse_bracket([], [], S) ->
|
||||
lists:reverse(S);
|
||||
parse_bracket([], Acc, S) ->
|
||||
lager:debug("acc is: ~p", [Acc]),
|
||||
lists:reverse([lists:reverse(Acc)|S]);
|
||||
parse_bracket([$(|Tokens], Acc, S) ->
|
||||
{Child, RestTokens} = parse_bracket0(Tokens, []),
|
||||
%lager:debug("child is: ~p, rest: ~p, s1: ~p", [Child, RestTokens, [Child, lists:reverse(Acc)|S]]),
|
||||
parse_bracket(RestTokens, [], [Child, lists:reverse(Acc)|S]);
|
||||
parse_bracket([H|Tokens], Acc, S) ->
|
||||
parse_bracket(Tokens, [H|Acc], S).
|
||||
|
||||
parse_bracket0([$(|Tokens], Acc) ->
|
||||
Child = parse_bracket(Tokens),
|
||||
|
||||
parse_bracket0([$)|Tokens], Acc) ->
|
||||
Child = lists:reverse(Acc),
|
||||
{Child, Tokens};
|
||||
parse_bracket0([H|Tokens], Acc) ->
|
||||
parse_bracket0(Tokens, [H|Acc]).
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user