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