fix
This commit is contained in:
parent
fc53ed34b9
commit
45d41245f9
@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
%% API
|
%% API
|
||||||
-export([parse/1, test/0]).
|
-export([parse/1, test/0]).
|
||||||
|
-export([parse_bracket/1]).
|
||||||
|
|
||||||
|
|
||||||
test() ->
|
test() ->
|
||||||
%Rule = <<"SELECT * FROM service.data WHERE id > 0 AND (name = 'anlicheng' OR name = 'test')">>,
|
%Rule = <<"SELECT * FROM service.data WHERE id > 0 AND (name = 'anlicheng' OR name = 'test')">>,
|
||||||
@ -133,3 +135,29 @@ get_tag(_) ->
|
|||||||
complex.
|
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