From c26cb9fec7aecbf69104382ffeec405b0581b0ba Mon Sep 17 00:00:00 2001 From: David Ansari Date: Mon, 5 May 2025 18:00:30 +0200 Subject: [PATCH] Add lexer, parser, and evaluator > A message selector is a String whose syntax is based on a subset of the SQL92[2] conditional expression syntax. * `leex` is used to scan this string into a flat structure of tokens. * `yecc` is used to parse these tokens into a tree (conforming with the grammar rules). Example: ```erl 1> String = "JMSType = 'car' AND color = 'blue' AND weight > 2500". "JMSType = 'car' AND color = 'blue' AND weight > 2500" 2> {ok, Tokens, _} = rabbit_jms_selector_lexer:string(String). {ok,[{identifier,1,<<"JMSType">>}, {'=',1}, {string,1,<<"car">>}, {'AND',1}, {identifier,1,<<"color">>}, {'=',1}, {string,1,<<"blue">>}, {'AND',1}, {identifier,1,<<"weight">>}, {'>',1}, {integer,1,2500}], 1} 3> {ok, Expr} = rabbit_jms_selector_parser:parse(Tokens). {ok,{'and',{'and',{'=',{identifier,<<"JMSType">>}, {string,<<"car">>}}, {'=',{identifier,<<"color">>},{string,<<"blue">>}}}, {'>',{identifier,<<"weight">>},{integer,2500}}}} 4> Headers = [{<<"JMSType">>, <<"car">>}, {<<"color">>, <<"blue">>}, {<<"weight">>, 3000}]. [{<<"JMSType">>,<<"car">>}, {<<"color">>,<<"blue">>}, {<<"weight">>,3000}] 5> rabbit_fifo_filter:evaluate(Expr, Headers). true ``` --- deps/rabbit/Makefile | 3 + deps/rabbit/src/rabbit_fifo_filter.erl | 267 +++ deps/rabbit/src/rabbit_jms_selector_lexer.erl | 1619 ++++++++++++++ deps/rabbit/src/rabbit_jms_selector_lexer.xrl | 74 + .../rabbit/src/rabbit_jms_selector_parser.erl | 1853 +++++++++++++++++ .../rabbit/src/rabbit_jms_selector_parser.yrl | 119 ++ 6 files changed, 3935 insertions(+) create mode 100644 deps/rabbit/src/rabbit_fifo_filter.erl create mode 100644 deps/rabbit/src/rabbit_jms_selector_lexer.erl create mode 100644 deps/rabbit/src/rabbit_jms_selector_lexer.xrl create mode 100644 deps/rabbit/src/rabbit_jms_selector_parser.erl create mode 100644 deps/rabbit/src/rabbit_jms_selector_parser.yrl diff --git a/deps/rabbit/Makefile b/deps/rabbit/Makefile index c57975f0cc..76fb3cd083 100644 --- a/deps/rabbit/Makefile +++ b/deps/rabbit/Makefile @@ -364,6 +364,9 @@ ifdef TRACE_SUPERVISOR2 RMQ_ERLC_OPTS += -DTRACE_SUPERVISOR2=true endif +# https://www.erlang.org/doc/apps/parsetools/leex.html#file/2 +export ERL_COMPILER_OPTIONS := deterministic + # -------------------------------------------------------------------- # Documentation. # -------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_fifo_filter.erl b/deps/rabbit/src/rabbit_fifo_filter.erl new file mode 100644 index 0000000000..1d6b54cc72 --- /dev/null +++ b/deps/rabbit/src/rabbit_fifo_filter.erl @@ -0,0 +1,267 @@ +-module(rabbit_fifo_filter). + +-export([evaluate/2]). + +%% Evaluates a parsed JMS selector like expression against message headers. +-spec evaluate(term(), [{binary(), term()}]) -> boolean(). +evaluate(Expression, Headers) -> + case eval(Expression, Headers) of + true -> true; + _ -> false + end. + +%% Literals +eval({Type, Value}, _Headers) + when Type =:= integer orelse + Type =:= float orelse + Type =:= boolean orelse + Type =:= string -> + Value; + +%% Identifier lookup +eval({identifier, Name}, Headers) -> + proplists:get_value(Name, Headers); + +%% Logical operators +%% +%% Table 3-4 in +%% https://jakarta.ee/specifications/messaging/3.1/jakarta-messaging-spec-3.1#null-values +eval({'and', Expr1, Expr2}, Headers) -> + case eval(Expr1, Headers) of + true -> + case eval(Expr2, Headers) of + true -> true; + false -> false; + _ -> undefined + end; + false -> + % Short-circuit + false; + undefined -> + case eval(Expr2, Headers) of + false -> false; + _ -> undefined + end; + _ -> + undefined + end; +%% Table 3-5 in +%% https://jakarta.ee/specifications/messaging/3.1/jakarta-messaging-spec-3.1#null-values +eval({'or', Expr1, Expr2}, Headers) -> + case eval(Expr1, Headers) of + true -> + %% Short-circuit + true; + false -> + case eval(Expr2, Headers) of + true -> true; + false -> false; + _ -> undefined + end; + undefined -> + case eval(Expr2, Headers) of + true -> true; + _ -> undefined + end; + _ -> + undefined + end; +%% Table 3-6 in +%% https://jakarta.ee/specifications/messaging/3.1/jakarta-messaging-spec-3.1#null-values +eval({'not', Expr}, Headers) -> + case eval(Expr, Headers) of + true -> false; + false -> true; + _ -> undefined + end; + +%% Comparison operators +eval({'=' = Op, Expr1, Expr2}, Headers) -> + compare(Op, eval(Expr1, Headers), eval(Expr2, Headers)); +eval({'<>' = Op, Expr1, Expr2}, Headers) -> + compare(Op, eval(Expr1, Headers), eval(Expr2, Headers)); +eval({'>' = Op, Expr1, Expr2}, Headers) -> + compare(Op, eval(Expr1, Headers), eval(Expr2, Headers)); +eval({'<' = Op, Expr1, Expr2}, Headers) -> + compare(Op, eval(Expr1, Headers), eval(Expr2, Headers)); +eval({'>=' = Op, Expr1, Expr2}, Headers) -> + compare(Op, eval(Expr1, Headers), eval(Expr2, Headers)); +eval({'<=' = Op, Expr1, Expr2}, Headers) -> + compare(Op, eval(Expr1, Headers), eval(Expr2, Headers)); + +%% Arithmetic operators +eval({'+' = Op, Expr1, Expr2}, Headers) -> + arithmetic(Op, eval(Expr1, Headers), eval(Expr2, Headers)); +eval({'-' = Op, Expr1, Expr2}, Headers) -> + arithmetic(Op, eval(Expr1, Headers), eval(Expr2, Headers)); +eval({'*' = Op, Expr1, Expr2}, Headers) -> + arithmetic(Op, eval(Expr1, Headers), eval(Expr2, Headers)); +eval({'/' = Op, Expr1, Expr2}, Headers) -> + arithmetic(Op, eval(Expr1, Headers), eval(Expr2, Headers)); + +%% Unary operators +eval({unary_plus, Expr}, Headers) -> + Val = eval(Expr, Headers), + case is_number(Val) of + true -> Val; + false -> undefined + end; +eval({unary_minus, Expr}, Headers) -> + Val = eval(Expr, Headers), + case is_number(Val) of + true -> -Val; + false -> undefined + end; + +%% Special operators +eval({'between', Expr, From, To}, Headers) -> + Value = eval(Expr, Headers), + FromVal = eval(From, Headers), + ToVal = eval(To, Headers), + between(Value, FromVal, ToVal); + +eval({'not_between', Expr, From, To}, Headers) -> + case eval({'between', Expr, From, To}, Headers) of + true -> false; + false -> true; + _ -> undefined + end; + +eval({'in', Expr, ValueList}, Headers) -> + Value = eval(Expr, Headers), + is_in(Value, [eval(Item, Headers) || Item <- ValueList]); + +eval({'not_in', Expr, ValueList}, Headers) -> + case eval({'in', Expr, ValueList}, Headers) of + true -> false; + false -> true; + _ -> undefined + end; + +eval({'like', Expr, Pattern, Escape}, Headers) -> + Value = eval(Expr, Headers), + PatternVal = eval(Pattern, Headers), + EscapeVal = case Escape of + no_escape -> no_escape; + _ -> eval(Escape, Headers) + end, + is_like(Value, PatternVal, EscapeVal); + +eval({'not_like', Expr, Pattern, Escape}, Headers) -> + case eval({'like', Expr, Pattern, Escape}, Headers) of + true -> false; + false -> true; + _ -> undefined + end; + +eval({'is_null', Expr}, Headers) -> + eval(Expr, Headers) =:= undefined; + +eval({'is_not_null', Expr}, Headers) -> + eval(Expr, Headers) =/= undefined; + +%% Default case for unknown expressions +eval(Value, _Headers) + when is_binary(Value) orelse + is_number(Value) orelse + is_boolean(Value) -> + Value; +eval(_, _) -> + undefined. + +%% Helper functions + +%% "Comparison or arithmetic with an unknown value always yields an unknown value." +compare(_, undefined, _) -> undefined; +compare(_, _, undefined) -> undefined; +compare('=', Left, Right) -> Left == Right; +compare('<>', Left, Right) -> Left /= Right; +compare('>', Left, Right) -> Left > Right; +compare('<', Left, Right) -> Left < Right; +compare('>=', Left, Right) -> Left >= Right; +compare('<=', Left, Right) -> Left =< Right. + +arithmetic(_, undefined, _) -> + undefined; +arithmetic(_, _, undefined) -> + undefined; +arithmetic('+', Left, Right) when is_number(Left) andalso is_number(Right) -> + Left + Right; +arithmetic('-', Left, Right) when is_number(Left) andalso is_number(Right) -> + Left - Right; +arithmetic('*', Left, Right) when is_number(Left) andalso is_number(Right) -> + Left * Right; +arithmetic('/', Left, Right) when Right =:= 0 andalso Left > 0 -> + infinity; +arithmetic('/', Left, Right) when Right =:= 0 andalso Left < 0 -> + '-infinity'; +arithmetic('/', Left, Right) when Right =:= 0 andalso Left =:= 0 -> + 'NaN'; +arithmetic('/', Left, Right) when is_integer(Left) andalso is_integer(Right) -> + Left div Right; +arithmetic('/', Left, Right) when is_number(Left) andalso is_number(Right) -> + Left / Right; +arithmetic(_, _, _) -> + undefined. + +between(Value, From, To) + when Value =:= undefined orelse + From =:= undefined orelse + To =:= undefined -> + undefined; +between(Value, From, To) -> + From =< Value andalso Value =< To. + +is_in(undefined, _) -> + undefined; +is_in(Value, List) -> + lists:member(Value, List). + +is_like(Value, Pattern, Escape) + when is_binary(Value) andalso + is_binary(Pattern) -> + RegexPattern = like_to_regex(Pattern, Escape), + case re:run(Value, RegexPattern, [{capture, none}]) of + match -> true; + nomatch -> false + end; +is_like(_, _, _) -> + undefined. + +%% Convert LIKE pattern to regex +%% +%% TODO compilation should happen when the consumer attaches. +%% Should this happen within rabbit_jms_selector_parser.yrl? +like_to_regex(Pattern, Escape) -> + {ok, Regex} = convert_like_to_regex(binary_to_list(Pattern), Escape), + {ok, MP} = re:compile(<<"^", Regex/binary, "$">>), + MP. + +convert_like_to_regex(Pattern, Escape) -> + convert_like_to_regex(Pattern, [], Escape). + +convert_like_to_regex([], Acc, _) -> + {ok, iolist_to_binary(lists:reverse(Acc))}; +convert_like_to_regex([Esc, Char | Rest], Acc, Esc) when Esc =/= no_escape -> + % Escaped character - take literally + convert_like_to_regex(Rest, [escape_regex_char(Char) | Acc], Esc); +convert_like_to_regex([$% | Rest], Acc, Esc) -> + % % means any sequence of characters (including none) + convert_like_to_regex(Rest, [".*" | Acc], Esc); +convert_like_to_regex([$_ | Rest], Acc, Esc) -> + % _ means any single character + convert_like_to_regex(Rest, [$. | Acc], Esc); +convert_like_to_regex([Char | Rest], Acc, Esc) -> + % Regular character - escape for regex + convert_like_to_regex(Rest, [escape_regex_char(Char) | Acc], Esc). + +%% Escape special regex characters +escape_regex_char(Char) + when Char =:= $. orelse Char =:= $* orelse Char =:= $+ orelse + Char =:= $? orelse Char =:= $^ orelse Char =:= $$ orelse + Char =:= $[ orelse Char =:= $] orelse Char =:= $( orelse + Char =:= $) orelse Char =:= ${ orelse Char =:= $} orelse + Char =:= $| orelse Char =:= $\\ -> + [$\\, Char]; +escape_regex_char(Char) -> + Char. diff --git a/deps/rabbit/src/rabbit_jms_selector_lexer.erl b/deps/rabbit/src/rabbit_jms_selector_lexer.erl new file mode 100644 index 0000000000..0a7963b1e8 --- /dev/null +++ b/deps/rabbit/src/rabbit_jms_selector_lexer.erl @@ -0,0 +1,1619 @@ +-file("leexinc.hrl", 0). +%% The source of this file is part of leex distribution, as such it +%% has the same Copyright as the other files in the leex +%% distribution. The Copyright is defined in the accompanying file +%% COPYRIGHT. However, the resultant scanner generated by leex is the +%% property of the creator of the scanner and is not covered by that +%% Copyright. + +-module(rabbit_jms_selector_lexer). + +-export([string/1,string/2,token/2,token/3,tokens/2,tokens/3]). +-export([format_error/1]). + +%% User code. This is placed here to allow extra attributes. +-file("rabbit_jms_selector_lexer.xrl", 65). + +process_string(Chars) -> + %% remove surrounding quotes + Chars1 = lists:sublist(Chars, 2, length(Chars) - 2), + Bin = unicode:characters_to_binary(Chars1), + process_escaped_quotes(Bin). + +process_escaped_quotes(Binary) -> + binary:replace(Binary, <<"''">>, <<"'">>, [global]). + +-file("leexinc.hrl", 14). + +format_error({illegal,S}) -> ["illegal characters ",io_lib:write_string(S)]; +format_error({user,S}) -> S. + +%% string(InChars) -> +%% string(InChars, Loc) -> +%% {ok,Tokens,EndLoc} | {error,ErrorInfo,EndLoc}. +%% Loc is the starting location of the token, while EndLoc is the first not scanned +%% location. Location is either Line or {Line,Column}, depending on the "error_location" option. + +string(Ics) -> + string(Ics,1). +string(Ics,L0) -> + string(Ics, L0, 1, Ics, []). +string(Ics, L0, C0, Tcs, Ts) -> + case do_string(Ics, L0, C0, Tcs, Ts) of + {ok, T, {L,_}} -> {ok, T, L}; + {error, {{EL,_},M,D}, {L,_}} -> + EI = {EL,M,D}, + {error, EI, L} + end. + +do_string([], L, C, [], Ts) -> % No partial tokens! + {ok,yyrev(Ts),{L,C}}; +do_string(Ics0, L0, C0, Tcs, Ts) -> + case yystate(yystate(), Ics0, L0, C0, 0, reject, 0) of + {A,Alen,Ics1,L1,_C1} -> % Accepting end state + C2 = adjust_col(Tcs, Alen, C0), + string_cont(Ics1, L1, C2, yyaction(A, Alen, Tcs, L0, C0), Ts); + {A,Alen,Ics1,L1,_C1,_S1} -> % Accepting transition state + C2 = adjust_col(Tcs, Alen, C0), + string_cont(Ics1, L1, C2, yyaction(A, Alen, Tcs, L0, C0), Ts); + {reject,_Alen,Tlen,_Ics1,_L1,_C1,_S1} -> % After a non-accepting state + {error,{{L0, C0} ,?MODULE,{illegal,yypre(Tcs, Tlen+1)}},{L0, C0}}; + {A,Alen,Tlen,_Ics1,L1, C1,_S1}-> + Tcs1 = yysuf(Tcs, Alen), + L2 = adjust_line(Tlen, Alen, Tcs1, L1), + C2 = adjust_col(Tcs, Alen, C1), + string_cont(Tcs1, L2, C2, yyaction(A, Alen, Tcs, L0,C0), Ts) + end. + +%% string_cont(RestChars, Line, Col, Token, Tokens) +%% Test for and remove the end token wrapper. Push back characters +%% are prepended to RestChars. + +-dialyzer({nowarn_function, string_cont/5}). + +string_cont(Rest, Line, Col, {token,T}, Ts) -> + do_string(Rest, Line, Col, Rest, [T|Ts]); +string_cont(Rest, Line, Col, {token,T,Push}, Ts) -> + NewRest = Push ++ Rest, + do_string(NewRest, Line, Col, NewRest, [T|Ts]); +string_cont(Rest, Line, Col, {end_token,T}, Ts) -> + do_string(Rest, Line, Col, Rest, [T|Ts]); +string_cont(Rest, Line, Col, {end_token,T,Push}, Ts) -> + NewRest = Push ++ Rest, + do_string(NewRest, Line, Col, NewRest, [T|Ts]); +string_cont(Rest, Line, Col, skip_token, Ts) -> + do_string(Rest, Line, Col, Rest, Ts); +string_cont(Rest, Line, Col, {skip_token,Push}, Ts) -> + NewRest = Push ++ Rest, + do_string(NewRest, Line, Col, NewRest, Ts); +string_cont(_Rest, Line, Col, {error,S}, _Ts) -> + {error,{{Line, Col},?MODULE,{user,S}},{Line,Col}}. + +%% token(Continuation, Chars) -> +%% token(Continuation, Chars, Loc) -> +%% {more,Continuation} | {done,ReturnVal,RestChars}. +%% Must be careful when re-entering to append the latest characters to the +%% after characters in an accept. The continuation is: +%% {token,State,CurrLine,CurrCol,TokenChars,TokenLen,TokenLine,TokenCol,AccAction,AccLen} + +token(Cont,Chars) -> + token(Cont,Chars,1). +token(Cont, Chars, Line) -> + case do_token(Cont,Chars,Line,1) of + {more, _} = C -> C; + {done, Ret0, R} -> + Ret1 = case Ret0 of + {ok, T, {L,_}} -> {ok, T, L}; + {eof, {L,_}} -> {eof, L}; + {error, {{EL,_},M,D},{L,_}} -> {error, {EL,M,D},L} + end, + {done, Ret1, R} + end. + +do_token([], Chars, Line, Col) -> + token(yystate(), Chars, Line, Col, Chars, 0, Line, Col, reject, 0); +do_token({token,State,Line,Col,Tcs,Tlen,Tline,Tcol,Action,Alen}, Chars, _, _) -> + token(State, Chars, Line, Col, Tcs ++ Chars, Tlen, Tline, Tcol, Action, Alen). + +%% token(State, InChars, Line, Col, TokenChars, TokenLen, TokenLine, TokenCol +%% AcceptAction, AcceptLen) -> +%% {more,Continuation} | {done,ReturnVal,RestChars}. +%% The argument order is chosen to be more efficient. + +token(S0, Ics0, L0, C0, Tcs, Tlen0, Tline, Tcol, A0, Alen0) -> + case yystate(S0, Ics0, L0, C0, Tlen0, A0, Alen0) of + %% Accepting end state, we have a token. + {A1,Alen1,Ics1,L1,C1} -> + C2 = adjust_col(Tcs, Alen1, C1), + token_cont(Ics1, L1, C2, yyaction(A1, Alen1, Tcs, Tline,Tcol)); + %% Accepting transition state, can take more chars. + {A1,Alen1,[],L1,C1,S1} -> % Need more chars to check + {more,{token,S1,L1,C1,Tcs,Alen1,Tline,Tcol,A1,Alen1}}; + {A1,Alen1,Ics1,L1,C1,_S1} -> % Take what we got + C2 = adjust_col(Tcs, Alen1, C1), + token_cont(Ics1, L1, C2, yyaction(A1, Alen1, Tcs, Tline,Tcol)); + %% After a non-accepting state, maybe reach accept state later. + {A1,Alen1,Tlen1,[],L1,C1,S1} -> % Need more chars to check + {more,{token,S1,L1,C1,Tcs,Tlen1,Tline,Tcol,A1,Alen1}}; + {reject,_Alen1,Tlen1,eof,L1,C1,_S1} -> % No token match + %% Check for partial token which is error. + Ret = if Tlen1 > 0 -> {error,{{Tline,Tcol},?MODULE, + %% Skip eof tail in Tcs. + {illegal,yypre(Tcs, Tlen1)}},{L1,C1}}; + true -> {eof,{L1,C1}} + end, + {done,Ret,eof}; + {reject,_Alen1,Tlen1,Ics1,_L1,_C1,_S1} -> % No token match + Error = {{Tline,Tcol},?MODULE,{illegal,yypre(Tcs, Tlen1+1)}}, + {done,{error,Error,{Tline,Tcol}},Ics1}; + {A1,Alen1,Tlen1,_Ics1,L1,_C1,_S1} -> % Use last accept match + Tcs1 = yysuf(Tcs, Alen1), + L2 = adjust_line(Tlen1, Alen1, Tcs1, L1), + C2 = C0 + Alen1, + token_cont(Tcs1, L2, C2, yyaction(A1, Alen1, Tcs, Tline, Tcol)) + end. + +%% token_cont(RestChars, Line, Col, Token) +%% If we have a token or error then return done, else if we have a +%% skip_token then continue. + +-dialyzer({nowarn_function, token_cont/4}). + +token_cont(Rest, Line, Col, {token,T}) -> + {done,{ok,T,{Line,Col}},Rest}; +token_cont(Rest, Line, Col, {token,T,Push}) -> + NewRest = Push ++ Rest, + {done,{ok,T,{Line,Col}},NewRest}; +token_cont(Rest, Line, Col, {end_token,T}) -> + {done,{ok,T,{Line,Col}},Rest}; +token_cont(Rest, Line, Col, {end_token,T,Push}) -> + NewRest = Push ++ Rest, + {done,{ok,T,{Line,Col}},NewRest}; +token_cont(Rest, Line, Col, skip_token) -> + token(yystate(), Rest, Line, Col, Rest, 0, Line, Col, reject, 0); +token_cont(Rest, Line, Col, {skip_token,Push}) -> + NewRest = Push ++ Rest, + token(yystate(), NewRest, Line, Col, NewRest, 0, Line, Col, reject, 0); +token_cont(Rest, Line, Col, {error,S}) -> + {done,{error,{{Line, Col},?MODULE,{user,S}},{Line, Col}},Rest}. + +%% tokens(Continuation, Chars) -> +%% tokens(Continuation, Chars, Loc) -> +%% {more,Continuation} | {done,ReturnVal,RestChars}. +%% Must be careful when re-entering to append the latest characters to the +%% after characters in an accept. The continuation is: +%% {tokens,State,CurrLine,CurrCol,TokenChars,TokenLen,TokenLine,TokenCur,Tokens,AccAction,AccLen} +%% {skip_tokens,State,CurrLine,CurrCol,TokenChars,TokenLen,TokenLine,TokenCur,Error,AccAction,AccLen} + +tokens(Cont,Chars) -> + tokens(Cont,Chars,1). +tokens(Cont, Chars, Line) -> + case do_tokens(Cont,Chars,Line,1) of + {more, _} = C -> C; + {done, Ret0, R} -> + Ret1 = case Ret0 of + {ok, T, {L,_}} -> {ok, T, L}; + {eof, {L,_}} -> {eof, L}; + {error, {{EL,_},M,D},{L,_}} -> {error, {EL,M,D},L} + end, + {done, Ret1, R} + end. + +do_tokens([], Chars, Line, Col) -> + tokens(yystate(), Chars, Line, Col, Chars, 0, Line, Col, [], reject, 0); +do_tokens({tokens,State,Line,Col,Tcs,Tlen,Tline,Tcol,Ts,Action,Alen}, Chars, _,_) -> + tokens(State, Chars, Line, Col, Tcs ++ Chars, Tlen, Tline, Tcol, Ts, Action, Alen); +do_tokens({skip_tokens,State,Line, Col, Tcs,Tlen,Tline,Tcol,Error,Action,Alen}, Chars, _,_) -> + skip_tokens(State, Chars, Line, Col, Tcs ++ Chars, Tlen, Tline, Tcol, Error, Action, Alen). + +%% tokens(State, InChars, Line, Col, TokenChars, TokenLen, TokenLine, TokenCol,Tokens, +%% AcceptAction, AcceptLen) -> +%% {more,Continuation} | {done,ReturnVal,RestChars}. + +tokens(S0, Ics0, L0, C0, Tcs, Tlen0, Tline, Tcol, Ts, A0, Alen0) -> + case yystate(S0, Ics0, L0, C0, Tlen0, A0, Alen0) of + %% Accepting end state, we have a token. + {A1,Alen1,Ics1,L1,C1} -> + C2 = adjust_col(Tcs, Alen1, C1), + tokens_cont(Ics1, L1, C2, yyaction(A1, Alen1, Tcs, Tline, Tcol), Ts); + %% Accepting transition state, can take more chars. + {A1,Alen1,[],L1,C1,S1} -> % Need more chars to check + {more,{tokens,S1,L1,C1,Tcs,Alen1,Tline,Tcol,Ts,A1,Alen1}}; + {A1,Alen1,Ics1,L1,C1,_S1} -> % Take what we got + C2 = adjust_col(Tcs, Alen1, C1), + tokens_cont(Ics1, L1, C2, yyaction(A1, Alen1, Tcs, Tline,Tcol), Ts); + %% After a non-accepting state, maybe reach accept state later. + {A1,Alen1,Tlen1,[],L1,C1,S1} -> % Need more chars to check + {more,{tokens,S1,L1,C1,Tcs,Tlen1,Tline,Tcol,Ts,A1,Alen1}}; + {reject,_Alen1,Tlen1,eof,L1,C1,_S1} -> % No token match + %% Check for partial token which is error, no need to skip here. + Ret = if Tlen1 > 0 -> {error,{{Tline,Tcol},?MODULE, + %% Skip eof tail in Tcs. + {illegal,yypre(Tcs, Tlen1)}},{L1,C1}}; + Ts == [] -> {eof,{L1,C1}}; + true -> {ok,yyrev(Ts),{L1,C1}} + end, + {done,Ret,eof}; + {reject,_Alen1,Tlen1,_Ics1,L1,C1,_S1} -> + %% Skip rest of tokens. + Error = {{L1,C1},?MODULE,{illegal,yypre(Tcs, Tlen1+1)}}, + skip_tokens(yysuf(Tcs, Tlen1+1), L1, C1, Error); + {A1,Alen1,Tlen1,_Ics1,L1,_C1,_S1} -> + Token = yyaction(A1, Alen1, Tcs, Tline,Tcol), + Tcs1 = yysuf(Tcs, Alen1), + L2 = adjust_line(Tlen1, Alen1, Tcs1, L1), + C2 = C0 + Alen1, + tokens_cont(Tcs1, L2, C2, Token, Ts) + end. + +%% tokens_cont(RestChars, Line, Column, Token, Tokens) +%% If we have an end_token or error then return done, else if we have +%% a token then save it and continue, else if we have a skip_token +%% just continue. + +-dialyzer({nowarn_function, tokens_cont/5}). + +tokens_cont(Rest, Line, Col, {token,T}, Ts) -> + tokens(yystate(), Rest, Line, Col, Rest, 0, Line, Col, [T|Ts], reject, 0); +tokens_cont(Rest, Line, Col, {token,T,Push}, Ts) -> + NewRest = Push ++ Rest, + tokens(yystate(), NewRest, Line, Col, NewRest, 0, Line, Col, [T|Ts], reject, 0); +tokens_cont(Rest, Line, Col, {end_token,T}, Ts) -> + {done,{ok,yyrev(Ts, [T]),{Line,Col}},Rest}; +tokens_cont(Rest, Line, Col, {end_token,T,Push}, Ts) -> + NewRest = Push ++ Rest, + {done,{ok,yyrev(Ts, [T]),{Line, Col}},NewRest}; +tokens_cont(Rest, Line, Col, skip_token, Ts) -> + tokens(yystate(), Rest, Line, Col, Rest, 0, Line, Col, Ts, reject, 0); +tokens_cont(Rest, Line, Col, {skip_token,Push}, Ts) -> + NewRest = Push ++ Rest, + tokens(yystate(), NewRest, Line, Col, NewRest, 0, Line, Col, Ts, reject, 0); +tokens_cont(Rest, Line, Col, {error,S}, _Ts) -> + skip_tokens(Rest, Line, Col, {{Line,Col},?MODULE,{user,S}}). + +%% skip_tokens(InChars, Line, Col, Error) -> {done,{error,Error,{Line,Col}},Ics}. +%% Skip tokens until an end token, junk everything and return the error. + +skip_tokens(Ics, Line, Col, Error) -> + skip_tokens(yystate(), Ics, Line, Col, Ics, 0, Line, Col, Error, reject, 0). + +%% skip_tokens(State, InChars, Line, Col, TokenChars, TokenLen, TokenLine, TokenCol, Tokens, +%% AcceptAction, AcceptLen) -> +%% {more,Continuation} | {done,ReturnVal,RestChars}. + +skip_tokens(S0, Ics0, L0, C0, Tcs, Tlen0, Tline, Tcol, Error, A0, Alen0) -> + case yystate(S0, Ics0, L0, C0, Tlen0, A0, Alen0) of + {A1,Alen1,Ics1,L1, C1} -> % Accepting end state + skip_cont(Ics1, L1, C1, yyaction(A1, Alen1, Tcs, Tline, Tcol), Error); + {A1,Alen1,[],L1,C1, S1} -> % After an accepting state + {more,{skip_tokens,S1,L1,C1,Tcs,Alen1,Tline,Tcol,Error,A1,Alen1}}; + {A1,Alen1,Ics1,L1,C1,_S1} -> + skip_cont(Ics1, L1, C1, yyaction(A1, Alen1, Tcs, Tline, Tcol), Error); + {A1,Alen1,Tlen1,[],L1,C1,S1} -> % After a non-accepting state + {more,{skip_tokens,S1,L1,C1,Tcs,Tlen1,Tline,Tcol,Error,A1,Alen1}}; + {reject,_Alen1,_Tlen1,eof,L1,C1,_S1} -> + {done,{error,Error,{L1,C1}},eof}; + {reject,_Alen1,Tlen1,_Ics1,L1,C1,_S1} -> + skip_tokens(yysuf(Tcs, Tlen1+1), L1, C1,Error); + {A1,Alen1,Tlen1,_Ics1,L1,C1,_S1} -> + Token = yyaction(A1, Alen1, Tcs, Tline, Tcol), + Tcs1 = yysuf(Tcs, Alen1), + L2 = adjust_line(Tlen1, Alen1, Tcs1, L1), + skip_cont(Tcs1, L2, C1, Token, Error) + end. + +%% skip_cont(RestChars, Line, Col, Token, Error) +%% Skip tokens until we have an end_token or error then return done +%% with the original rror. + +-dialyzer({nowarn_function, skip_cont/5}). + +skip_cont(Rest, Line, Col, {token,_T}, Error) -> + skip_tokens(yystate(), Rest, Line, Col, Rest, 0, Line, Col, Error, reject, 0); +skip_cont(Rest, Line, Col, {token,_T,Push}, Error) -> + NewRest = Push ++ Rest, + skip_tokens(yystate(), NewRest, Line, Col, NewRest, 0, Line, Col, Error, reject, 0); +skip_cont(Rest, Line, Col, {end_token,_T}, Error) -> + {done,{error,Error,{Line,Col}},Rest}; +skip_cont(Rest, Line, Col, {end_token,_T,Push}, Error) -> + NewRest = Push ++ Rest, + {done,{error,Error,{Line,Col}},NewRest}; +skip_cont(Rest, Line, Col, skip_token, Error) -> + skip_tokens(yystate(), Rest, Line, Col, Rest, 0, Line, Col, Error, reject, 0); +skip_cont(Rest, Line, Col, {skip_token,Push}, Error) -> + NewRest = Push ++ Rest, + skip_tokens(yystate(), NewRest, Line, Col, NewRest, 0, Line, Col, Error, reject, 0); +skip_cont(Rest, Line, Col, {error,_S}, Error) -> + skip_tokens(yystate(), Rest, Line, Col, Rest, 0, Line, Col, Error, reject, 0). + +-compile({nowarn_unused_function, [yyrev/1, yyrev/2, yypre/2, yysuf/2]}). + +yyrev(List) -> lists:reverse(List). +yyrev(List, Tail) -> lists:reverse(List, Tail). +yypre(List, N) -> lists:sublist(List, N). +yysuf(List, N) -> lists:nthtail(N, List). + +%% adjust_line(TokenLength, AcceptLength, Chars, Line) -> NewLine +%% Make sure that newlines in Chars are not counted twice. +%% Line has been updated with respect to newlines in the prefix of +%% Chars consisting of (TokenLength - AcceptLength) characters. + +-compile({nowarn_unused_function, adjust_line/4}). + +adjust_line(N, N, _Cs, L) -> L; +adjust_line(T, A, [$\n|Cs], L) -> + adjust_line(T-1, A, Cs, L-1); +adjust_line(T, A, [_|Cs], L) -> + adjust_line(T-1, A, Cs, L). + +%% adjust_col(Chars, AcceptLength, Col) -> NewCol +%% Handle newlines, tabs and unicode chars. +adjust_col(_, 0, Col) -> + Col; +adjust_col([$\n | R], L, _) -> + adjust_col(R, L-1, 1); +adjust_col([$\t | R], L, Col) -> + adjust_col(R, L-1, tab_forward(Col)+1); +adjust_col([C | R], L, Col) when C>=0 andalso C=< 16#7F -> + adjust_col(R, L-1, Col+1); +adjust_col([C | R], L, Col) when C>= 16#80 andalso C=< 16#7FF -> + adjust_col(R, L-1, Col+2); +adjust_col([C | R], L, Col) when C>= 16#800 andalso C=< 16#FFFF -> + adjust_col(R, L-1, Col+3); +adjust_col([C | R], L, Col) when C>= 16#10000 andalso C=< 16#10FFFF -> + adjust_col(R, L-1, Col+4). + +tab_forward(C) -> + D = C rem tab_size(), + A = tab_size()-D, + C+A. + +tab_size() -> 8. + +%% yystate() -> InitialState. +%% yystate(State, InChars, Line, Col, CurrTokLen, AcceptAction, AcceptLen) -> +%% {Action, AcceptLen, RestChars, Line, Col} | +%% {Action, AcceptLen, RestChars, Line, Col, State} | +%% {reject, AcceptLen, CurrTokLen, RestChars, Line, Col, State} | +%% {Action, AcceptLen, CurrTokLen, RestChars, Line, Col, State}. +%% Generated state transition functions. The non-accepting end state +%% return signal either an unrecognised character or end of current +%% input. + +-file("rabbit_jms_selector_lexer.erl", 348). +yystate() -> 65. + +yystate(68, [101|Ics], Line, Col, Tlen, _, _) -> + yystate(64, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(68, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(68, [69|Ics], Line, Col, Tlen, _, _) -> + yystate(64, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(68, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(68, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(68, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 68 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(68, [C|Ics], Line, Col, Tlen, _, _) when C >= 70, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(68, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 100 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(68, [C|Ics], Line, Col, Tlen, _, _) when C >= 102, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(68, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,68}; +yystate(67, Ics, Line, Col, Tlen, _, _) -> + {30,Tlen,Ics,Line,Col}; +yystate(66, [119|Ics], Line, Col, Tlen, _, _) -> + yystate(68, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(66, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(66, [87|Ics], Line, Col, Tlen, _, _) -> + yystate(68, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(66, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(66, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(66, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 86 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(66, [C|Ics], Line, Col, Tlen, _, _) when C >= 88, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(66, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 118 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(66, [C|Ics], Line, Col, Tlen, _, _) when C >= 120, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(66, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,66}; +yystate(65, [116|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(61, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [111|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(45, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [110|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(37, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [109|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [108|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(13, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [106|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [107|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [105|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(2, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [103|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [104|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [102|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(14, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [101|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(34, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [99|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [100|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [98|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(58, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [97|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(52, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [96|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [95|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [84|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(61, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [79|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(45, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [78|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(37, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [77|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [76|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(13, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [74|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [75|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [73|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(2, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [71|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [72|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [70|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(14, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [69|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(34, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [67|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [68|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [66|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(58, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [65|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(52, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [63|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [64|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [62|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(40, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [61|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(32, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [60|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(28, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [58|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [59|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [47|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(19, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [46|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [45|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(23, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [44|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(27, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [43|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(31, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [42|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(35, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [41|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(39, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [40|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(43, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [39|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(47, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [37|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [38|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [36|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [32|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(63, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [13|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(63, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [11|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [12|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [10|Ics], Line, _, Tlen, Action, Alen) -> + yystate(63, Ics, Line+1, 1, Tlen+1, Action, Alen); +yystate(65, [9|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(63, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 0, C =< 8 -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 14, C =< 31 -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 33, C =< 35 -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 48, C =< 57 -> + yystate(4, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 80, C =< 83 -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 85, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 91, C =< 94 -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 112, C =< 115 -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 117, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 123 -> + yystate(67, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(65, Ics, Line, Col, Tlen, Action, Alen) -> + {Action,Alen,Tlen,Ics,Line,Col,65}; +yystate(64, [101|Ics], Line, Col, Tlen, _, _) -> + yystate(60, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(64, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(64, [69|Ics], Line, Col, Tlen, _, _) -> + yystate(60, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(64, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(64, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(64, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 68 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(64, [C|Ics], Line, Col, Tlen, _, _) when C >= 70, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(64, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 100 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(64, [C|Ics], Line, Col, Tlen, _, _) when C >= 102, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(64, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,64}; +yystate(63, [32|Ics], Line, Col, Tlen, _, _) -> + yystate(63, Ics, Line, Col, Tlen+1, 0, Tlen); +yystate(63, [13|Ics], Line, Col, Tlen, _, _) -> + yystate(63, Ics, Line, Col, Tlen+1, 0, Tlen); +yystate(63, [9|Ics], Line, Col, Tlen, _, _) -> + yystate(63, Ics, Line, Col, Tlen+1, 0, Tlen); +yystate(63, [10|Ics], Line, _, Tlen, _, _) -> + yystate(63, Ics, Line+1, 1, Tlen+1, 0, Tlen); +yystate(63, Ics, Line, Col, Tlen, _, _) -> + {0,Tlen,Ics,Line,Col,63}; +yystate(62, [116|Ics], Line, Col, Tlen, _, _) -> + yystate(66, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(62, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(62, [84|Ics], Line, Col, Tlen, _, _) -> + yystate(66, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(62, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(62, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(62, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 83 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(62, [C|Ics], Line, Col, Tlen, _, _) when C >= 85, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(62, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 115 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(62, [C|Ics], Line, Col, Tlen, _, _) when C >= 117, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(62, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,62}; +yystate(61, [114|Ics], Line, Col, Tlen, _, _) -> + yystate(57, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(61, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(61, [82|Ics], Line, Col, Tlen, _, _) -> + yystate(57, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(61, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(61, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(61, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 81 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(61, [C|Ics], Line, Col, Tlen, _, _) when C >= 83, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(61, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 113 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(61, [C|Ics], Line, Col, Tlen, _, _) when C >= 115, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(61, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,61}; +yystate(60, [110|Ics], Line, Col, Tlen, _, _) -> + yystate(56, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(60, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(60, [78|Ics], Line, Col, Tlen, _, _) -> + yystate(56, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(60, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(60, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(60, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 77 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(60, [C|Ics], Line, Col, Tlen, _, _) when C >= 79, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(60, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 109 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(60, [C|Ics], Line, Col, Tlen, _, _) when C >= 111, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(60, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,60}; +yystate(59, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(59, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(59, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(59, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(59, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(59, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,59}; +yystate(58, [101|Ics], Line, Col, Tlen, _, _) -> + yystate(62, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(58, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(58, [69|Ics], Line, Col, Tlen, _, _) -> + yystate(62, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(58, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(58, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(58, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 68 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(58, [C|Ics], Line, Col, Tlen, _, _) when C >= 70, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(58, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 100 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(58, [C|Ics], Line, Col, Tlen, _, _) when C >= 102, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(58, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,58}; +yystate(57, [117|Ics], Line, Col, Tlen, _, _) -> + yystate(53, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(57, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(57, [85|Ics], Line, Col, Tlen, _, _) -> + yystate(53, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(57, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(57, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(57, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 84 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(57, [C|Ics], Line, Col, Tlen, _, _) when C >= 86, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(57, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 116 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(57, [C|Ics], Line, Col, Tlen, _, _) when C >= 118, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(57, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,57}; +yystate(56, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 4, Tlen); +yystate(56, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 4, Tlen); +yystate(56, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 4, Tlen); +yystate(56, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 4, Tlen); +yystate(56, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 4, Tlen); +yystate(56, Ics, Line, Col, Tlen, _, _) -> + {4,Tlen,Ics,Line,Col,56}; +yystate(55, [39|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(51, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(55, [10|Ics], Line, _, Tlen, Action, Alen) -> + yystate(55, Ics, Line+1, 1, Tlen+1, Action, Alen); +yystate(55, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 0, C =< 9 -> + yystate(55, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(55, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 11, C =< 38 -> + yystate(55, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(55, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 40 -> + yystate(55, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(55, Ics, Line, Col, Tlen, Action, Alen) -> + {Action,Alen,Tlen,Ics,Line,Col,55}; +yystate(54, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 9, Tlen); +yystate(54, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 9, Tlen); +yystate(54, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 9, Tlen); +yystate(54, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 9, Tlen); +yystate(54, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 9, Tlen); +yystate(54, Ics, Line, Col, Tlen, _, _) -> + {9,Tlen,Ics,Line,Col,54}; +yystate(53, [101|Ics], Line, Col, Tlen, _, _) -> + yystate(49, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(53, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(53, [69|Ics], Line, Col, Tlen, _, _) -> + yystate(49, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(53, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(53, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(53, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 68 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(53, [C|Ics], Line, Col, Tlen, _, _) when C >= 70, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(53, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 100 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(53, [C|Ics], Line, Col, Tlen, _, _) when C >= 102, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(53, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,53}; +yystate(52, [110|Ics], Line, Col, Tlen, _, _) -> + yystate(48, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(52, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(52, [78|Ics], Line, Col, Tlen, _, _) -> + yystate(48, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(52, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(52, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(52, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 77 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(52, [C|Ics], Line, Col, Tlen, _, _) when C >= 79, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(52, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 109 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(52, [C|Ics], Line, Col, Tlen, _, _) when C >= 111, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(52, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,52}; +yystate(51, [39|Ics], Line, Col, Tlen, _, _) -> + yystate(55, Ics, Line, Col, Tlen+1, 28, Tlen); +yystate(51, Ics, Line, Col, Tlen, _, _) -> + {28,Tlen,Ics,Line,Col,51}; +yystate(50, [101|Ics], Line, Col, Tlen, _, _) -> + yystate(54, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(50, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(50, [69|Ics], Line, Col, Tlen, _, _) -> + yystate(54, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(50, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(50, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(50, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 68 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(50, [C|Ics], Line, Col, Tlen, _, _) when C >= 70, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(50, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 100 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(50, [C|Ics], Line, Col, Tlen, _, _) when C >= 102, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(50, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,50}; +yystate(49, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 10, Tlen); +yystate(49, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 10, Tlen); +yystate(49, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 10, Tlen); +yystate(49, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 10, Tlen); +yystate(49, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 10, Tlen); +yystate(49, Ics, Line, Col, Tlen, _, _) -> + {10,Tlen,Ics,Line,Col,49}; +yystate(48, [100|Ics], Line, Col, Tlen, _, _) -> + yystate(44, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(48, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(48, [68|Ics], Line, Col, Tlen, _, _) -> + yystate(44, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(48, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(48, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(48, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 67 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(48, [C|Ics], Line, Col, Tlen, _, _) when C >= 69, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(48, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 99 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(48, [C|Ics], Line, Col, Tlen, _, _) when C >= 101, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(48, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,48}; +yystate(47, [39|Ics], Line, Col, Tlen, _, _) -> + yystate(51, Ics, Line, Col, Tlen+1, 30, Tlen); +yystate(47, [10|Ics], Line, _, Tlen, _, _) -> + yystate(55, Ics, Line+1, 1, Tlen+1, 30, Tlen); +yystate(47, [C|Ics], Line, Col, Tlen, _, _) when C >= 0, C =< 9 -> + yystate(55, Ics, Line, Col, Tlen+1, 30, Tlen); +yystate(47, [C|Ics], Line, Col, Tlen, _, _) when C >= 11, C =< 38 -> + yystate(55, Ics, Line, Col, Tlen+1, 30, Tlen); +yystate(47, [C|Ics], Line, Col, Tlen, _, _) when C >= 40 -> + yystate(55, Ics, Line, Col, Tlen+1, 30, Tlen); +yystate(47, Ics, Line, Col, Tlen, _, _) -> + {30,Tlen,Ics,Line,Col,47}; +yystate(46, [112|Ics], Line, Col, Tlen, _, _) -> + yystate(50, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(46, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(46, [80|Ics], Line, Col, Tlen, _, _) -> + yystate(50, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(46, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(46, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(46, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 79 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(46, [C|Ics], Line, Col, Tlen, _, _) when C >= 81, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(46, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 111 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(46, [C|Ics], Line, Col, Tlen, _, _) when C >= 113, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(46, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,46}; +yystate(45, [114|Ics], Line, Col, Tlen, _, _) -> + yystate(41, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(45, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(45, [82|Ics], Line, Col, Tlen, _, _) -> + yystate(41, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(45, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(45, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(45, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 81 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(45, [C|Ics], Line, Col, Tlen, _, _) when C >= 83, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(45, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 113 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(45, [C|Ics], Line, Col, Tlen, _, _) when C >= 115, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(45, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,45}; +yystate(44, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 1, Tlen); +yystate(44, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 1, Tlen); +yystate(44, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 1, Tlen); +yystate(44, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 1, Tlen); +yystate(44, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 1, Tlen); +yystate(44, Ics, Line, Col, Tlen, _, _) -> + {1,Tlen,Ics,Line,Col,44}; +yystate(43, Ics, Line, Col, Tlen, _, _) -> + {22,Tlen,Ics,Line,Col}; +yystate(42, [97|Ics], Line, Col, Tlen, _, _) -> + yystate(46, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(42, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(42, [65|Ics], Line, Col, Tlen, _, _) -> + yystate(46, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(42, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(42, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(42, [C|Ics], Line, Col, Tlen, _, _) when C >= 66, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(42, [C|Ics], Line, Col, Tlen, _, _) when C >= 98, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(42, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,42}; +yystate(41, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 2, Tlen); +yystate(41, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 2, Tlen); +yystate(41, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 2, Tlen); +yystate(41, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 2, Tlen); +yystate(41, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 2, Tlen); +yystate(41, Ics, Line, Col, Tlen, _, _) -> + {2,Tlen,Ics,Line,Col,41}; +yystate(40, [61|Ics], Line, Col, Tlen, _, _) -> + yystate(36, Ics, Line, Col, Tlen+1, 16, Tlen); +yystate(40, Ics, Line, Col, Tlen, _, _) -> + {16,Tlen,Ics,Line,Col,40}; +yystate(39, Ics, Line, Col, Tlen, _, _) -> + {23,Tlen,Ics,Line,Col}; +yystate(38, [99|Ics], Line, Col, Tlen, _, _) -> + yystate(42, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [97|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [98|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [67|Ics], Line, Col, Tlen, _, _) -> + yystate(42, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [65|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [66|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [C|Ics], Line, Col, Tlen, _, _) when C >= 68, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, [C|Ics], Line, Col, Tlen, _, _) when C >= 100, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(38, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,38}; +yystate(37, [117|Ics], Line, Col, Tlen, _, _) -> + yystate(33, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [111|Ics], Line, Col, Tlen, _, _) -> + yystate(21, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [85|Ics], Line, Col, Tlen, _, _) -> + yystate(33, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [79|Ics], Line, Col, Tlen, _, _) -> + yystate(21, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 78 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [C|Ics], Line, Col, Tlen, _, _) when C >= 80, C =< 84 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [C|Ics], Line, Col, Tlen, _, _) when C >= 86, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 110 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [C|Ics], Line, Col, Tlen, _, _) when C >= 112, C =< 116 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, [C|Ics], Line, Col, Tlen, _, _) when C >= 118, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(37, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,37}; +yystate(36, Ics, Line, Col, Tlen, _, _) -> + {14,Tlen,Ics,Line,Col}; +yystate(35, Ics, Line, Col, Tlen, _, _) -> + {20,Tlen,Ics,Line,Col}; +yystate(34, [115|Ics], Line, Col, Tlen, _, _) -> + yystate(38, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(34, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(34, [83|Ics], Line, Col, Tlen, _, _) -> + yystate(38, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(34, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(34, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(34, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 82 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(34, [C|Ics], Line, Col, Tlen, _, _) when C >= 84, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(34, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 114 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(34, [C|Ics], Line, Col, Tlen, _, _) when C >= 116, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(34, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,34}; +yystate(33, [108|Ics], Line, Col, Tlen, _, _) -> + yystate(29, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(33, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(33, [76|Ics], Line, Col, Tlen, _, _) -> + yystate(29, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(33, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(33, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(33, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 75 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(33, [C|Ics], Line, Col, Tlen, _, _) when C >= 77, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(33, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 107 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(33, [C|Ics], Line, Col, Tlen, _, _) when C >= 109, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(33, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,33}; +yystate(32, Ics, Line, Col, Tlen, _, _) -> + {12,Tlen,Ics,Line,Col}; +yystate(31, Ics, Line, Col, Tlen, _, _) -> + {18,Tlen,Ics,Line,Col}; +yystate(30, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 11, Tlen); +yystate(30, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 11, Tlen); +yystate(30, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 11, Tlen); +yystate(30, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 11, Tlen); +yystate(30, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 11, Tlen); +yystate(30, Ics, Line, Col, Tlen, _, _) -> + {11,Tlen,Ics,Line,Col,30}; +yystate(29, [108|Ics], Line, Col, Tlen, _, _) -> + yystate(25, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(29, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(29, [76|Ics], Line, Col, Tlen, _, _) -> + yystate(25, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(29, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(29, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(29, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 75 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(29, [C|Ics], Line, Col, Tlen, _, _) when C >= 77, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(29, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 107 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(29, [C|Ics], Line, Col, Tlen, _, _) when C >= 109, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(29, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,29}; +yystate(28, [62|Ics], Line, Col, Tlen, _, _) -> + yystate(24, Ics, Line, Col, Tlen+1, 17, Tlen); +yystate(28, [61|Ics], Line, Col, Tlen, _, _) -> + yystate(20, Ics, Line, Col, Tlen+1, 17, Tlen); +yystate(28, Ics, Line, Col, Tlen, _, _) -> + {17,Tlen,Ics,Line,Col,28}; +yystate(27, Ics, Line, Col, Tlen, _, _) -> + {24,Tlen,Ics,Line,Col}; +yystate(26, [101|Ics], Line, Col, Tlen, _, _) -> + yystate(30, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(26, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(26, [69|Ics], Line, Col, Tlen, _, _) -> + yystate(30, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(26, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(26, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(26, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 68 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(26, [C|Ics], Line, Col, Tlen, _, _) when C >= 70, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(26, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 100 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(26, [C|Ics], Line, Col, Tlen, _, _) when C >= 102, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(26, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,26}; +yystate(25, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 8, Tlen); +yystate(25, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 8, Tlen); +yystate(25, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 8, Tlen); +yystate(25, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 8, Tlen); +yystate(25, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 8, Tlen); +yystate(25, Ics, Line, Col, Tlen, _, _) -> + {8,Tlen,Ics,Line,Col,25}; +yystate(24, Ics, Line, Col, Tlen, _, _) -> + {13,Tlen,Ics,Line,Col}; +yystate(23, Ics, Line, Col, Tlen, _, _) -> + {19,Tlen,Ics,Line,Col}; +yystate(22, [115|Ics], Line, Col, Tlen, _, _) -> + yystate(26, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(22, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(22, [83|Ics], Line, Col, Tlen, _, _) -> + yystate(26, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(22, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(22, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(22, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 82 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(22, [C|Ics], Line, Col, Tlen, _, _) when C >= 84, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(22, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 114 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(22, [C|Ics], Line, Col, Tlen, _, _) when C >= 116, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(22, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,22}; +yystate(21, [116|Ics], Line, Col, Tlen, _, _) -> + yystate(17, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(21, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(21, [84|Ics], Line, Col, Tlen, _, _) -> + yystate(17, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(21, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(21, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(21, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 83 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(21, [C|Ics], Line, Col, Tlen, _, _) when C >= 85, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(21, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 115 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(21, [C|Ics], Line, Col, Tlen, _, _) when C >= 117, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(21, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,21}; +yystate(20, Ics, Line, Col, Tlen, _, _) -> + {15,Tlen,Ics,Line,Col}; +yystate(19, Ics, Line, Col, Tlen, _, _) -> + {21,Tlen,Ics,Line,Col}; +yystate(18, [108|Ics], Line, Col, Tlen, _, _) -> + yystate(22, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(18, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(18, [76|Ics], Line, Col, Tlen, _, _) -> + yystate(22, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(18, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(18, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(18, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 75 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(18, [C|Ics], Line, Col, Tlen, _, _) when C >= 77, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(18, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 107 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(18, [C|Ics], Line, Col, Tlen, _, _) when C >= 109, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(18, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,18}; +yystate(17, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 3, Tlen); +yystate(17, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 3, Tlen); +yystate(17, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 3, Tlen); +yystate(17, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 3, Tlen); +yystate(17, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 3, Tlen); +yystate(17, Ics, Line, Col, Tlen, _, _) -> + {3,Tlen,Ics,Line,Col,17}; +yystate(16, [45|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(8, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(16, [43|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(8, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(16, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 48, C =< 57 -> + yystate(12, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(16, Ics, Line, Col, Tlen, Action, Alen) -> + {Action,Alen,Tlen,Ics,Line,Col,16}; +yystate(15, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 48, C =< 57 -> + yystate(11, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(15, Ics, Line, Col, Tlen, Action, Alen) -> + {Action,Alen,Tlen,Ics,Line,Col,15}; +yystate(14, [97|Ics], Line, Col, Tlen, _, _) -> + yystate(18, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(14, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(14, [65|Ics], Line, Col, Tlen, _, _) -> + yystate(18, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(14, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(14, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(14, [C|Ics], Line, Col, Tlen, _, _) when C >= 66, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(14, [C|Ics], Line, Col, Tlen, _, _) when C >= 98, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(14, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,14}; +yystate(13, [105|Ics], Line, Col, Tlen, _, _) -> + yystate(9, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(13, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(13, [73|Ics], Line, Col, Tlen, _, _) -> + yystate(9, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(13, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(13, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(13, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 72 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(13, [C|Ics], Line, Col, Tlen, _, _) when C >= 74, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(13, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 104 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(13, [C|Ics], Line, Col, Tlen, _, _) when C >= 106, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(13, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,13}; +yystate(12, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(12, Ics, Line, Col, Tlen+1, 27, Tlen); +yystate(12, Ics, Line, Col, Tlen, _, _) -> + {27,Tlen,Ics,Line,Col,12}; +yystate(11, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(11, Ics, Line, Col, Tlen+1, 26, Tlen); +yystate(11, Ics, Line, Col, Tlen, _, _) -> + {26,Tlen,Ics,Line,Col,11}; +yystate(10, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 6, Tlen); +yystate(10, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 6, Tlen); +yystate(10, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 6, Tlen); +yystate(10, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 6, Tlen); +yystate(10, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 6, Tlen); +yystate(10, Ics, Line, Col, Tlen, _, _) -> + {6,Tlen,Ics,Line,Col,10}; +yystate(9, [107|Ics], Line, Col, Tlen, _, _) -> + yystate(5, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(9, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(9, [75|Ics], Line, Col, Tlen, _, _) -> + yystate(5, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(9, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(9, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(9, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 74 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(9, [C|Ics], Line, Col, Tlen, _, _) when C >= 76, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(9, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 106 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(9, [C|Ics], Line, Col, Tlen, _, _) when C >= 108, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(9, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,9}; +yystate(8, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 48, C =< 57 -> + yystate(12, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(8, Ics, Line, Col, Tlen, Action, Alen) -> + {Action,Alen,Tlen,Ics,Line,Col,8}; +yystate(7, [45|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(15, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(7, [43|Ics], Line, Col, Tlen, Action, Alen) -> + yystate(15, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(7, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 48, C =< 57 -> + yystate(11, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(7, Ics, Line, Col, Tlen, Action, Alen) -> + {Action,Alen,Tlen,Ics,Line,Col,7}; +yystate(6, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 7, Tlen); +yystate(6, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 7, Tlen); +yystate(6, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 7, Tlen); +yystate(6, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 7, Tlen); +yystate(6, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 7, Tlen); +yystate(6, Ics, Line, Col, Tlen, _, _) -> + {7,Tlen,Ics,Line,Col,6}; +yystate(5, [101|Ics], Line, Col, Tlen, _, _) -> + yystate(1, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(5, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(5, [69|Ics], Line, Col, Tlen, _, _) -> + yystate(1, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(5, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(5, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(5, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 68 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(5, [C|Ics], Line, Col, Tlen, _, _) when C >= 70, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(5, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 100 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(5, [C|Ics], Line, Col, Tlen, _, _) when C >= 102, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(5, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,5}; +yystate(4, [101|Ics], Line, Col, Tlen, _, _) -> + yystate(16, Ics, Line, Col, Tlen+1, 25, Tlen); +yystate(4, [69|Ics], Line, Col, Tlen, _, _) -> + yystate(16, Ics, Line, Col, Tlen+1, 25, Tlen); +yystate(4, [46|Ics], Line, Col, Tlen, _, _) -> + yystate(0, Ics, Line, Col, Tlen+1, 25, Tlen); +yystate(4, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(4, Ics, Line, Col, Tlen+1, 25, Tlen); +yystate(4, Ics, Line, Col, Tlen, _, _) -> + {25,Tlen,Ics,Line,Col,4}; +yystate(3, [101|Ics], Line, Col, Tlen, _, _) -> + yystate(7, Ics, Line, Col, Tlen+1, 26, Tlen); +yystate(3, [69|Ics], Line, Col, Tlen, _, _) -> + yystate(7, Ics, Line, Col, Tlen+1, 26, Tlen); +yystate(3, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(3, Ics, Line, Col, Tlen+1, 26, Tlen); +yystate(3, Ics, Line, Col, Tlen, _, _) -> + {26,Tlen,Ics,Line,Col,3}; +yystate(2, [115|Ics], Line, Col, Tlen, _, _) -> + yystate(6, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [110|Ics], Line, Col, Tlen, _, _) -> + yystate(10, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [83|Ics], Line, Col, Tlen, _, _) -> + yystate(6, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [78|Ics], Line, Col, Tlen, _, _) -> + yystate(10, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 77 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [C|Ics], Line, Col, Tlen, _, _) when C >= 79, C =< 82 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [C|Ics], Line, Col, Tlen, _, _) when C >= 84, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 109 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [C|Ics], Line, Col, Tlen, _, _) when C >= 111, C =< 114 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, [C|Ics], Line, Col, Tlen, _, _) when C >= 116, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 29, Tlen); +yystate(2, Ics, Line, Col, Tlen, _, _) -> + {29,Tlen,Ics,Line,Col,2}; +yystate(1, [95|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 5, Tlen); +yystate(1, [36|Ics], Line, Col, Tlen, _, _) -> + yystate(59, Ics, Line, Col, Tlen+1, 5, Tlen); +yystate(1, [C|Ics], Line, Col, Tlen, _, _) when C >= 48, C =< 57 -> + yystate(59, Ics, Line, Col, Tlen+1, 5, Tlen); +yystate(1, [C|Ics], Line, Col, Tlen, _, _) when C >= 65, C =< 90 -> + yystate(59, Ics, Line, Col, Tlen+1, 5, Tlen); +yystate(1, [C|Ics], Line, Col, Tlen, _, _) when C >= 97, C =< 122 -> + yystate(59, Ics, Line, Col, Tlen+1, 5, Tlen); +yystate(1, Ics, Line, Col, Tlen, _, _) -> + {5,Tlen,Ics,Line,Col,1}; +yystate(0, [C|Ics], Line, Col, Tlen, Action, Alen) when C >= 48, C =< 57 -> + yystate(3, Ics, Line, Col, Tlen+1, Action, Alen); +yystate(0, Ics, Line, Col, Tlen, Action, Alen) -> + {Action,Alen,Tlen,Ics,Line,Col,0}; +yystate(S, Ics, Line, Col, Tlen, Action, Alen) -> + {Action,Alen,Tlen,Ics,Line,Col,S}. + +%% yyaction(Action, TokenLength, TokenChars, TokenLine, TokenCol) -> +%% {token,Token} | {end_token, Token} | skip_token | {error,String}. +%% Generated action function. + +yyaction(0, _, _, _, _) -> + yyaction_0(); +yyaction(1, _, _, TokenLine, _) -> + yyaction_1(TokenLine); +yyaction(2, _, _, TokenLine, _) -> + yyaction_2(TokenLine); +yyaction(3, _, _, TokenLine, _) -> + yyaction_3(TokenLine); +yyaction(4, _, _, TokenLine, _) -> + yyaction_4(TokenLine); +yyaction(5, _, _, TokenLine, _) -> + yyaction_5(TokenLine); +yyaction(6, _, _, TokenLine, _) -> + yyaction_6(TokenLine); +yyaction(7, _, _, TokenLine, _) -> + yyaction_7(TokenLine); +yyaction(8, _, _, TokenLine, _) -> + yyaction_8(TokenLine); +yyaction(9, _, _, TokenLine, _) -> + yyaction_9(TokenLine); +yyaction(10, _, _, TokenLine, _) -> + yyaction_10(TokenLine); +yyaction(11, _, _, TokenLine, _) -> + yyaction_11(TokenLine); +yyaction(12, _, _, TokenLine, _) -> + yyaction_12(TokenLine); +yyaction(13, _, _, TokenLine, _) -> + yyaction_13(TokenLine); +yyaction(14, _, _, TokenLine, _) -> + yyaction_14(TokenLine); +yyaction(15, _, _, TokenLine, _) -> + yyaction_15(TokenLine); +yyaction(16, _, _, TokenLine, _) -> + yyaction_16(TokenLine); +yyaction(17, _, _, TokenLine, _) -> + yyaction_17(TokenLine); +yyaction(18, _, _, TokenLine, _) -> + yyaction_18(TokenLine); +yyaction(19, _, _, TokenLine, _) -> + yyaction_19(TokenLine); +yyaction(20, _, _, TokenLine, _) -> + yyaction_20(TokenLine); +yyaction(21, _, _, TokenLine, _) -> + yyaction_21(TokenLine); +yyaction(22, _, _, TokenLine, _) -> + yyaction_22(TokenLine); +yyaction(23, _, _, TokenLine, _) -> + yyaction_23(TokenLine); +yyaction(24, _, _, TokenLine, _) -> + yyaction_24(TokenLine); +yyaction(25, TokenLen, YYtcs, TokenLine, _) -> + TokenChars = yypre(YYtcs, TokenLen), + yyaction_25(TokenChars, TokenLine); +yyaction(26, TokenLen, YYtcs, TokenLine, _) -> + TokenChars = yypre(YYtcs, TokenLen), + yyaction_26(TokenChars, TokenLine); +yyaction(27, TokenLen, YYtcs, TokenLine, _) -> + TokenChars = yypre(YYtcs, TokenLen), + yyaction_27(TokenChars, TokenLine); +yyaction(28, TokenLen, YYtcs, TokenLine, _) -> + TokenChars = yypre(YYtcs, TokenLen), + yyaction_28(TokenChars, TokenLine); +yyaction(29, TokenLen, YYtcs, TokenLine, _) -> + TokenChars = yypre(YYtcs, TokenLen), + yyaction_29(TokenChars, TokenLine); +yyaction(30, TokenLen, YYtcs, _, _) -> + TokenChars = yypre(YYtcs, TokenLen), + yyaction_30(TokenChars); +yyaction(_, _, _, _, _) -> error. + +-compile({inline,yyaction_0/0}). +-file("rabbit_jms_selector_lexer.xrl", 15). +yyaction_0() -> + skip_token . + +-compile({inline,yyaction_1/1}). +-file("rabbit_jms_selector_lexer.xrl", 18). +yyaction_1(TokenLine) -> + { token, { 'AND', TokenLine } } . + +-compile({inline,yyaction_2/1}). +-file("rabbit_jms_selector_lexer.xrl", 19). +yyaction_2(TokenLine) -> + { token, { 'OR', TokenLine } } . + +-compile({inline,yyaction_3/1}). +-file("rabbit_jms_selector_lexer.xrl", 20). +yyaction_3(TokenLine) -> + { token, { 'NOT', TokenLine } } . + +-compile({inline,yyaction_4/1}). +-file("rabbit_jms_selector_lexer.xrl", 23). +yyaction_4(TokenLine) -> + { token, { 'BETWEEN', TokenLine } } . + +-compile({inline,yyaction_5/1}). +-file("rabbit_jms_selector_lexer.xrl", 24). +yyaction_5(TokenLine) -> + { token, { 'LIKE', TokenLine } } . + +-compile({inline,yyaction_6/1}). +-file("rabbit_jms_selector_lexer.xrl", 25). +yyaction_6(TokenLine) -> + { token, { 'IN', TokenLine } } . + +-compile({inline,yyaction_7/1}). +-file("rabbit_jms_selector_lexer.xrl", 26). +yyaction_7(TokenLine) -> + { token, { 'IS', TokenLine } } . + +-compile({inline,yyaction_8/1}). +-file("rabbit_jms_selector_lexer.xrl", 27). +yyaction_8(TokenLine) -> + { token, { 'NULL', TokenLine } } . + +-compile({inline,yyaction_9/1}). +-file("rabbit_jms_selector_lexer.xrl", 28). +yyaction_9(TokenLine) -> + { token, { 'ESCAPE', TokenLine } } . + +-compile({inline,yyaction_10/1}). +-file("rabbit_jms_selector_lexer.xrl", 31). +yyaction_10(TokenLine) -> + { token, { boolean, TokenLine, true } } . + +-compile({inline,yyaction_11/1}). +-file("rabbit_jms_selector_lexer.xrl", 32). +yyaction_11(TokenLine) -> + { token, { boolean, TokenLine, false } } . + +-compile({inline,yyaction_12/1}). +-file("rabbit_jms_selector_lexer.xrl", 35). +yyaction_12(TokenLine) -> + { token, { '=', TokenLine } } . + +-compile({inline,yyaction_13/1}). +-file("rabbit_jms_selector_lexer.xrl", 36). +yyaction_13(TokenLine) -> + { token, { '<>', TokenLine } } . + +-compile({inline,yyaction_14/1}). +-file("rabbit_jms_selector_lexer.xrl", 37). +yyaction_14(TokenLine) -> + { token, { '>=', TokenLine } } . + +-compile({inline,yyaction_15/1}). +-file("rabbit_jms_selector_lexer.xrl", 38). +yyaction_15(TokenLine) -> + { token, { '<=', TokenLine } } . + +-compile({inline,yyaction_16/1}). +-file("rabbit_jms_selector_lexer.xrl", 39). +yyaction_16(TokenLine) -> + { token, { '>', TokenLine } } . + +-compile({inline,yyaction_17/1}). +-file("rabbit_jms_selector_lexer.xrl", 40). +yyaction_17(TokenLine) -> + { token, { '<', TokenLine } } . + +-compile({inline,yyaction_18/1}). +-file("rabbit_jms_selector_lexer.xrl", 43). +yyaction_18(TokenLine) -> + { token, { '+', TokenLine } } . + +-compile({inline,yyaction_19/1}). +-file("rabbit_jms_selector_lexer.xrl", 44). +yyaction_19(TokenLine) -> + { token, { '-', TokenLine } } . + +-compile({inline,yyaction_20/1}). +-file("rabbit_jms_selector_lexer.xrl", 45). +yyaction_20(TokenLine) -> + { token, { '*', TokenLine } } . + +-compile({inline,yyaction_21/1}). +-file("rabbit_jms_selector_lexer.xrl", 46). +yyaction_21(TokenLine) -> + { token, { '/', TokenLine } } . + +-compile({inline,yyaction_22/1}). +-file("rabbit_jms_selector_lexer.xrl", 49). +yyaction_22(TokenLine) -> + { token, { '(', TokenLine } } . + +-compile({inline,yyaction_23/1}). +-file("rabbit_jms_selector_lexer.xrl", 50). +yyaction_23(TokenLine) -> + { token, { ')', TokenLine } } . + +-compile({inline,yyaction_24/1}). +-file("rabbit_jms_selector_lexer.xrl", 51). +yyaction_24(TokenLine) -> + { token, { ',', TokenLine } } . + +-compile({inline,yyaction_25/2}). +-file("rabbit_jms_selector_lexer.xrl", 54). +yyaction_25(TokenChars, TokenLine) -> + { token, { integer, TokenLine, list_to_integer (TokenChars) } } . + +-compile({inline,yyaction_26/2}). +-file("rabbit_jms_selector_lexer.xrl", 55). +yyaction_26(TokenChars, TokenLine) -> + { token, { float, TokenLine, list_to_float (TokenChars) } } . + +-compile({inline,yyaction_27/2}). +-file("rabbit_jms_selector_lexer.xrl", 56). +yyaction_27(TokenChars, TokenLine) -> + { token, { float, TokenLine, list_to_float (TokenChars) } } . + +-compile({inline,yyaction_28/2}). +-file("rabbit_jms_selector_lexer.xrl", 57). +yyaction_28(TokenChars, TokenLine) -> + { token, { string, TokenLine, process_string (TokenChars) } } . + +-compile({inline,yyaction_29/2}). +-file("rabbit_jms_selector_lexer.xrl", 58). +yyaction_29(TokenChars, TokenLine) -> + { token, { identifier, TokenLine, list_to_binary (TokenChars) } } . + +-compile({inline,yyaction_30/1}). +-file("rabbit_jms_selector_lexer.xrl", 61). +yyaction_30(TokenChars) -> + { error, { illegal_character, TokenChars } } . +-file("leexinc.hrl", 344). diff --git a/deps/rabbit/src/rabbit_jms_selector_lexer.xrl b/deps/rabbit/src/rabbit_jms_selector_lexer.xrl new file mode 100644 index 0000000000..5035eae3bd --- /dev/null +++ b/deps/rabbit/src/rabbit_jms_selector_lexer.xrl @@ -0,0 +1,74 @@ +%%% This is the definitions file for JMS message selectors: +%%% https://jakarta.ee/specifications/messaging/3.1/jakarta-messaging-spec-3.1#message-selector +%%% +%%% To manually generate the scanner file rabbit_jms_selector_lexer.erl run: +%%% leex:file("rabbit_jms_selector_lexer.xrl", [deterministic]). + +Definitions. +WHITESPACE = [\s\t\n\r] +DIGIT = [0-9] +INT = {DIGIT}+ +FLOAT = {DIGIT}+\.{DIGIT}+([eE][\+\-]?{INT})? +EXPONENT = [0-9]+[eE][\+\-]?[0-9]+ +IDENTIFIER = [a-zA-Z_$][a-zA-Z0-9_$]* +STRING = '([^']|'')*' + +Rules. +{WHITESPACE}+ : skip_token. + +% Logical operators (case insensitive) +[aA][nN][dD] : {token, {'AND', TokenLine}}. +[oO][rR] : {token, {'OR', TokenLine}}. +[nN][oO][tT] : {token, {'NOT', TokenLine}}. + +% Special operators (case insensitive) +[bB][eE][tT][wW][eE][eE][nN] : {token, {'BETWEEN', TokenLine}}. +[lL][iI][kK][eE] : {token, {'LIKE', TokenLine}}. +[iI][nN] : {token, {'IN', TokenLine}}. +[iI][sS] : {token, {'IS', TokenLine}}. +[nN][uU][lL][lL] : {token, {'NULL', TokenLine}}. +[eE][sS][cC][aA][pP][eE] : {token, {'ESCAPE', TokenLine}}. + +% Boolean literals (case insensitive) +[tT][rR][uU][eE] : {token, {boolean, TokenLine, true}}. +[fF][aA][lL][sS][eE] : {token, {boolean, TokenLine, false}}. + +% Comparison operators += : {token, {'=', TokenLine}}. +<> : {token, {'<>', TokenLine}}. +>= : {token, {'>=', TokenLine}}. +<= : {token, {'<=', TokenLine}}. +> : {token, {'>', TokenLine}}. +< : {token, {'<', TokenLine}}. + +% Arithmetic operators +\+ : {token, {'+', TokenLine}}. +- : {token, {'-', TokenLine}}. +\* : {token, {'*', TokenLine}}. +/ : {token, {'/', TokenLine}}. + +% Parentheses and comma +\( : {token, {'(', TokenLine}}. +\) : {token, {')', TokenLine}}. +, : {token, {',', TokenLine}}. + +% Literals +{INT} : {token, {integer, TokenLine, list_to_integer(TokenChars)}}. +{FLOAT} : {token, {float, TokenLine, list_to_float(TokenChars)}}. +{EXPONENT} : {token, {float, TokenLine, list_to_float(TokenChars)}}. +{STRING} : {token, {string, TokenLine, process_string(TokenChars)}}. +{IDENTIFIER} : {token, {identifier, TokenLine, list_to_binary(TokenChars)}}. + +% Catch any other characters as errors +. : {error, {illegal_character, TokenChars}}. + +Erlang code. + +process_string(Chars) -> + %% remove surrounding quotes + Chars1 = lists:sublist(Chars, 2, length(Chars) - 2), + Bin = unicode:characters_to_binary(Chars1), + process_escaped_quotes(Bin). + +process_escaped_quotes(Binary) -> + binary:replace(Binary, <<"''">>, <<"'">>, [global]). diff --git a/deps/rabbit/src/rabbit_jms_selector_parser.erl b/deps/rabbit/src/rabbit_jms_selector_parser.erl new file mode 100644 index 0000000000..780d133552 --- /dev/null +++ b/deps/rabbit/src/rabbit_jms_selector_parser.erl @@ -0,0 +1,1853 @@ +-file("rabbit_jms_selector_parser.yrl", 0). +-module(rabbit_jms_selector_parser). +-file("rabbit_jms_selector_parser.erl", 3). +-export([parse/1, parse_and_scan/1, format_error/1]). +-file("rabbit_jms_selector_parser.yrl", 117). + +extract_value({_Token, _Line, Value}) -> Value. + +-file("yeccpre.hrl", 0). +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1996-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The parser generator will insert appropriate declarations before this line.% + +-type yecc_ret() :: {'error', _} | {'ok', _}. + +-ifdef (YECC_PARSE_DOC). +-doc ?YECC_PARSE_DOC. +-endif. +-spec parse(Tokens :: list()) -> yecc_ret(). +parse(Tokens) -> + yeccpars0(Tokens, {no_func, no_location}, 0, [], []). + +-ifdef (YECC_PARSE_AND_SCAN_DOC). +-doc ?YECC_PARSE_AND_SCAN_DOC. +-endif. +-spec parse_and_scan({function() | {atom(), atom()}, [_]} + | {atom(), atom(), [_]}) -> yecc_ret(). +parse_and_scan({F, A}) -> + yeccpars0([], {{F, A}, no_location}, 0, [], []); +parse_and_scan({M, F, A}) -> + Arity = length(A), + yeccpars0([], {{fun M:F/Arity, A}, no_location}, 0, [], []). + +-ifdef (YECC_FORMAT_ERROR_DOC). +-doc ?YECC_FORMAT_ERROR_DOC. +-endif. +-spec format_error(any()) -> [char() | list()]. +format_error(Message) -> + case io_lib:deep_char_list(Message) of + true -> + Message; + _ -> + io_lib:write(Message) + end. + +%% To be used in grammar files to throw an error message to the parser +%% toplevel. Doesn't have to be exported! +-compile({nowarn_unused_function, return_error/2}). +-spec return_error(erl_anno:location(), any()) -> no_return(). +return_error(Location, Message) -> + throw({error, {Location, ?MODULE, Message}}). + +-define(CODE_VERSION, "1.4"). + +yeccpars0(Tokens, Tzr, State, States, Vstack) -> + try yeccpars1(Tokens, Tzr, State, States, Vstack) + catch + error: Error: Stacktrace -> + try yecc_error_type(Error, Stacktrace) of + Desc -> + erlang:raise(error, {yecc_bug, ?CODE_VERSION, Desc}, + Stacktrace) + catch _:_ -> erlang:raise(error, Error, Stacktrace) + end; + %% Probably thrown from return_error/2: + throw: {error, {_Location, ?MODULE, _M}} = Error -> + Error + end. + +yecc_error_type(function_clause, [{?MODULE,F,ArityOrArgs,_} | _]) -> + case atom_to_list(F) of + "yeccgoto_" ++ SymbolL -> + {ok,[{atom,_,Symbol}],_} = erl_scan:string(SymbolL), + State = case ArityOrArgs of + [S,_,_,_,_,_,_] -> S; + _ -> state_is_unknown + end, + {Symbol, State, missing_in_goto_table} + end. + +yeccpars1([Token | Tokens], Tzr, State, States, Vstack) -> + yeccpars2(State, element(1, Token), States, Vstack, Token, Tokens, Tzr); +yeccpars1([], {{F, A},_Location}, State, States, Vstack) -> + case apply(F, A) of + {ok, Tokens, EndLocation} -> + yeccpars1(Tokens, {{F, A}, EndLocation}, State, States, Vstack); + {eof, EndLocation} -> + yeccpars1([], {no_func, EndLocation}, State, States, Vstack); + {error, Descriptor, _EndLocation} -> + {error, Descriptor} + end; +yeccpars1([], {no_func, no_location}, State, States, Vstack) -> + Line = 999999, + yeccpars2(State, '$end', States, Vstack, yecc_end(Line), [], + {no_func, Line}); +yeccpars1([], {no_func, EndLocation}, State, States, Vstack) -> + yeccpars2(State, '$end', States, Vstack, yecc_end(EndLocation), [], + {no_func, EndLocation}). + +%% yeccpars1/7 is called from generated code. +%% +%% When using the {includefile, Includefile} option, make sure that +%% yeccpars1/7 can be found by parsing the file without following +%% include directives. yecc will otherwise assume that an old +%% yeccpre.hrl is included (one which defines yeccpars1/5). +yeccpars1(State1, State, States, Vstack, Token0, [Token | Tokens], Tzr) -> + yeccpars2(State, element(1, Token), [State1 | States], + [Token0 | Vstack], Token, Tokens, Tzr); +yeccpars1(State1, State, States, Vstack, Token0, [], {{_F,_A}, _Location}=Tzr) -> + yeccpars1([], Tzr, State, [State1 | States], [Token0 | Vstack]); +yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, no_location}) -> + Location = yecctoken_end_location(Token0), + yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], + yecc_end(Location), [], {no_func, Location}); +yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, Location}) -> + yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], + yecc_end(Location), [], {no_func, Location}). + +%% For internal use only. +yecc_end(Location) -> + {'$end', Location}. + +yecctoken_end_location(Token) -> + try erl_anno:end_location(element(2, Token)) of + undefined -> yecctoken_location(Token); + Loc -> Loc + catch _:_ -> yecctoken_location(Token) + end. + +-compile({nowarn_unused_function, yeccerror/1}). +yeccerror(Token) -> + Text = yecctoken_to_string(Token), + Location = yecctoken_location(Token), + {error, {Location, ?MODULE, ["syntax error before: ", Text]}}. + +-compile({nowarn_unused_function, yecctoken_to_string/1}). +yecctoken_to_string(Token) -> + try erl_scan:text(Token) of + undefined -> yecctoken2string(Token); + Txt -> Txt + catch _:_ -> yecctoken2string(Token) + end. + +yecctoken_location(Token) -> + try erl_scan:location(Token) + catch _:_ -> element(2, Token) + end. + +-compile({nowarn_unused_function, yecctoken2string/1}). +yecctoken2string(Token) -> + try + yecctoken2string1(Token) + catch + _:_ -> + io_lib:format("~tp", [Token]) + end. + +-compile({nowarn_unused_function, yecctoken2string1/1}). +yecctoken2string1({atom, _, A}) -> io_lib:write_atom(A); +yecctoken2string1({integer,_,N}) -> io_lib:write(N); +yecctoken2string1({float,_,F}) -> io_lib:write(F); +yecctoken2string1({char,_,C}) -> io_lib:write_char(C); +yecctoken2string1({var,_,V}) -> io_lib:format("~s", [V]); +yecctoken2string1({string,_,S}) -> io_lib:write_string(S); +yecctoken2string1({reserved_symbol, _, A}) -> io_lib:write(A); +yecctoken2string1({_Cat, _, Val}) -> io_lib:format("~tp", [Val]); +yecctoken2string1({dot, _}) -> "'.'"; +yecctoken2string1({'$end', _}) -> []; +yecctoken2string1({Other, _}) when is_atom(Other) -> + io_lib:write_atom(Other); +yecctoken2string1(Other) -> + io_lib:format("~tp", [Other]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +-file("rabbit_jms_selector_parser.erl", 197). + +-dialyzer({nowarn_function, yeccpars2/7}). +-compile({nowarn_unused_function, yeccpars2/7}). +yeccpars2(0=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_0(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(1=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_1(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(2=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_2(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(3=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_3(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(4=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_4(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(5=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_5(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(6=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_6(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(7=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_7(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(8=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_8(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(9=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_9(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(10=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(11=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_11(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(12=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_12(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(13=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_13(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(14=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_14(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(15=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_0(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(16=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_16(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(17=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_16(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(18=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_0(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(19=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_19(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(20=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_20(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(21=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_21(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(22=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_22(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(23=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_23(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(24=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(25=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_0(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(26=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_0(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(27=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_27(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(28=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_28(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(29=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_29(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(30=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_30(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(31=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_31(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(32=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_32(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(33=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_33(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(34=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(35=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(36=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(37=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(38=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(39=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(40=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(41=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(42=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(43=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_43(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(44=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(45=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(46=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(47=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_47(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(48=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(49=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_49(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(50=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(51=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_51(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(52=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_52(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(53=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_53(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(54=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_54(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(55=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_55(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(56=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_52(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(57=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_57(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(58=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_58(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(59=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_59(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(60=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(61=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_61(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(62=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_62(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(63=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(64=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_64(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(65=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_52(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(66=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_66(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(67=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_67(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(68=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_68(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(69=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(70=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_70(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(71=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_71(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(72=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_72(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(73=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_73(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(74=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_74(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(75=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_75(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(76=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_76(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(77=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_77(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(78=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(79=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(80=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_80(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(81=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_81(S, Cat, Ss, Stack, T, Ts, Tzr); +%% yeccpars2(82=S, Cat, Ss, Stack, T, Ts, Tzr) -> +%% yeccpars2_82(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(83=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(84=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_84(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(85=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(86=S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_86(S, Cat, Ss, Stack, T, Ts, Tzr); +yeccpars2(Other, _, _, _, _, _, _) -> + erlang:error({yecc_bug,"1.4",{missing_state_in_action_table, Other}}). + +yeccpars2_0(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 16, Ss, Stack, T, Ts, Tzr); +yeccpars2_0(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 17, Ss, Stack, T, Ts, Tzr); +yeccpars2_0(S, 'NOT', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 18, Ss, Stack, T, Ts, Tzr); +yeccpars2_0(S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_16(S, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_1/7}). +-compile({nowarn_unused_function, yeccpars2_1/7}). +yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_1_(Stack), + yeccgoto_multiplicative_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_2/7}). +-compile({nowarn_unused_function, yeccpars2_2/7}). +yeccpars2_2(_S, '$end', _Ss, Stack, _T, _Ts, _Tzr) -> + {ok, hd(Stack)}; +yeccpars2_2(_, _, _, _, T, _, _) -> + yeccerror(T). + +-dialyzer({nowarn_function, yeccpars2_3/7}). +-compile({nowarn_unused_function, yeccpars2_3/7}). +yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_3_(Stack), + yeccgoto_unary_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_4/7}). +-compile({nowarn_unused_function, yeccpars2_4/7}). +yeccpars2_4(S, '*', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 78, Ss, Stack, T, Ts, Tzr); +yeccpars2_4(S, '/', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 79, Ss, Stack, T, Ts, Tzr); +yeccpars2_4(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_4_(Stack), + yeccgoto_additive_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_5/7}). +-compile({nowarn_unused_function, yeccpars2_5/7}). +yeccpars2_5(S, 'AND', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 25, Ss, Stack, T, Ts, Tzr); +yeccpars2_5(S, 'OR', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 26, Ss, Stack, T, Ts, Tzr); +yeccpars2_5(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_5_(Stack), + yeccgoto_conditional_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_6/7}). +-compile({nowarn_unused_function, yeccpars2_6/7}). +yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_6_(Stack), + yeccgoto_primary(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_7/7}). +-compile({nowarn_unused_function, yeccpars2_7/7}). +yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_7_(Stack), + yeccgoto_comparison_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_8/7}). +-compile({nowarn_unused_function, yeccpars2_8/7}). +yeccpars2_8(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_8_(Stack), + yeccgoto_comparison_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_9/7}). +-compile({nowarn_unused_function, yeccpars2_9/7}). +yeccpars2_9(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_9_(Stack), + yeccgoto_comparison_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_10/7}). +-compile({nowarn_unused_function, yeccpars2_10/7}). +yeccpars2_10(S, 'IS', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 83, Ss, Stack, T, Ts, Tzr); +yeccpars2_10(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_10_(Stack), + yeccgoto_primary(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_11/7}). +-compile({nowarn_unused_function, yeccpars2_11/7}). +yeccpars2_11(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_11_(Stack), + yeccgoto_selector(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_12/7}). +-compile({nowarn_unused_function, yeccpars2_12/7}). +yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_12_(Stack), + yeccgoto_logical_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_13/7}). +-compile({nowarn_unused_function, yeccpars2_13/7}). +yeccpars2_13(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_13_(Stack), + yeccgoto_comparison_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_14/7}). +-compile({nowarn_unused_function, yeccpars2_14/7}). +yeccpars2_14(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, '<', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 36, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, '<=', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 37, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, '<>', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 38, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, '=', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 39, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, '>', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 40, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, '>=', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 41, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, 'BETWEEN', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 42, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, 'IN', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 43, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, 'LIKE', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(S, 'NOT', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); +yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_14_(Stack), + yeccgoto_comparison_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +%% yeccpars2_15: see yeccpars2_0 + +-dialyzer({nowarn_function, yeccpars2_16/7}). +-compile({nowarn_unused_function, yeccpars2_16/7}). +yeccpars2_16(S, '(', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 15, Ss, Stack, T, Ts, Tzr); +yeccpars2_16(S, 'boolean', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 19, Ss, Stack, T, Ts, Tzr); +yeccpars2_16(S, 'float', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 20, Ss, Stack, T, Ts, Tzr); +yeccpars2_16(S, 'identifier', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 21, Ss, Stack, T, Ts, Tzr); +yeccpars2_16(S, 'integer', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 22, Ss, Stack, T, Ts, Tzr); +yeccpars2_16(S, 'string', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 23, Ss, Stack, T, Ts, Tzr); +yeccpars2_16(_, _, _, _, T, _, _) -> + yeccerror(T). + +%% yeccpars2_17: see yeccpars2_16 + +%% yeccpars2_18: see yeccpars2_0 + +-dialyzer({nowarn_function, yeccpars2_19/7}). +-compile({nowarn_unused_function, yeccpars2_19/7}). +yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_19_(Stack), + yeccgoto_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_20/7}). +-compile({nowarn_unused_function, yeccpars2_20/7}). +yeccpars2_20(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_20_(Stack), + yeccgoto_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_21/7}). +-compile({nowarn_unused_function, yeccpars2_21/7}). +yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_21_(Stack), + yeccgoto_identifier_expr(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_22/7}). +-compile({nowarn_unused_function, yeccpars2_22/7}). +yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_22_(Stack), + yeccgoto_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_23/7}). +-compile({nowarn_unused_function, yeccpars2_23/7}). +yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_23_(Stack), + yeccgoto_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_24/7}). +-compile({nowarn_unused_function, yeccpars2_24/7}). +yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_|Nss] = Ss, + NewStack = yeccpars2_24_(Stack), + yeccgoto_logical_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +%% yeccpars2_25: see yeccpars2_0 + +%% yeccpars2_26: see yeccpars2_0 + +-dialyzer({nowarn_function, yeccpars2_27/7}). +-compile({nowarn_unused_function, yeccpars2_27/7}). +yeccpars2_27(S, 'AND', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 25, Ss, Stack, T, Ts, Tzr); +yeccpars2_27(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_27_(Stack), + yeccgoto_logical_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_28/7}). +-compile({nowarn_unused_function, yeccpars2_28/7}). +yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_28_(Stack), + yeccgoto_logical_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_29/7}). +-compile({nowarn_unused_function, yeccpars2_29/7}). +yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_|Nss] = Ss, + NewStack = yeccpars2_29_(Stack), + yeccgoto_unary_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_30/7}). +-compile({nowarn_unused_function, yeccpars2_30/7}). +yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_30_(Stack), + yeccgoto_primary(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_31/7}). +-compile({nowarn_unused_function, yeccpars2_31/7}). +yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_|Nss] = Ss, + NewStack = yeccpars2_31_(Stack), + yeccgoto_unary_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_32/7}). +-compile({nowarn_unused_function, yeccpars2_32/7}). +yeccpars2_32(S, ')', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); +yeccpars2_32(_, _, _, _, T, _, _) -> + yeccerror(T). + +-dialyzer({nowarn_function, yeccpars2_33/7}). +-compile({nowarn_unused_function, yeccpars2_33/7}). +yeccpars2_33(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_33_(Stack), + yeccgoto_primary(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +yeccpars2_34(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 16, Ss, Stack, T, Ts, Tzr); +yeccpars2_34(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 17, Ss, Stack, T, Ts, Tzr); +yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_16(S, Cat, Ss, Stack, T, Ts, Tzr). + +%% yeccpars2_35: see yeccpars2_34 + +%% yeccpars2_36: see yeccpars2_34 + +%% yeccpars2_37: see yeccpars2_34 + +%% yeccpars2_38: see yeccpars2_34 + +%% yeccpars2_39: see yeccpars2_34 + +%% yeccpars2_40: see yeccpars2_34 + +%% yeccpars2_41: see yeccpars2_34 + +%% yeccpars2_42: see yeccpars2_34 + +-dialyzer({nowarn_function, yeccpars2_43/7}). +-compile({nowarn_unused_function, yeccpars2_43/7}). +yeccpars2_43(S, '(', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 65, Ss, Stack, T, Ts, Tzr); +yeccpars2_43(_, _, _, _, T, _, _) -> + yeccerror(T). + +%% yeccpars2_44: see yeccpars2_34 + +-dialyzer({nowarn_function, yeccpars2_45/7}). +-compile({nowarn_unused_function, yeccpars2_45/7}). +yeccpars2_45(S, 'BETWEEN', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 46, Ss, Stack, T, Ts, Tzr); +yeccpars2_45(S, 'IN', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); +yeccpars2_45(S, 'LIKE', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); +yeccpars2_45(_, _, _, _, T, _, _) -> + yeccerror(T). + +%% yeccpars2_46: see yeccpars2_34 + +-dialyzer({nowarn_function, yeccpars2_47/7}). +-compile({nowarn_unused_function, yeccpars2_47/7}). +yeccpars2_47(S, '(', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); +yeccpars2_47(_, _, _, _, T, _, _) -> + yeccerror(T). + +%% yeccpars2_48: see yeccpars2_34 + +-dialyzer({nowarn_function, yeccpars2_49/7}). +-compile({nowarn_unused_function, yeccpars2_49/7}). +yeccpars2_49(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_49(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_49(S, 'ESCAPE', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 50, Ss, Stack, T, Ts, Tzr); +yeccpars2_49(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_,_|Nss] = Ss, + NewStack = yeccpars2_49_(Stack), + yeccgoto_like_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +%% yeccpars2_50: see yeccpars2_34 + +-dialyzer({nowarn_function, yeccpars2_51/7}). +-compile({nowarn_unused_function, yeccpars2_51/7}). +yeccpars2_51(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_51(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_51(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_,_,_,_|Nss] = Ss, + NewStack = yeccpars2_51_(Stack), + yeccgoto_like_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_52/7}). +-compile({nowarn_unused_function, yeccpars2_52/7}). +yeccpars2_52(S, 'string', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 55, Ss, Stack, T, Ts, Tzr); +yeccpars2_52(_, _, _, _, T, _, _) -> + yeccerror(T). + +-dialyzer({nowarn_function, yeccpars2_53/7}). +-compile({nowarn_unused_function, yeccpars2_53/7}). +yeccpars2_53(S, ')', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 58, Ss, Stack, T, Ts, Tzr); +yeccpars2_53(_, _, _, _, T, _, _) -> + yeccerror(T). + +-dialyzer({nowarn_function, yeccpars2_54/7}). +-compile({nowarn_unused_function, yeccpars2_54/7}). +yeccpars2_54(S, ',', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); +yeccpars2_54(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_54_(Stack), + yeccgoto_string_list(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_55/7}). +-compile({nowarn_unused_function, yeccpars2_55/7}). +yeccpars2_55(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + NewStack = yeccpars2_55_(Stack), + yeccgoto_string_item(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). + +%% yeccpars2_56: see yeccpars2_52 + +-dialyzer({nowarn_function, yeccpars2_57/7}). +-compile({nowarn_unused_function, yeccpars2_57/7}). +yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_57_(Stack), + yeccgoto_string_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_58/7}). +-compile({nowarn_unused_function, yeccpars2_58/7}). +yeccpars2_58(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_,_,_,_|Nss] = Ss, + NewStack = yeccpars2_58_(Stack), + yeccgoto_in_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_59/7}). +-compile({nowarn_unused_function, yeccpars2_59/7}). +yeccpars2_59(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_59(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_59(S, 'AND', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 60, Ss, Stack, T, Ts, Tzr); +yeccpars2_59(_, _, _, _, T, _, _) -> + yeccerror(T). + +%% yeccpars2_60: see yeccpars2_34 + +-dialyzer({nowarn_function, yeccpars2_61/7}). +-compile({nowarn_unused_function, yeccpars2_61/7}). +yeccpars2_61(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_61(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_61(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_,_,_,_|Nss] = Ss, + NewStack = yeccpars2_61_(Stack), + yeccgoto_between_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_62/7}). +-compile({nowarn_unused_function, yeccpars2_62/7}). +yeccpars2_62(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_62(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_62(S, 'ESCAPE', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 63, Ss, Stack, T, Ts, Tzr); +yeccpars2_62(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_62_(Stack), + yeccgoto_like_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +%% yeccpars2_63: see yeccpars2_34 + +-dialyzer({nowarn_function, yeccpars2_64/7}). +-compile({nowarn_unused_function, yeccpars2_64/7}). +yeccpars2_64(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_64(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_64(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_,_,_|Nss] = Ss, + NewStack = yeccpars2_64_(Stack), + yeccgoto_like_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +%% yeccpars2_65: see yeccpars2_52 + +-dialyzer({nowarn_function, yeccpars2_66/7}). +-compile({nowarn_unused_function, yeccpars2_66/7}). +yeccpars2_66(S, ')', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); +yeccpars2_66(_, _, _, _, T, _, _) -> + yeccerror(T). + +-dialyzer({nowarn_function, yeccpars2_67/7}). +-compile({nowarn_unused_function, yeccpars2_67/7}). +yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_,_,_|Nss] = Ss, + NewStack = yeccpars2_67_(Stack), + yeccgoto_in_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_68/7}). +-compile({nowarn_unused_function, yeccpars2_68/7}). +yeccpars2_68(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_68(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_68(S, 'AND', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 69, Ss, Stack, T, Ts, Tzr); +yeccpars2_68(_, _, _, _, T, _, _) -> + yeccerror(T). + +%% yeccpars2_69: see yeccpars2_34 + +-dialyzer({nowarn_function, yeccpars2_70/7}). +-compile({nowarn_unused_function, yeccpars2_70/7}). +yeccpars2_70(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_70(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_,_,_|Nss] = Ss, + NewStack = yeccpars2_70_(Stack), + yeccgoto_between_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_71/7}). +-compile({nowarn_unused_function, yeccpars2_71/7}). +yeccpars2_71(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_71(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_71_(Stack), + yeccgoto_comparison_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_72/7}). +-compile({nowarn_unused_function, yeccpars2_72/7}). +yeccpars2_72(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_72(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_72(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_72_(Stack), + yeccgoto_comparison_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_73/7}). +-compile({nowarn_unused_function, yeccpars2_73/7}). +yeccpars2_73(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_73(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_73(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_73_(Stack), + yeccgoto_comparison_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_74/7}). +-compile({nowarn_unused_function, yeccpars2_74/7}). +yeccpars2_74(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_74(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_74(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_74_(Stack), + yeccgoto_comparison_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_75/7}). +-compile({nowarn_unused_function, yeccpars2_75/7}). +yeccpars2_75(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_75(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_75(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_75_(Stack), + yeccgoto_comparison_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_76/7}). +-compile({nowarn_unused_function, yeccpars2_76/7}). +yeccpars2_76(S, '+', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); +yeccpars2_76(S, '-', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); +yeccpars2_76(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_76_(Stack), + yeccgoto_comparison_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_77/7}). +-compile({nowarn_unused_function, yeccpars2_77/7}). +yeccpars2_77(S, '*', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 78, Ss, Stack, T, Ts, Tzr); +yeccpars2_77(S, '/', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 79, Ss, Stack, T, Ts, Tzr); +yeccpars2_77(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_77_(Stack), + yeccgoto_additive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +%% yeccpars2_78: see yeccpars2_34 + +%% yeccpars2_79: see yeccpars2_34 + +-dialyzer({nowarn_function, yeccpars2_80/7}). +-compile({nowarn_unused_function, yeccpars2_80/7}). +yeccpars2_80(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_80_(Stack), + yeccgoto_multiplicative_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_81/7}). +-compile({nowarn_unused_function, yeccpars2_81/7}). +yeccpars2_81(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_81_(Stack), + yeccgoto_multiplicative_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_82/7}). +-compile({nowarn_unused_function, yeccpars2_82/7}). +yeccpars2_82(S, '*', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 78, Ss, Stack, T, Ts, Tzr); +yeccpars2_82(S, '/', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 79, Ss, Stack, T, Ts, Tzr); +yeccpars2_82(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_82_(Stack), + yeccgoto_additive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_83/7}). +-compile({nowarn_unused_function, yeccpars2_83/7}). +yeccpars2_83(S, 'NOT', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); +yeccpars2_83(S, 'NULL', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 85, Ss, Stack, T, Ts, Tzr); +yeccpars2_83(_, _, _, _, T, _, _) -> + yeccerror(T). + +-dialyzer({nowarn_function, yeccpars2_84/7}). +-compile({nowarn_unused_function, yeccpars2_84/7}). +yeccpars2_84(S, 'NULL', Ss, Stack, T, Ts, Tzr) -> + yeccpars1(S, 86, Ss, Stack, T, Ts, Tzr); +yeccpars2_84(_, _, _, _, T, _, _) -> + yeccerror(T). + +-dialyzer({nowarn_function, yeccpars2_85/7}). +-compile({nowarn_unused_function, yeccpars2_85/7}). +yeccpars2_85(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_|Nss] = Ss, + NewStack = yeccpars2_85_(Stack), + yeccgoto_is_null_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccpars2_86/7}). +-compile({nowarn_unused_function, yeccpars2_86/7}). +yeccpars2_86(_S, Cat, Ss, Stack, T, Ts, Tzr) -> + [_,_,_|Nss] = Ss, + NewStack = yeccpars2_86_(Stack), + yeccgoto_is_null_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_additive_expr/7}). +-compile({nowarn_unused_function, yeccgoto_additive_expr/7}). +yeccgoto_additive_expr(0, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_14(14, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(15, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_14(14, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(18, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_14(14, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(25, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_14(14, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(26, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_14(14, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(36, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_76(76, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(37, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_75(75, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(38, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_74(74, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(39, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_73(73, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(40, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_72(72, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(41, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_71(71, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(42, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_68(68, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(44, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_62(62, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(46, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_59(59, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(48, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_49(49, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(50, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_51(51, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(60, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_61(61, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(63, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_64(64, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_additive_expr(69, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_70(70, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_between_expr/7}). +-compile({nowarn_unused_function, yeccgoto_between_expr/7}). +yeccgoto_between_expr(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_13(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_between_expr(15=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_13(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_between_expr(18=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_13(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_between_expr(25=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_13(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_between_expr(26=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_13(_S, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_comparison_expr/7}). +-compile({nowarn_unused_function, yeccgoto_comparison_expr/7}). +yeccgoto_comparison_expr(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_comparison_expr(15=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_comparison_expr(18=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_comparison_expr(25=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_comparison_expr(26=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_conditional_expr/7}). +-compile({nowarn_unused_function, yeccgoto_conditional_expr/7}). +yeccgoto_conditional_expr(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_11(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_conditional_expr(15, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_identifier_expr/7}). +-compile({nowarn_unused_function, yeccgoto_identifier_expr/7}). +yeccgoto_identifier_expr(0, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_10(10, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(15, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_10(10, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(16=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(17=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(18, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_10(10, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(25, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_10(10, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(26, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_10(10, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(34=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(35=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(37=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(38=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(39=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(41=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(42=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(44=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(63=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(69=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(78=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_identifier_expr(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_in_expr/7}). +-compile({nowarn_unused_function, yeccgoto_in_expr/7}). +yeccgoto_in_expr(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_9(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_in_expr(15=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_9(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_in_expr(18=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_9(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_in_expr(25=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_9(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_in_expr(26=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_9(_S, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_is_null_expr/7}). +-compile({nowarn_unused_function, yeccgoto_is_null_expr/7}). +yeccgoto_is_null_expr(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_8(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_is_null_expr(15=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_8(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_is_null_expr(18=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_8(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_is_null_expr(25=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_8(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_is_null_expr(26=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_8(_S, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_like_expr/7}). +-compile({nowarn_unused_function, yeccgoto_like_expr/7}). +yeccgoto_like_expr(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_like_expr(15=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_like_expr(18=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_like_expr(25=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_like_expr(26=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_literal/7}). +-compile({nowarn_unused_function, yeccgoto_literal/7}). +yeccgoto_literal(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(15=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(16=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(17=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(18=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(25=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(26=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(34=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(35=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(37=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(38=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(39=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(41=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(42=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(44=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(63=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(69=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(78=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_literal(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_6(_S, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_logical_expr/7}). +-compile({nowarn_unused_function, yeccgoto_logical_expr/7}). +yeccgoto_logical_expr(0, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_logical_expr(15, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_logical_expr(18=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_logical_expr(25=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_logical_expr(26, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_multiplicative_expr/7}). +-compile({nowarn_unused_function, yeccgoto_multiplicative_expr/7}). +yeccgoto_multiplicative_expr(0, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(15, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(18, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(25, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(26, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(34, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_82(82, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(35, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_77(77, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(36, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(37, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(38, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(39, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(40, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(41, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(42, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(44, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(46, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(48, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(50, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(60, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(63, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_multiplicative_expr(69, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_4(4, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_primary/7}). +-compile({nowarn_unused_function, yeccgoto_primary/7}). +yeccgoto_primary(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(15=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(16=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(17=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(18=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(25=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(26=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(34=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(35=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(37=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(38=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(39=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(41=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(42=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(44=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(63=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(69=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(78=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_primary(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_3(_S, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_selector/7}). +-compile({nowarn_unused_function, yeccgoto_selector/7}). +yeccgoto_selector(0, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_2(2, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_string_item/7}). +-compile({nowarn_unused_function, yeccgoto_string_item/7}). +yeccgoto_string_item(52, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_54(54, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_string_item(56, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_54(54, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_string_item(65, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_54(54, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_string_list/7}). +-compile({nowarn_unused_function, yeccgoto_string_list/7}). +yeccgoto_string_list(52, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_53(53, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_string_list(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_string_list(65, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_66(66, Cat, Ss, Stack, T, Ts, Tzr). + +-dialyzer({nowarn_function, yeccgoto_unary_expr/7}). +-compile({nowarn_unused_function, yeccgoto_unary_expr/7}). +yeccgoto_unary_expr(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(15=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(18=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(25=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(26=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(34=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(35=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(37=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(38=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(39=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(41=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(42=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(44=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(63=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(69=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(78=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_81(_S, Cat, Ss, Stack, T, Ts, Tzr); +yeccgoto_unary_expr(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> + yeccpars2_80(_S, Cat, Ss, Stack, T, Ts, Tzr). + +-compile({inline,yeccpars2_1_/1}). +-dialyzer({nowarn_function, yeccpars2_1_/1}). +-compile({nowarn_unused_function, yeccpars2_1_/1}). +-file("rabbit_jms_selector_parser.yrl", 92). +yeccpars2_1_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_3_/1}). +-dialyzer({nowarn_function, yeccpars2_3_/1}). +-compile({nowarn_unused_function, yeccpars2_3_/1}). +-file("rabbit_jms_selector_parser.yrl", 97). +yeccpars2_3_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_4_/1}). +-dialyzer({nowarn_function, yeccpars2_4_/1}). +-compile({nowarn_unused_function, yeccpars2_4_/1}). +-file("rabbit_jms_selector_parser.yrl", 88). +yeccpars2_4_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_5_/1}). +-dialyzer({nowarn_function, yeccpars2_5_/1}). +-compile({nowarn_unused_function, yeccpars2_5_/1}). +-file("rabbit_jms_selector_parser.yrl", 43). +yeccpars2_5_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_6_/1}). +-dialyzer({nowarn_function, yeccpars2_6_/1}). +-compile({nowarn_unused_function, yeccpars2_6_/1}). +-file("rabbit_jms_selector_parser.yrl", 101). +yeccpars2_6_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_7_/1}). +-dialyzer({nowarn_function, yeccpars2_7_/1}). +-compile({nowarn_unused_function, yeccpars2_7_/1}). +-file("rabbit_jms_selector_parser.yrl", 59). +yeccpars2_7_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_8_/1}). +-dialyzer({nowarn_function, yeccpars2_8_/1}). +-compile({nowarn_unused_function, yeccpars2_8_/1}). +-file("rabbit_jms_selector_parser.yrl", 61). +yeccpars2_8_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_9_/1}). +-dialyzer({nowarn_function, yeccpars2_9_/1}). +-compile({nowarn_unused_function, yeccpars2_9_/1}). +-file("rabbit_jms_selector_parser.yrl", 60). +yeccpars2_9_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_10_/1}). +-dialyzer({nowarn_function, yeccpars2_10_/1}). +-compile({nowarn_unused_function, yeccpars2_10_/1}). +-file("rabbit_jms_selector_parser.yrl", 102). +yeccpars2_10_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_11_/1}). +-dialyzer({nowarn_function, yeccpars2_11_/1}). +-compile({nowarn_unused_function, yeccpars2_11_/1}). +-file("rabbit_jms_selector_parser.yrl", 40). +yeccpars2_11_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_12_/1}). +-dialyzer({nowarn_function, yeccpars2_12_/1}). +-compile({nowarn_unused_function, yeccpars2_12_/1}). +-file("rabbit_jms_selector_parser.yrl", 49). +yeccpars2_12_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_13_/1}). +-dialyzer({nowarn_function, yeccpars2_13_/1}). +-compile({nowarn_unused_function, yeccpars2_13_/1}). +-file("rabbit_jms_selector_parser.yrl", 58). +yeccpars2_13_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_14_/1}). +-dialyzer({nowarn_function, yeccpars2_14_/1}). +-compile({nowarn_unused_function, yeccpars2_14_/1}). +-file("rabbit_jms_selector_parser.yrl", 62). +yeccpars2_14_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_19_/1}). +-dialyzer({nowarn_function, yeccpars2_19_/1}). +-compile({nowarn_unused_function, yeccpars2_19_/1}). +-file("rabbit_jms_selector_parser.yrl", 111). +yeccpars2_19_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + {boolean, extract_value(___1)} + end | __Stack]. + +-compile({inline,yeccpars2_20_/1}). +-dialyzer({nowarn_function, yeccpars2_20_/1}). +-compile({nowarn_unused_function, yeccpars2_20_/1}). +-file("rabbit_jms_selector_parser.yrl", 109). +yeccpars2_20_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + {float, extract_value(___1)} + end | __Stack]. + +-compile({inline,yeccpars2_21_/1}). +-dialyzer({nowarn_function, yeccpars2_21_/1}). +-compile({nowarn_unused_function, yeccpars2_21_/1}). +-file("rabbit_jms_selector_parser.yrl", 105). +yeccpars2_21_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + {identifier, extract_value(___1)} + end | __Stack]. + +-compile({inline,yeccpars2_22_/1}). +-dialyzer({nowarn_function, yeccpars2_22_/1}). +-compile({nowarn_unused_function, yeccpars2_22_/1}). +-file("rabbit_jms_selector_parser.yrl", 108). +yeccpars2_22_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + {integer, extract_value(___1)} + end | __Stack]. + +-compile({inline,yeccpars2_23_/1}). +-dialyzer({nowarn_function, yeccpars2_23_/1}). +-compile({nowarn_unused_function, yeccpars2_23_/1}). +-file("rabbit_jms_selector_parser.yrl", 110). +yeccpars2_23_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + {string, extract_value(___1)} + end | __Stack]. + +-compile({inline,yeccpars2_24_/1}). +-dialyzer({nowarn_function, yeccpars2_24_/1}). +-compile({nowarn_unused_function, yeccpars2_24_/1}). +-file("rabbit_jms_selector_parser.yrl", 48). +yeccpars2_24_(__Stack0) -> + [___2,___1 | __Stack] = __Stack0, + [begin + {'not', ___2} + end | __Stack]. + +-compile({inline,yeccpars2_27_/1}). +-dialyzer({nowarn_function, yeccpars2_27_/1}). +-compile({nowarn_unused_function, yeccpars2_27_/1}). +-file("rabbit_jms_selector_parser.yrl", 47). +yeccpars2_27_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'or', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_28_/1}). +-dialyzer({nowarn_function, yeccpars2_28_/1}). +-compile({nowarn_unused_function, yeccpars2_28_/1}). +-file("rabbit_jms_selector_parser.yrl", 46). +yeccpars2_28_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'and', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_29_/1}). +-dialyzer({nowarn_function, yeccpars2_29_/1}). +-compile({nowarn_unused_function, yeccpars2_29_/1}). +-file("rabbit_jms_selector_parser.yrl", 96). +yeccpars2_29_(__Stack0) -> + [___2,___1 | __Stack] = __Stack0, + [begin + {unary_minus, ___2} + end | __Stack]. + +-compile({inline,yeccpars2_30_/1}). +-dialyzer({nowarn_function, yeccpars2_30_/1}). +-compile({nowarn_unused_function, yeccpars2_30_/1}). +-file("rabbit_jms_selector_parser.yrl", 102). +yeccpars2_30_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + ___1 + end | __Stack]. + +-compile({inline,yeccpars2_31_/1}). +-dialyzer({nowarn_function, yeccpars2_31_/1}). +-compile({nowarn_unused_function, yeccpars2_31_/1}). +-file("rabbit_jms_selector_parser.yrl", 95). +yeccpars2_31_(__Stack0) -> + [___2,___1 | __Stack] = __Stack0, + [begin + {unary_plus, ___2} + end | __Stack]. + +-compile({inline,yeccpars2_33_/1}). +-dialyzer({nowarn_function, yeccpars2_33_/1}). +-compile({nowarn_unused_function, yeccpars2_33_/1}). +-file("rabbit_jms_selector_parser.yrl", 100). +yeccpars2_33_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + ___2 + end | __Stack]. + +-compile({inline,yeccpars2_49_/1}). +-dialyzer({nowarn_function, yeccpars2_49_/1}). +-compile({nowarn_unused_function, yeccpars2_49_/1}). +-file("rabbit_jms_selector_parser.yrl", 71). +yeccpars2_49_(__Stack0) -> + [___4,___3,___2,___1 | __Stack] = __Stack0, + [begin + {'not_like', ___1, ___4, no_escape} + end | __Stack]. + +-compile({inline,yeccpars2_51_/1}). +-dialyzer({nowarn_function, yeccpars2_51_/1}). +-compile({nowarn_unused_function, yeccpars2_51_/1}). +-file("rabbit_jms_selector_parser.yrl", 72). +yeccpars2_51_(__Stack0) -> + [___6,___5,___4,___3,___2,___1 | __Stack] = __Stack0, + [begin + {'not_like', ___1, ___4, ___6} + end | __Stack]. + +-compile({inline,yeccpars2_54_/1}). +-dialyzer({nowarn_function, yeccpars2_54_/1}). +-compile({nowarn_unused_function, yeccpars2_54_/1}). +-file("rabbit_jms_selector_parser.yrl", 77). +yeccpars2_54_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + [___1] + end | __Stack]. + +-compile({inline,yeccpars2_55_/1}). +-dialyzer({nowarn_function, yeccpars2_55_/1}). +-compile({nowarn_unused_function, yeccpars2_55_/1}). +-file("rabbit_jms_selector_parser.yrl", 79). +yeccpars2_55_(__Stack0) -> + [___1 | __Stack] = __Stack0, + [begin + extract_value(___1) + end | __Stack]. + +-compile({inline,yeccpars2_57_/1}). +-dialyzer({nowarn_function, yeccpars2_57_/1}). +-compile({nowarn_unused_function, yeccpars2_57_/1}). +-file("rabbit_jms_selector_parser.yrl", 78). +yeccpars2_57_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + [___1|___3] + end | __Stack]. + +-compile({inline,yeccpars2_58_/1}). +-dialyzer({nowarn_function, yeccpars2_58_/1}). +-compile({nowarn_unused_function, yeccpars2_58_/1}). +-file("rabbit_jms_selector_parser.yrl", 76). +yeccpars2_58_(__Stack0) -> + [___6,___5,___4,___3,___2,___1 | __Stack] = __Stack0, + [begin + {'not_in', ___1, ___5} + end | __Stack]. + +-compile({inline,yeccpars2_61_/1}). +-dialyzer({nowarn_function, yeccpars2_61_/1}). +-compile({nowarn_unused_function, yeccpars2_61_/1}). +-file("rabbit_jms_selector_parser.yrl", 66). +yeccpars2_61_(__Stack0) -> + [___6,___5,___4,___3,___2,___1 | __Stack] = __Stack0, + [begin + {'not_between', ___1, ___4, ___6} + end | __Stack]. + +-compile({inline,yeccpars2_62_/1}). +-dialyzer({nowarn_function, yeccpars2_62_/1}). +-compile({nowarn_unused_function, yeccpars2_62_/1}). +-file("rabbit_jms_selector_parser.yrl", 69). +yeccpars2_62_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'like', ___1, ___3, no_escape} + end | __Stack]. + +-compile({inline,yeccpars2_64_/1}). +-dialyzer({nowarn_function, yeccpars2_64_/1}). +-compile({nowarn_unused_function, yeccpars2_64_/1}). +-file("rabbit_jms_selector_parser.yrl", 70). +yeccpars2_64_(__Stack0) -> + [___5,___4,___3,___2,___1 | __Stack] = __Stack0, + [begin + {'like', ___1, ___3, ___5} + end | __Stack]. + +-compile({inline,yeccpars2_67_/1}). +-dialyzer({nowarn_function, yeccpars2_67_/1}). +-compile({nowarn_unused_function, yeccpars2_67_/1}). +-file("rabbit_jms_selector_parser.yrl", 75). +yeccpars2_67_(__Stack0) -> + [___5,___4,___3,___2,___1 | __Stack] = __Stack0, + [begin + {'in', ___1, ___4} + end | __Stack]. + +-compile({inline,yeccpars2_70_/1}). +-dialyzer({nowarn_function, yeccpars2_70_/1}). +-compile({nowarn_unused_function, yeccpars2_70_/1}). +-file("rabbit_jms_selector_parser.yrl", 65). +yeccpars2_70_(__Stack0) -> + [___5,___4,___3,___2,___1 | __Stack] = __Stack0, + [begin + {'between', ___1, ___3, ___5} + end | __Stack]. + +-compile({inline,yeccpars2_71_/1}). +-dialyzer({nowarn_function, yeccpars2_71_/1}). +-compile({nowarn_unused_function, yeccpars2_71_/1}). +-file("rabbit_jms_selector_parser.yrl", 56). +yeccpars2_71_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'>=', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_72_/1}). +-dialyzer({nowarn_function, yeccpars2_72_/1}). +-compile({nowarn_unused_function, yeccpars2_72_/1}). +-file("rabbit_jms_selector_parser.yrl", 54). +yeccpars2_72_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'>', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_73_/1}). +-dialyzer({nowarn_function, yeccpars2_73_/1}). +-compile({nowarn_unused_function, yeccpars2_73_/1}). +-file("rabbit_jms_selector_parser.yrl", 52). +yeccpars2_73_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'=', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_74_/1}). +-dialyzer({nowarn_function, yeccpars2_74_/1}). +-compile({nowarn_unused_function, yeccpars2_74_/1}). +-file("rabbit_jms_selector_parser.yrl", 53). +yeccpars2_74_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'<>', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_75_/1}). +-dialyzer({nowarn_function, yeccpars2_75_/1}). +-compile({nowarn_unused_function, yeccpars2_75_/1}). +-file("rabbit_jms_selector_parser.yrl", 57). +yeccpars2_75_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'<=', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_76_/1}). +-dialyzer({nowarn_function, yeccpars2_76_/1}). +-compile({nowarn_unused_function, yeccpars2_76_/1}). +-file("rabbit_jms_selector_parser.yrl", 55). +yeccpars2_76_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'<', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_77_/1}). +-dialyzer({nowarn_function, yeccpars2_77_/1}). +-compile({nowarn_unused_function, yeccpars2_77_/1}). +-file("rabbit_jms_selector_parser.yrl", 87). +yeccpars2_77_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'-', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_80_/1}). +-dialyzer({nowarn_function, yeccpars2_80_/1}). +-compile({nowarn_unused_function, yeccpars2_80_/1}). +-file("rabbit_jms_selector_parser.yrl", 91). +yeccpars2_80_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'/', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_81_/1}). +-dialyzer({nowarn_function, yeccpars2_81_/1}). +-compile({nowarn_unused_function, yeccpars2_81_/1}). +-file("rabbit_jms_selector_parser.yrl", 90). +yeccpars2_81_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'*', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_82_/1}). +-dialyzer({nowarn_function, yeccpars2_82_/1}). +-compile({nowarn_unused_function, yeccpars2_82_/1}). +-file("rabbit_jms_selector_parser.yrl", 86). +yeccpars2_82_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'+', ___1, ___3} + end | __Stack]. + +-compile({inline,yeccpars2_85_/1}). +-dialyzer({nowarn_function, yeccpars2_85_/1}). +-compile({nowarn_unused_function, yeccpars2_85_/1}). +-file("rabbit_jms_selector_parser.yrl", 82). +yeccpars2_85_(__Stack0) -> + [___3,___2,___1 | __Stack] = __Stack0, + [begin + {'is_null', ___1} + end | __Stack]. + +-compile({inline,yeccpars2_86_/1}). +-dialyzer({nowarn_function, yeccpars2_86_/1}). +-compile({nowarn_unused_function, yeccpars2_86_/1}). +-file("rabbit_jms_selector_parser.yrl", 83). +yeccpars2_86_(__Stack0) -> + [___4,___3,___2,___1 | __Stack] = __Stack0, + [begin + {'is_not_null', ___1} + end | __Stack]. + + +-file("rabbit_jms_selector_parser.yrl", 120). diff --git a/deps/rabbit/src/rabbit_jms_selector_parser.yrl b/deps/rabbit/src/rabbit_jms_selector_parser.yrl new file mode 100644 index 0000000000..58de62d4e2 --- /dev/null +++ b/deps/rabbit/src/rabbit_jms_selector_parser.yrl @@ -0,0 +1,119 @@ +%%% This is the grammar file for JMS message selectors: +%%% https://jakarta.ee/specifications/messaging/3.1/jakarta-messaging-spec-3.1#message-selector +%%% +%%% To manually generate the parser file rabbit_jms_selector_parser.erl run: +%%% yecc:file("rabbit_jms_selector_parser.yrl", [deterministic]). + +Nonterminals + selector + conditional_expr + comparison_expr + logical_expr + additive_expr + multiplicative_expr + unary_expr + primary + literal + identifier_expr + string_list + string_item + between_expr + in_expr + like_expr + is_null_expr. + +Terminals + integer float boolean string identifier + '=' '<>' '>' '<' '>=' '<=' + '+' '-' '*' '/' + 'AND' 'OR' 'NOT' + 'BETWEEN' 'LIKE' 'IN' 'IS' 'NULL' 'ESCAPE' + '(' ')' ','. + +Rootsymbol selector. + +%% operator precedences (lowest to highest) +Left 100 'OR'. +Left 200 'AND'. +Nonassoc 300 '=' '<>' '>' '<' '>=' '<='. +Left 400 '+' '-'. +Left 500 '*' '/'. +Unary 600 'NOT'. + +%% "A selector is a conditional expression" +selector -> conditional_expr : '$1'. + +%% Conditional expressions +conditional_expr -> logical_expr : '$1'. + +%% Logical expressions +logical_expr -> logical_expr 'AND' logical_expr : {'and', '$1', '$3'}. +logical_expr -> logical_expr 'OR' logical_expr : {'or', '$1', '$3'}. +logical_expr -> 'NOT' logical_expr : {'not', '$2'}. +logical_expr -> comparison_expr : '$1'. + +%% Comparison expressions +comparison_expr -> additive_expr '=' additive_expr : {'=', '$1', '$3'}. +comparison_expr -> additive_expr '<>' additive_expr : {'<>', '$1', '$3'}. +comparison_expr -> additive_expr '>' additive_expr : {'>', '$1', '$3'}. +comparison_expr -> additive_expr '<' additive_expr : {'<', '$1', '$3'}. +comparison_expr -> additive_expr '>=' additive_expr : {'>=', '$1', '$3'}. +comparison_expr -> additive_expr '<=' additive_expr : {'<=', '$1', '$3'}. +comparison_expr -> between_expr : '$1'. +comparison_expr -> like_expr : '$1'. +comparison_expr -> in_expr : '$1'. +comparison_expr -> is_null_expr : '$1'. +comparison_expr -> additive_expr : '$1'. + +%% BETWEEN expression +between_expr -> additive_expr 'BETWEEN' additive_expr 'AND' additive_expr : {'between', '$1', '$3', '$5'}. +between_expr -> additive_expr 'NOT' 'BETWEEN' additive_expr 'AND' additive_expr : {'not_between', '$1', '$4', '$6'}. + +%% LIKE expression +like_expr -> additive_expr 'LIKE' additive_expr : {'like', '$1', '$3', no_escape}. +like_expr -> additive_expr 'LIKE' additive_expr 'ESCAPE' additive_expr : {'like', '$1', '$3', '$5'}. +like_expr -> additive_expr 'NOT' 'LIKE' additive_expr : {'not_like', '$1', '$4', no_escape}. +like_expr -> additive_expr 'NOT' 'LIKE' additive_expr 'ESCAPE' additive_expr : {'not_like', '$1', '$4', '$6'}. + +%% IN expression +in_expr -> additive_expr 'IN' '(' string_list ')' : {'in', '$1', '$4'}. +in_expr -> additive_expr 'NOT' 'IN' '(' string_list ')' : {'not_in', '$1', '$5'}. +string_list -> string_item : ['$1']. +string_list -> string_item ',' string_list : ['$1'|'$3']. +string_item -> string : extract_value('$1'). + +%% IS NULL expression +is_null_expr -> identifier_expr 'IS' 'NULL' : {'is_null', '$1'}. +is_null_expr -> identifier_expr 'IS' 'NOT' 'NULL' : {'is_not_null', '$1'}. + +%% Arithmetic expressions +additive_expr -> additive_expr '+' multiplicative_expr : {'+', '$1', '$3'}. +additive_expr -> additive_expr '-' multiplicative_expr : {'-', '$1', '$3'}. +additive_expr -> multiplicative_expr : '$1'. + +multiplicative_expr -> multiplicative_expr '*' unary_expr : {'*', '$1', '$3'}. +multiplicative_expr -> multiplicative_expr '/' unary_expr : {'/', '$1', '$3'}. +multiplicative_expr -> unary_expr : '$1'. + +%% Handle unary operators through grammar structure instead of precedence +unary_expr -> '+' primary : {unary_plus, '$2'}. +unary_expr -> '-' primary : {unary_minus, '$2'}. +unary_expr -> primary : '$1'. + +%% Primary expressions +primary -> '(' conditional_expr ')' : '$2'. +primary -> literal : '$1'. +primary -> identifier_expr : '$1'. + +%% Identifiers (header fields or property references) +identifier_expr -> identifier : {identifier, extract_value('$1')}. + +%% Literals +literal -> integer : {integer, extract_value('$1')}. +literal -> float : {float, extract_value('$1')}. +literal -> string : {string, extract_value('$1')}. +literal -> boolean : {boolean, extract_value('$1')}. + +Erlang code. + +extract_value({_Token, _Line, Value}) -> Value.