1-module(link_text_parser).
2-export([parse/1, parse_and_scan/1, format_error/1]).
3-file("src/link_text_parser.yrl", 43).
4
5concat_tuple({LT, LP}, {RT, RP}) -> {string:concat(LT, RT), string:concat(LP, RP)}.
6
7concat_3t(L, {MT, MP}, R) -> {string:join([L, MT, R], ""), string:join([ L, MP, R ], "")}.
8
9escaped_token({_Token, _Line, Value}) -> {Value, string:concat("\\", Value)}.
10
11extract_token({_Token, _Line, Value}) -> {Value, Value}.
12
13make_image_tuple({L, R}) -> {L, string:concat("!", R)}.
14
15title_tuple({Title, Parsed}) -> {Title, string:join(["[", Parsed, "]"], "")}.
16
17%% SPDX-License-Identifier: Apache-2.0
18
19-file("/usr/local/Cellar/erlang/20.1.5/lib/erlang/lib/parsetools-2.1.5/include/yeccpre.hrl", 0).
20%%
21%% %CopyrightBegin%
22%%
23%% Copyright Ericsson AB 1996-2017. All Rights Reserved.
24%%
25%% Licensed under the Apache License, Version 2.0 (the "License");
26%% you may not use this file except in compliance with the License.
27%% You may obtain a copy of the License at
28%%
29%%     http://www.apache.org/licenses/LICENSE-2.0
30%%
31%% Unless required by applicable law or agreed to in writing, software
32%% distributed under the License is distributed on an "AS IS" BASIS,
33%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
34%% See the License for the specific language governing permissions and
35%% limitations under the License.
36%%
37%% %CopyrightEnd%
38%%
39
40%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
41% The parser generator will insert appropriate declarations before this line.%
42
43-type yecc_ret() :: {'error', _} | {'ok', _}.
44
45-spec parse(Tokens :: list()) -> yecc_ret().
46parse(Tokens) ->
47    yeccpars0(Tokens, {no_func, no_line}, 0, [], []).
48
49-spec parse_and_scan({function() | {atom(), atom()}, [_]}
50                     | {atom(), atom(), [_]}) -> yecc_ret().
51parse_and_scan({F, A}) ->
52    yeccpars0([], {{F, A}, no_line}, 0, [], []);
53parse_and_scan({M, F, A}) ->
54    Arity = length(A),
55    yeccpars0([], {{fun M:F/Arity, A}, no_line}, 0, [], []).
56
57-spec format_error(any()) -> [char() | list()].
58format_error(Message) ->
59    case io_lib:deep_char_list(Message) of
60        true ->
61            Message;
62        _ ->
63            io_lib:write(Message)
64    end.
65
66%% To be used in grammar files to throw an error message to the parser
67%% toplevel. Doesn't have to be exported!
68-compile({nowarn_unused_function, return_error/2}).
69-spec return_error(integer(), any()) -> no_return().
70return_error(Line, Message) ->
71    throw({error, {Line, ?MODULE, Message}}).
72
73-define(CODE_VERSION, "1.4").
74
75yeccpars0(Tokens, Tzr, State, States, Vstack) ->
76    try yeccpars1(Tokens, Tzr, State, States, Vstack)
77    catch
78        error: Error ->
79            Stacktrace = erlang:get_stacktrace(),
80            try yecc_error_type(Error, Stacktrace) of
81                Desc ->
82                    erlang:raise(error, {yecc_bug, ?CODE_VERSION, Desc},
83                                 Stacktrace)
84            catch _:_ -> erlang:raise(error, Error, Stacktrace)
85            end;
86        %% Probably thrown from return_error/2:
87        throw: {error, {_Line, ?MODULE, _M}} = Error ->
88            Error
89    end.
90
91yecc_error_type(function_clause, [{?MODULE,F,ArityOrArgs,_} | _]) ->
92    case atom_to_list(F) of
93        "yeccgoto_" ++ SymbolL ->
94            {ok,[{atom,_,Symbol}],_} = erl_scan:string(SymbolL),
95            State = case ArityOrArgs of
96                        [S,_,_,_,_,_,_] -> S;
97                        _ -> state_is_unknown
98                    end,
99            {Symbol, State, missing_in_goto_table}
100    end.
101
102yeccpars1([Token | Tokens], Tzr, State, States, Vstack) ->
103    yeccpars2(State, element(1, Token), States, Vstack, Token, Tokens, Tzr);
104yeccpars1([], {{F, A},_Line}, State, States, Vstack) ->
105    case apply(F, A) of
106        {ok, Tokens, Endline} ->
107            yeccpars1(Tokens, {{F, A}, Endline}, State, States, Vstack);
108        {eof, Endline} ->
109            yeccpars1([], {no_func, Endline}, State, States, Vstack);
110        {error, Descriptor, _Endline} ->
111            {error, Descriptor}
112    end;
113yeccpars1([], {no_func, no_line}, State, States, Vstack) ->
114    Line = 999999,
115    yeccpars2(State, '$end', States, Vstack, yecc_end(Line), [],
116              {no_func, Line});
117yeccpars1([], {no_func, Endline}, State, States, Vstack) ->
118    yeccpars2(State, '$end', States, Vstack, yecc_end(Endline), [],
119              {no_func, Endline}).
120
121%% yeccpars1/7 is called from generated code.
122%%
123%% When using the {includefile, Includefile} option, make sure that
124%% yeccpars1/7 can be found by parsing the file without following
125%% include directives. yecc will otherwise assume that an old
126%% yeccpre.hrl is included (one which defines yeccpars1/5).
127yeccpars1(State1, State, States, Vstack, Token0, [Token | Tokens], Tzr) ->
128    yeccpars2(State, element(1, Token), [State1 | States],
129              [Token0 | Vstack], Token, Tokens, Tzr);
130yeccpars1(State1, State, States, Vstack, Token0, [], {{_F,_A}, _Line}=Tzr) ->
131    yeccpars1([], Tzr, State, [State1 | States], [Token0 | Vstack]);
132yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, no_line}) ->
133    Line = yecctoken_end_location(Token0),
134    yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack],
135              yecc_end(Line), [], {no_func, Line});
136yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, Line}) ->
137    yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack],
138              yecc_end(Line), [], {no_func, Line}).
139
140%% For internal use only.
141yecc_end({Line,_Column}) ->
142    {'$end', Line};
143yecc_end(Line) ->
144    {'$end', Line}.
145
146yecctoken_end_location(Token) ->
147    try erl_anno:end_location(element(2, Token)) of
148        undefined -> yecctoken_location(Token);
149        Loc -> Loc
150    catch _:_ -> yecctoken_location(Token)
151    end.
152
153-compile({nowarn_unused_function, yeccerror/1}).
154yeccerror(Token) ->
155    Text = yecctoken_to_string(Token),
156    Location = yecctoken_location(Token),
157    {error, {Location, ?MODULE, ["syntax error before: ", Text]}}.
158
159-compile({nowarn_unused_function, yecctoken_to_string/1}).
160yecctoken_to_string(Token) ->
161    try erl_scan:text(Token) of
162        undefined -> yecctoken2string(Token);
163        Txt -> Txt
164    catch _:_ -> yecctoken2string(Token)
165    end.
166
167yecctoken_location(Token) ->
168    try erl_scan:location(Token)
169    catch _:_ -> element(2, Token)
170    end.
171
172-compile({nowarn_unused_function, yecctoken2string/1}).
173yecctoken2string({atom, _, A}) -> io_lib:write_atom(A);
174yecctoken2string({integer,_,N}) -> io_lib:write(N);
175yecctoken2string({float,_,F}) -> io_lib:write(F);
176yecctoken2string({char,_,C}) -> io_lib:write_char(C);
177yecctoken2string({var,_,V}) -> io_lib:format("~s", [V]);
178yecctoken2string({string,_,S}) -> io_lib:write_string(S);
179yecctoken2string({reserved_symbol, _, A}) -> io_lib:write(A);
180yecctoken2string({_Cat, _, Val}) -> io_lib:format("~tp", [Val]);
181yecctoken2string({dot, _}) -> "'.'";
182yecctoken2string({'$end', _}) -> [];
183yecctoken2string({Other, _}) when is_atom(Other) ->
184    io_lib:write_atom(Other);
185yecctoken2string(Other) ->
186    io_lib:format("~tp", [Other]).
187
188%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
189
190
191
192-file("src/link_text_parser.erl", 192).
193
194-dialyzer({nowarn_function, yeccpars2/7}).
195yeccpars2(0=S, Cat, Ss, Stack, T, Ts, Tzr) ->
196 yeccpars2_0(S, Cat, Ss, Stack, T, Ts, Tzr);
197%% yeccpars2(1=S, Cat, Ss, Stack, T, Ts, Tzr) ->
198%%  yeccpars2_1(S, Cat, Ss, Stack, T, Ts, Tzr);
199%% yeccpars2(2=S, Cat, Ss, Stack, T, Ts, Tzr) ->
200%%  yeccpars2_2(S, Cat, Ss, Stack, T, Ts, Tzr);
201yeccpars2(3=S, Cat, Ss, Stack, T, Ts, Tzr) ->
202 yeccpars2_3(S, Cat, Ss, Stack, T, Ts, Tzr);
203yeccpars2(4=S, Cat, Ss, Stack, T, Ts, Tzr) ->
204 yeccpars2_4(S, Cat, Ss, Stack, T, Ts, Tzr);
205%% yeccpars2(5=S, Cat, Ss, Stack, T, Ts, Tzr) ->
206%%  yeccpars2_5(S, Cat, Ss, Stack, T, Ts, Tzr);
207%% yeccpars2(6=S, Cat, Ss, Stack, T, Ts, Tzr) ->
208%%  yeccpars2_6(S, Cat, Ss, Stack, T, Ts, Tzr);
209yeccpars2(7=S, Cat, Ss, Stack, T, Ts, Tzr) ->
210 yeccpars2_7(S, Cat, Ss, Stack, T, Ts, Tzr);
211yeccpars2(8=S, Cat, Ss, Stack, T, Ts, Tzr) ->
212 yeccpars2_8(S, Cat, Ss, Stack, T, Ts, Tzr);
213yeccpars2(9=S, Cat, Ss, Stack, T, Ts, Tzr) ->
214 yeccpars2_9(S, Cat, Ss, Stack, T, Ts, Tzr);
215yeccpars2(10=S, Cat, Ss, Stack, T, Ts, Tzr) ->
216 yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr);
217yeccpars2(11=S, Cat, Ss, Stack, T, Ts, Tzr) ->
218 yeccpars2_11(S, Cat, Ss, Stack, T, Ts, Tzr);
219yeccpars2(12=S, Cat, Ss, Stack, T, Ts, Tzr) ->
220 yeccpars2_12(S, Cat, Ss, Stack, T, Ts, Tzr);
221yeccpars2(13=S, Cat, Ss, Stack, T, Ts, Tzr) ->
222 yeccpars2_13(S, Cat, Ss, Stack, T, Ts, Tzr);
223yeccpars2(14=S, Cat, Ss, Stack, T, Ts, Tzr) ->
224 yeccpars2_14(S, Cat, Ss, Stack, T, Ts, Tzr);
225yeccpars2(15=S, Cat, Ss, Stack, T, Ts, Tzr) ->
226 yeccpars2_15(S, Cat, Ss, Stack, T, Ts, Tzr);
227%% yeccpars2(16=S, Cat, Ss, Stack, T, Ts, Tzr) ->
228%%  yeccpars2_16(S, Cat, Ss, Stack, T, Ts, Tzr);
229yeccpars2(17=S, Cat, Ss, Stack, T, Ts, Tzr) ->
230 yeccpars2_17(S, Cat, Ss, Stack, T, Ts, Tzr);
231yeccpars2(18=S, Cat, Ss, Stack, T, Ts, Tzr) ->
232 yeccpars2_18(S, Cat, Ss, Stack, T, Ts, Tzr);
233%% yeccpars2(19=S, Cat, Ss, Stack, T, Ts, Tzr) ->
234%%  yeccpars2_19(S, Cat, Ss, Stack, T, Ts, Tzr);
235%% yeccpars2(20=S, Cat, Ss, Stack, T, Ts, Tzr) ->
236%%  yeccpars2_20(S, Cat, Ss, Stack, T, Ts, Tzr);
237yeccpars2(21=S, Cat, Ss, Stack, T, Ts, Tzr) ->
238 yeccpars2_21(S, Cat, Ss, Stack, T, Ts, Tzr);
239yeccpars2(22=S, Cat, Ss, Stack, T, Ts, Tzr) ->
240 yeccpars2_22(S, Cat, Ss, Stack, T, Ts, Tzr);
241yeccpars2(23=S, Cat, Ss, Stack, T, Ts, Tzr) ->
242 yeccpars2_23(S, Cat, Ss, Stack, T, Ts, Tzr);
243yeccpars2(24=S, Cat, Ss, Stack, T, Ts, Tzr) ->
244 yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr);
245yeccpars2(25=S, Cat, Ss, Stack, T, Ts, Tzr) ->
246 yeccpars2_25(S, Cat, Ss, Stack, T, Ts, Tzr);
247yeccpars2(26=S, Cat, Ss, Stack, T, Ts, Tzr) ->
248 yeccpars2_26(S, Cat, Ss, Stack, T, Ts, Tzr);
249yeccpars2(27=S, Cat, Ss, Stack, T, Ts, Tzr) ->
250 yeccpars2_27(S, Cat, Ss, Stack, T, Ts, Tzr);
251yeccpars2(28=S, Cat, Ss, Stack, T, Ts, Tzr) ->
252 yeccpars2_28(S, Cat, Ss, Stack, T, Ts, Tzr);
253yeccpars2(29=S, Cat, Ss, Stack, T, Ts, Tzr) ->
254 yeccpars2_29(S, Cat, Ss, Stack, T, Ts, Tzr);
255%% yeccpars2(30=S, Cat, Ss, Stack, T, Ts, Tzr) ->
256%%  yeccpars2_30(S, Cat, Ss, Stack, T, Ts, Tzr);
257yeccpars2(31=S, Cat, Ss, Stack, T, Ts, Tzr) ->
258 yeccpars2_31(S, Cat, Ss, Stack, T, Ts, Tzr);
259%% yeccpars2(32=S, Cat, Ss, Stack, T, Ts, Tzr) ->
260%%  yeccpars2_32(S, Cat, Ss, Stack, T, Ts, Tzr);
261%% yeccpars2(33=S, Cat, Ss, Stack, T, Ts, Tzr) ->
262%%  yeccpars2_33(S, Cat, Ss, Stack, T, Ts, Tzr);
263%% yeccpars2(34=S, Cat, Ss, Stack, T, Ts, Tzr) ->
264%%  yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr);
265yeccpars2(Other, _, _, _, _, _, _) ->
266 erlang:error({yecc_bug,"1.4",{missing_state_in_action_table, Other}}).
267
268-dialyzer({nowarn_function, yeccpars2_0/7}).
269yeccpars2_0(S, exclamation_mark, Ss, Stack, T, Ts, Tzr) ->
270 yeccpars1(S, 3, Ss, Stack, T, Ts, Tzr);
271yeccpars2_0(S, open_bracket, Ss, Stack, T, Ts, Tzr) ->
272 yeccpars1(S, 4, Ss, Stack, T, Ts, Tzr);
273yeccpars2_0(_, _, _, _, T, _, _) ->
274 yeccerror(T).
275
276-dialyzer({nowarn_function, yeccpars2_1/7}).
277yeccpars2_1(_S, '$end', _Ss, Stack, _T, _Ts, _Tzr) ->
278 {ok, hd(Stack)};
279yeccpars2_1(_, _, _, _, T, _, _) ->
280 yeccerror(T).
281
282yeccpars2_2(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
283 yeccgoto_link_or_image(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr).
284
285-dialyzer({nowarn_function, yeccpars2_3/7}).
286yeccpars2_3(S, open_bracket, Ss, Stack, T, Ts, Tzr) ->
287 yeccpars1(S, 4, Ss, Stack, T, Ts, Tzr);
288yeccpars2_3(_, _, _, _, T, _, _) ->
289 yeccerror(T).
290
291yeccpars2_4(S, close_bracket, Ss, Stack, T, Ts, Tzr) ->
292 yeccpars1(S, 8, Ss, Stack, T, Ts, Tzr);
293yeccpars2_4(S, Cat, Ss, Stack, T, Ts, Tzr) ->
294 yeccpars2_cont_4(S, Cat, Ss, Stack, T, Ts, Tzr).
295
296-dialyzer({nowarn_function, yeccpars2_4/7}).
297yeccpars2_cont_4(S, any_quote, Ss, Stack, T, Ts, Tzr) ->
298 yeccpars1(S, 7, Ss, Stack, T, Ts, Tzr);
299yeccpars2_cont_4(S, close_paren, Ss, Stack, T, Ts, Tzr) ->
300 yeccpars1(S, 9, Ss, Stack, T, Ts, Tzr);
301yeccpars2_cont_4(S, escaped, Ss, Stack, T, Ts, Tzr) ->
302 yeccpars1(S, 10, Ss, Stack, T, Ts, Tzr);
303yeccpars2_cont_4(S, exclamation_mark, Ss, Stack, T, Ts, Tzr) ->
304 yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr);
305yeccpars2_cont_4(S, open_bracket, Ss, Stack, T, Ts, Tzr) ->
306 yeccpars1(S, 12, Ss, Stack, T, Ts, Tzr);
307yeccpars2_cont_4(S, open_paren, Ss, Stack, T, Ts, Tzr) ->
308 yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr);
309yeccpars2_cont_4(S, open_title, Ss, Stack, T, Ts, Tzr) ->
310 yeccpars1(S, 14, Ss, Stack, T, Ts, Tzr);
311yeccpars2_cont_4(S, verbatim, Ss, Stack, T, Ts, Tzr) ->
312 yeccpars1(S, 15, Ss, Stack, T, Ts, Tzr);
313yeccpars2_cont_4(_, _, _, _, T, _, _) ->
314 yeccerror(T).
315
316yeccpars2_5(S, any_quote, Ss, Stack, T, Ts, Tzr) ->
317 yeccpars1(S, 7, Ss, Stack, T, Ts, Tzr);
318yeccpars2_5(S, close_paren, Ss, Stack, T, Ts, Tzr) ->
319 yeccpars1(S, 9, Ss, Stack, T, Ts, Tzr);
320yeccpars2_5(S, escaped, Ss, Stack, T, Ts, Tzr) ->
321 yeccpars1(S, 10, Ss, Stack, T, Ts, Tzr);
322yeccpars2_5(S, exclamation_mark, Ss, Stack, T, Ts, Tzr) ->
323 yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr);
324yeccpars2_5(S, open_bracket, Ss, Stack, T, Ts, Tzr) ->
325 yeccpars1(S, 12, Ss, Stack, T, Ts, Tzr);
326yeccpars2_5(S, open_paren, Ss, Stack, T, Ts, Tzr) ->
327 yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr);
328yeccpars2_5(S, open_title, Ss, Stack, T, Ts, Tzr) ->
329 yeccpars1(S, 14, Ss, Stack, T, Ts, Tzr);
330yeccpars2_5(S, verbatim, Ss, Stack, T, Ts, Tzr) ->
331 yeccpars1(S, 15, Ss, Stack, T, Ts, Tzr);
332yeccpars2_5(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
333 yeccgoto_inside_brackets(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr).
334
335-dialyzer({nowarn_function, yeccpars2_6/7}).
336yeccpars2_6(S, close_bracket, Ss, Stack, T, Ts, Tzr) ->
337 yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr);
338yeccpars2_6(_, _, _, _, T, _, _) ->
339 yeccerror(T).
340
341yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
342 NewStack = yeccpars2_7_(Stack),
343 yeccgoto_inside_brackets_part(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
344
345yeccpars2_8(S, any_quote, Ss, Stack, T, Ts, Tzr) ->
346 yeccpars1(S, 21, Ss, Stack, T, Ts, Tzr);
347yeccpars2_8(S, close_bracket, Ss, Stack, T, Ts, Tzr) ->
348 yeccpars1(S, 22, Ss, Stack, T, Ts, Tzr);
349yeccpars2_8(S, close_paren, Ss, Stack, T, Ts, Tzr) ->
350 yeccpars1(S, 23, Ss, Stack, T, Ts, Tzr);
351yeccpars2_8(S, escaped, Ss, Stack, T, Ts, Tzr) ->
352 yeccpars1(S, 24, Ss, Stack, T, Ts, Tzr);
353yeccpars2_8(S, exclamation_mark, Ss, Stack, T, Ts, Tzr) ->
354 yeccpars1(S, 25, Ss, Stack, T, Ts, Tzr);
355yeccpars2_8(S, open_bracket, Ss, Stack, T, Ts, Tzr) ->
356 yeccpars1(S, 26, Ss, Stack, T, Ts, Tzr);
357yeccpars2_8(S, open_paren, Ss, Stack, T, Ts, Tzr) ->
358 yeccpars1(S, 27, Ss, Stack, T, Ts, Tzr);
359yeccpars2_8(S, open_title, Ss, Stack, T, Ts, Tzr) ->
360 yeccpars1(S, 28, Ss, Stack, T, Ts, Tzr);
361yeccpars2_8(S, verbatim, Ss, Stack, T, Ts, Tzr) ->
362 yeccpars1(S, 29, Ss, Stack, T, Ts, Tzr);
363yeccpars2_8(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
364 [_|Nss] = Ss,
365 NewStack = yeccpars2_8_(Stack),
366 yeccgoto_link(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr).
367
368yeccpars2_9(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
369 NewStack = yeccpars2_9_(Stack),
370 yeccgoto_inside_brackets_part(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
371
372yeccpars2_10(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
373 NewStack = yeccpars2_10_(Stack),
374 yeccgoto_inside_brackets_part(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
375
376yeccpars2_11(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
377 NewStack = yeccpars2_11_(Stack),
378 yeccgoto_inside_brackets_part(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
379
380yeccpars2_12(S, close_bracket, Ss, Stack, T, Ts, Tzr) ->
381 yeccpars1(S, 17, Ss, Stack, T, Ts, Tzr);
382yeccpars2_12(S, Cat, Ss, Stack, T, Ts, Tzr) ->
383 yeccpars2_cont_4(S, Cat, Ss, Stack, T, Ts, Tzr).
384
385yeccpars2_13(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
386 NewStack = yeccpars2_13_(Stack),
387 yeccgoto_inside_brackets_part(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
388
389yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
390 NewStack = yeccpars2_14_(Stack),
391 yeccgoto_inside_brackets_part(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
392
393yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
394 NewStack = yeccpars2_15_(Stack),
395 yeccgoto_inside_brackets_part(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
396
397-dialyzer({nowarn_function, yeccpars2_16/7}).
398yeccpars2_16(S, close_bracket, Ss, Stack, T, Ts, Tzr) ->
399 yeccpars1(S, 18, Ss, Stack, T, Ts, Tzr);
400yeccpars2_16(_, _, _, _, T, _, _) ->
401 yeccerror(T).
402
403yeccpars2_17(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
404 [_|Nss] = Ss,
405 NewStack = yeccpars2_17_(Stack),
406 yeccgoto_inside_brackets_part(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr).
407
408yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
409 [_,_|Nss] = Ss,
410 NewStack = yeccpars2_18_(Stack),
411 yeccgoto_inside_brackets_part(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr).
412
413yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
414 [_,_|Nss] = Ss,
415 NewStack = yeccpars2_19_(Stack),
416 yeccgoto_link(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr).
417
418yeccpars2_20(S, any_quote, Ss, Stack, T, Ts, Tzr) ->
419 yeccpars1(S, 21, Ss, Stack, T, Ts, Tzr);
420yeccpars2_20(S, close_bracket, Ss, Stack, T, Ts, Tzr) ->
421 yeccpars1(S, 22, Ss, Stack, T, Ts, Tzr);
422yeccpars2_20(S, close_paren, Ss, Stack, T, Ts, Tzr) ->
423 yeccpars1(S, 23, Ss, Stack, T, Ts, Tzr);
424yeccpars2_20(S, escaped, Ss, Stack, T, Ts, Tzr) ->
425 yeccpars1(S, 24, Ss, Stack, T, Ts, Tzr);
426yeccpars2_20(S, exclamation_mark, Ss, Stack, T, Ts, Tzr) ->
427 yeccpars1(S, 25, Ss, Stack, T, Ts, Tzr);
428yeccpars2_20(S, open_bracket, Ss, Stack, T, Ts, Tzr) ->
429 yeccpars1(S, 26, Ss, Stack, T, Ts, Tzr);
430yeccpars2_20(S, open_paren, Ss, Stack, T, Ts, Tzr) ->
431 yeccpars1(S, 27, Ss, Stack, T, Ts, Tzr);
432yeccpars2_20(S, open_title, Ss, Stack, T, Ts, Tzr) ->
433 yeccpars1(S, 28, Ss, Stack, T, Ts, Tzr);
434yeccpars2_20(S, verbatim, Ss, Stack, T, Ts, Tzr) ->
435 yeccpars1(S, 29, Ss, Stack, T, Ts, Tzr);
436yeccpars2_20(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
437 NewStack = yeccpars2_20_(Stack),
438 yeccgoto_rest(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
439
440yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
441 NewStack = yeccpars2_21_(Stack),
442 yeccgoto_anything(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
443
444yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
445 NewStack = yeccpars2_22_(Stack),
446 yeccgoto_anything(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
447
448yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
449 NewStack = yeccpars2_23_(Stack),
450 yeccgoto_anything(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
451
452yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
453 NewStack = yeccpars2_24_(Stack),
454 yeccgoto_anything(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
455
456yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
457 NewStack = yeccpars2_25_(Stack),
458 yeccgoto_anything(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
459
460yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
461 NewStack = yeccpars2_26_(Stack),
462 yeccgoto_anything(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
463
464yeccpars2_27(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
465 NewStack = yeccpars2_27_(Stack),
466 yeccgoto_anything(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
467
468yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
469 NewStack = yeccpars2_28_(Stack),
470 yeccgoto_anything(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
471
472yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
473 NewStack = yeccpars2_29_(Stack),
474 yeccgoto_anything(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr).
475
476yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
477 [_|Nss] = Ss,
478 NewStack = yeccpars2_30_(Stack),
479 yeccgoto_rest(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr).
480
481yeccpars2_31(S, any_quote, Ss, Stack, T, Ts, Tzr) ->
482 yeccpars1(S, 21, Ss, Stack, T, Ts, Tzr);
483yeccpars2_31(S, close_bracket, Ss, Stack, T, Ts, Tzr) ->
484 yeccpars1(S, 22, Ss, Stack, T, Ts, Tzr);
485yeccpars2_31(S, close_paren, Ss, Stack, T, Ts, Tzr) ->
486 yeccpars1(S, 23, Ss, Stack, T, Ts, Tzr);
487yeccpars2_31(S, escaped, Ss, Stack, T, Ts, Tzr) ->
488 yeccpars1(S, 24, Ss, Stack, T, Ts, Tzr);
489yeccpars2_31(S, exclamation_mark, Ss, Stack, T, Ts, Tzr) ->
490 yeccpars1(S, 25, Ss, Stack, T, Ts, Tzr);
491yeccpars2_31(S, open_bracket, Ss, Stack, T, Ts, Tzr) ->
492 yeccpars1(S, 26, Ss, Stack, T, Ts, Tzr);
493yeccpars2_31(S, open_paren, Ss, Stack, T, Ts, Tzr) ->
494 yeccpars1(S, 27, Ss, Stack, T, Ts, Tzr);
495yeccpars2_31(S, open_title, Ss, Stack, T, Ts, Tzr) ->
496 yeccpars1(S, 28, Ss, Stack, T, Ts, Tzr);
497yeccpars2_31(S, verbatim, Ss, Stack, T, Ts, Tzr) ->
498 yeccpars1(S, 29, Ss, Stack, T, Ts, Tzr);
499yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
500 [_,_|Nss] = Ss,
501 NewStack = yeccpars2_31_(Stack),
502 yeccgoto_link(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr).
503
504yeccpars2_32(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
505 [_,_,_|Nss] = Ss,
506 NewStack = yeccpars2_32_(Stack),
507 yeccgoto_link(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr).
508
509yeccpars2_33(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
510 [_|Nss] = Ss,
511 NewStack = yeccpars2_33_(Stack),
512 yeccgoto_inside_brackets(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr).
513
514yeccpars2_34(_S, Cat, Ss, Stack, T, Ts, Tzr) ->
515 [_|Nss] = Ss,
516 NewStack = yeccpars2_34_(Stack),
517 yeccgoto_link_or_image(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr).
518
519-dialyzer({nowarn_function, yeccgoto_anything/7}).
520yeccgoto_anything(8, Cat, Ss, Stack, T, Ts, Tzr) ->
521 yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr);
522yeccgoto_anything(20, Cat, Ss, Stack, T, Ts, Tzr) ->
523 yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr);
524yeccgoto_anything(31, Cat, Ss, Stack, T, Ts, Tzr) ->
525 yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr).
526
527-dialyzer({nowarn_function, yeccgoto_inside_brackets/7}).
528yeccgoto_inside_brackets(4, Cat, Ss, Stack, T, Ts, Tzr) ->
529 yeccpars2_6(6, Cat, Ss, Stack, T, Ts, Tzr);
530yeccgoto_inside_brackets(5=_S, Cat, Ss, Stack, T, Ts, Tzr) ->
531 yeccpars2_33(_S, Cat, Ss, Stack, T, Ts, Tzr);
532yeccgoto_inside_brackets(12, Cat, Ss, Stack, T, Ts, Tzr) ->
533 yeccpars2_16(16, Cat, Ss, Stack, T, Ts, Tzr).
534
535-dialyzer({nowarn_function, yeccgoto_inside_brackets_part/7}).
536yeccgoto_inside_brackets_part(4, Cat, Ss, Stack, T, Ts, Tzr) ->
537 yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr);
538yeccgoto_inside_brackets_part(5, Cat, Ss, Stack, T, Ts, Tzr) ->
539 yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr);
540yeccgoto_inside_brackets_part(12, Cat, Ss, Stack, T, Ts, Tzr) ->
541 yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr).
542
543-dialyzer({nowarn_function, yeccgoto_link/7}).
544yeccgoto_link(0=_S, Cat, Ss, Stack, T, Ts, Tzr) ->
545 yeccpars2_2(_S, Cat, Ss, Stack, T, Ts, Tzr);
546yeccgoto_link(3=_S, Cat, Ss, Stack, T, Ts, Tzr) ->
547 yeccpars2_34(_S, Cat, Ss, Stack, T, Ts, Tzr).
548
549-dialyzer({nowarn_function, yeccgoto_link_or_image/7}).
550yeccgoto_link_or_image(0, Cat, Ss, Stack, T, Ts, Tzr) ->
551 yeccpars2_1(1, Cat, Ss, Stack, T, Ts, Tzr).
552
553-dialyzer({nowarn_function, yeccgoto_rest/7}).
554yeccgoto_rest(8=_S, Cat, Ss, Stack, T, Ts, Tzr) ->
555 yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr);
556yeccgoto_rest(20=_S, Cat, Ss, Stack, T, Ts, Tzr) ->
557 yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr);
558yeccgoto_rest(31=_S, Cat, Ss, Stack, T, Ts, Tzr) ->
559 yeccpars2_32(_S, Cat, Ss, Stack, T, Ts, Tzr).
560
561-compile({inline,yeccpars2_7_/1}).
562-file("src/link_text_parser.yrl", 21).
563yeccpars2_7_(__Stack0) ->
564 [__1 | __Stack] = __Stack0,
565 [begin
566   extract_token ( __1 )
567  end | __Stack].
568
569-compile({inline,yeccpars2_8_/1}).
570-file("src/link_text_parser.yrl", 8).
571yeccpars2_8_(__Stack0) ->
572 [__2,__1 | __Stack] = __Stack0,
573 [begin
574   { "" , "[]" }
575  end | __Stack].
576
577-compile({inline,yeccpars2_9_/1}).
578-file("src/link_text_parser.yrl", 20).
579yeccpars2_9_(__Stack0) ->
580 [__1 | __Stack] = __Stack0,
581 [begin
582   { ")" , ")" }
583  end | __Stack].
584
585-compile({inline,yeccpars2_10_/1}).
586-file("src/link_text_parser.yrl", 22).
587yeccpars2_10_(__Stack0) ->
588 [__1 | __Stack] = __Stack0,
589 [begin
590   escaped_token ( __1 )
591  end | __Stack].
592
593-compile({inline,yeccpars2_11_/1}).
594-file("src/link_text_parser.yrl", 16).
595yeccpars2_11_(__Stack0) ->
596 [__1 | __Stack] = __Stack0,
597 [begin
598   extract_token ( __1 )
599  end | __Stack].
600
601-compile({inline,yeccpars2_13_/1}).
602-file("src/link_text_parser.yrl", 19).
603yeccpars2_13_(__Stack0) ->
604 [__1 | __Stack] = __Stack0,
605 [begin
606   { "(" , "(" }
607  end | __Stack].
608
609-compile({inline,yeccpars2_14_/1}).
610-file("src/link_text_parser.yrl", 18).
611yeccpars2_14_(__Stack0) ->
612 [__1 | __Stack] = __Stack0,
613 [begin
614   extract_token ( __1 )
615  end | __Stack].
616
617-compile({inline,yeccpars2_15_/1}).
618-file("src/link_text_parser.yrl", 17).
619yeccpars2_15_(__Stack0) ->
620 [__1 | __Stack] = __Stack0,
621 [begin
622   extract_token ( __1 )
623  end | __Stack].
624
625-compile({inline,yeccpars2_17_/1}).
626-file("src/link_text_parser.yrl", 23).
627yeccpars2_17_(__Stack0) ->
628 [__2,__1 | __Stack] = __Stack0,
629 [begin
630   { "[]" , "[]" }
631  end | __Stack].
632
633-compile({inline,yeccpars2_18_/1}).
634-file("src/link_text_parser.yrl", 24).
635yeccpars2_18_(__Stack0) ->
636 [__3,__2,__1 | __Stack] = __Stack0,
637 [begin
638   concat_3t ( "[" , __2 , "]" )
639  end | __Stack].
640
641-compile({inline,yeccpars2_19_/1}).
642-file("src/link_text_parser.yrl", 9).
643yeccpars2_19_(__Stack0) ->
644 [__3,__2,__1 | __Stack] = __Stack0,
645 [begin
646   { "" , "[]" }
647  end | __Stack].
648
649-compile({inline,yeccpars2_20_/1}).
650-file("src/link_text_parser.yrl", 0).
651yeccpars2_20_(__Stack0) ->
652 [__1 | __Stack] = __Stack0,
653 [begin
654   '$undefined'
655  end | __Stack].
656
657-compile({inline,yeccpars2_21_/1}).
658-file("src/link_text_parser.yrl", 0).
659yeccpars2_21_(__Stack0) ->
660 [__1 | __Stack] = __Stack0,
661 [begin
662   '$undefined'
663  end | __Stack].
664
665-compile({inline,yeccpars2_22_/1}).
666-file("src/link_text_parser.yrl", 0).
667yeccpars2_22_(__Stack0) ->
668 [__1 | __Stack] = __Stack0,
669 [begin
670   '$undefined'
671  end | __Stack].
672
673-compile({inline,yeccpars2_23_/1}).
674-file("src/link_text_parser.yrl", 0).
675yeccpars2_23_(__Stack0) ->
676 [__1 | __Stack] = __Stack0,
677 [begin
678   '$undefined'
679  end | __Stack].
680
681-compile({inline,yeccpars2_24_/1}).
682-file("src/link_text_parser.yrl", 0).
683yeccpars2_24_(__Stack0) ->
684 [__1 | __Stack] = __Stack0,
685 [begin
686   '$undefined'
687  end | __Stack].
688
689-compile({inline,yeccpars2_25_/1}).
690-file("src/link_text_parser.yrl", 0).
691yeccpars2_25_(__Stack0) ->
692 [__1 | __Stack] = __Stack0,
693 [begin
694   '$undefined'
695  end | __Stack].
696
697-compile({inline,yeccpars2_26_/1}).
698-file("src/link_text_parser.yrl", 0).
699yeccpars2_26_(__Stack0) ->
700 [__1 | __Stack] = __Stack0,
701 [begin
702   '$undefined'
703  end | __Stack].
704
705-compile({inline,yeccpars2_27_/1}).
706-file("src/link_text_parser.yrl", 0).
707yeccpars2_27_(__Stack0) ->
708 [__1 | __Stack] = __Stack0,
709 [begin
710   '$undefined'
711  end | __Stack].
712
713-compile({inline,yeccpars2_28_/1}).
714-file("src/link_text_parser.yrl", 0).
715yeccpars2_28_(__Stack0) ->
716 [__1 | __Stack] = __Stack0,
717 [begin
718   '$undefined'
719  end | __Stack].
720
721-compile({inline,yeccpars2_29_/1}).
722-file("src/link_text_parser.yrl", 0).
723yeccpars2_29_(__Stack0) ->
724 [__1 | __Stack] = __Stack0,
725 [begin
726   '$undefined'
727  end | __Stack].
728
729-compile({inline,yeccpars2_30_/1}).
730-file("src/link_text_parser.yrl", 0).
731yeccpars2_30_(__Stack0) ->
732 [__2,__1 | __Stack] = __Stack0,
733 [begin
734   '$undefined'
735  end | __Stack].
736
737-compile({inline,yeccpars2_31_/1}).
738-file("src/link_text_parser.yrl", 10).
739yeccpars2_31_(__Stack0) ->
740 [__3,__2,__1 | __Stack] = __Stack0,
741 [begin
742   title_tuple ( __2 )
743  end | __Stack].
744
745-compile({inline,yeccpars2_32_/1}).
746-file("src/link_text_parser.yrl", 11).
747yeccpars2_32_(__Stack0) ->
748 [__4,__3,__2,__1 | __Stack] = __Stack0,
749 [begin
750   title_tuple ( __2 )
751  end | __Stack].
752
753-compile({inline,yeccpars2_33_/1}).
754-file("src/link_text_parser.yrl", 14).
755yeccpars2_33_(__Stack0) ->
756 [__2,__1 | __Stack] = __Stack0,
757 [begin
758   concat_tuple ( __1 , __2 )
759  end | __Stack].
760
761-compile({inline,yeccpars2_34_/1}).
762-file("src/link_text_parser.yrl", 5).
763yeccpars2_34_(__Stack0) ->
764 [__2,__1 | __Stack] = __Stack0,
765 [begin
766   make_image_tuple ( __2 )
767  end | __Stack].
768
769
770-file("src/link_text_parser.yrl", 58).
771