diff options
235 files changed, 5373 insertions, 18237 deletions
diff --git a/.gitignore b/.gitignore index 592ac6668b..8ff94964d1 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,12 @@ autom4te.cache !/erts/preloaded/ebin/*.beam !/lib/*/test/*_SUITE_data/*.beam +# +# Generated source code files. +# +/bootstrap/lib/compiler/egen +/bootstrap/lib/stdlib/egen + # Compiler derivatives # # Do not use too creative wildcards. @@ -98,12 +104,12 @@ make/win32/ /bootstrap/bin/* /bootstrap/target -!/bootstrap/bin/*.script !/bootstrap/bin/*.boot /bootstrap/lib/asn1 /bootstrap/lib/hipe /bootstrap/lib/ic +/bootstrap/lib/orber /bootstrap/lib/parsetools /bootstrap/lib/sasl /bootstrap/lib/snmp diff --git a/INSTALL.md b/INSTALL.md index f0fdaf3982..24053b4793 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -27,7 +27,7 @@ on Unix. For detailed instructions on how to Binary releases for Windows can be found at <http://www.erlang.org/download.html>. -Before reading the above mensioned documents you are in any case advised to +Before reading the above mentioned documents you are in any case advised to read this document first, since it covers building Erlang/OTP in general as well as other important information. diff --git a/Makefile.in b/Makefile.in index 5acd390333..d758b47860 100644 --- a/Makefile.in +++ b/Makefile.in @@ -349,8 +349,7 @@ endif all_bootstraps: emulator \ bootstrap_setup \ secondary_bootstrap_build secondary_bootstrap_copy \ - tertiary_bootstrap_build tertiary_bootstrap_copy \ - fourth_bootstrap_build fourth_bootstrap_copy + tertiary_bootstrap_build tertiary_bootstrap_copy # # Use these targets when you want to use the erl and erlc @@ -563,6 +562,8 @@ secondary_bootstrap_copy: if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/include ; fi + if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/orber ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/orber ; fi + if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/orber/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/orber/include ; fi for x in lib/parsetools/ebin/*.beam; do \ BN=`basename $$x`; \ TF=$(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin/$$BN; \ @@ -610,6 +611,16 @@ secondary_bootstrap_copy: true; \ done # cp -f lib/asn1/src/*.erl lib/asn1/src/*.hrl $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1/src + for x in lib/orber/include/*.hrl; do \ + BN=`basename $$x`; \ + TF=$(BOOTSTRAP_ROOT)/bootstrap/lib/orber/include/$$BN; \ + test -f $$TF && \ + test '!' -z "`find $$x -newer $$TF -print`" && \ + cp $$x $$TF; \ + test '!' -f $$TF && \ + cp $$x $$TF; \ + true; \ + done tertiary_bootstrap_build: cd lib && \ @@ -631,13 +642,6 @@ tertiary_bootstrap_copy: true; \ done # cp lib/snmp/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/snmp/ebin - -fourth_bootstrap_build: - cd lib && \ - ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ - $(MAKE) opt FOURTH_BOOTSTRAP=true - -fourth_bootstrap_copy: if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/ebin ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/include ; fi @@ -724,7 +728,6 @@ fourth_bootstrap_copy: cp $$x $$TF; \ true; \ done - # cp lib/syntax_tools/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/syntax_tools/ebin .PHONY: check_recreate_primary_bootstrap recreate_primary_bootstrap @@ -896,7 +899,6 @@ old_bootstrap_nc_for_ne_all_stages: cd lib && $(MAKE) BOOTSTRAP=1 TYPE=release release cd lib && $(MAKE) SECONDARY_BOOTSTRAP=1 TYPE=release release cd lib && $(MAKE) TERTIARY_BOOTSTRAP=1 TYPE=release release - cd lib && $(MAKE) FOURTH_BOOTSTRAP=1 TYPE=release release diff --git a/bootstrap/bin/start.script b/bootstrap/bin/start.script deleted file mode 100644 index 9b447c34a9..0000000000 --- a/bootstrap/bin/start.script +++ /dev/null @@ -1,113 +0,0 @@ -%% script generated at {2011,5,20} {15,43,53} -{script, - {"OTP APN 181 01","R14B03"}, - [{preLoaded, - [erl_prim_loader,erlang,init,otp_ring0,prim_file,prim_inet,prim_zip, - zlib]}, - {progress,preloaded}, - {path,["$ROOT/lib/kernel/ebin","$ROOT/lib/stdlib/ebin"]}, - {primLoad,[error_handler]}, - {kernel_load_completed}, - {progress,kernel_load_completed}, - {path,["$ROOT/lib/kernel/ebin"]}, - {primLoad, - [application,application_controller,application_master, - application_starter,auth,code,code_server,disk_log,disk_log_1, - disk_log_server,disk_log_sup,dist_ac,dist_util,erl_boot_server, - erl_ddll,erl_distribution,erl_epmd,erl_reply,error_logger, - erts_debug,file,file_io_server,file_server,gen_sctp,gen_tcp,gen_udp, - global,global_group,global_search,group,heart,hipe_unified_loader, - inet,inet6_sctp,inet6_tcp,inet6_tcp_dist,inet6_udp,inet_config, - inet_db,inet_dns,inet_gethost_native,inet_hosts,inet_parse,inet_res, - inet_sctp,inet_tcp,inet_tcp_dist,inet_udp,kernel,kernel_config,net, - net_adm,net_kernel,os,packages,pg2,ram_file,rpc,seq_trace, - standard_error,user,user_drv,user_sup,wrap_log_reader]}, - {path,["$ROOT/lib/stdlib/ebin"]}, - {primLoad, - [array,base64,beam_lib,binary,c,calendar,dets,dets_server,dets_sup, - dets_utils,dets_v8,dets_v9,dict,digraph,digraph_utils,edlin, - edlin_expand,epp,erl_bits,erl_compile,erl_eval,erl_expand_records, - erl_internal,erl_lint,erl_parse,erl_posix_msg,erl_pp,erl_scan, - erl_tar,error_logger_file_h,error_logger_tty_h,escript,ets, - eval_bits,file_sorter,filelib,filename,gb_sets,gb_trees,gen, - gen_event,gen_fsm,gen_server,io,io_lib,io_lib_format,io_lib_fread, - io_lib_pretty,lib,lists,log_mf_h,math,ms_transform,orddict,ordsets, - otp_internal,pg,pool,proc_lib,proplists,qlc,qlc_pt,queue,random,re, - regexp,sets,shell,shell_default,slave,sofs,string,supervisor, - supervisor_bridge,sys,timer,unicode,win32reg,zip]}, - {progress,modules_loaded}, - {path,["$ROOT/lib/kernel/ebin","$ROOT/lib/stdlib/ebin"]}, - {kernelProcess,heart,{heart,start,[]}}, - {kernelProcess,error_logger,{error_logger,start_link,[]}}, - {kernelProcess,application_controller, - {application_controller,start, - [{application,kernel, - [{description,"ERTS CXC 138 10"}, - {vsn,"2.14.4"}, - {id,[]}, - {modules, - [application,application_controller,application_master, - application_starter,auth,code,packages,code_server, - dist_util,erl_boot_server,erl_distribution,erl_reply, - error_handler,error_logger,file,file_server, - file_io_server,global,global_group,global_search, - group,heart,hipe_unified_loader,inet6_tcp, - inet6_tcp_dist,inet6_udp,inet6_sctp,inet_config, - inet_hosts,inet_gethost_native,inet_tcp_dist,kernel, - kernel_config,net,net_adm,net_kernel,os,ram_file,rpc, - user,user_drv,user_sup,disk_log,disk_log_1, - disk_log_server,disk_log_sup,dist_ac,erl_ddll, - erl_epmd,erts_debug,gen_tcp,gen_udp,gen_sctp,inet, - inet_db,inet_dns,inet_parse,inet_res,inet_tcp, - inet_udp,inet_sctp,pg2,seq_trace,standard_error, - wrap_log_reader]}, - {registered, - [application_controller,erl_reply,auth,boot_server, - code_server,disk_log_server,disk_log_sup, - erl_prim_loader,error_logger,file_server_2, - fixtable_server,global_group,global_name_server,heart, - init,kernel_config,kernel_sup,net_kernel,net_sup,rex, - user,os_server,ddll_server,erl_epmd,inet_db,pg2]}, - {applications,[]}, - {included_applications,[]}, - {env,[{error_logger,tty}]}, - {start_phases,undefined}, - {maxT,infinity}, - {maxP,infinity}, - {mod,{kernel,[]}}]}]}}, - {progress,init_kernel_started}, - {apply, - {application,load, - [{application,stdlib, - [{description,"ERTS CXC 138 10"}, - {vsn,"1.17.4"}, - {id,[]}, - {modules, - [array,base64,beam_lib,binary,c,calendar,dets, - dets_server,dets_sup,dets_utils,dets_v8,dets_v9,dict, - digraph,digraph_utils,edlin,edlin_expand,epp, - eval_bits,erl_bits,erl_compile,erl_eval, - erl_expand_records,erl_internal,erl_lint,erl_parse, - erl_posix_msg,erl_pp,erl_scan,erl_tar, - error_logger_file_h,error_logger_tty_h,escript,ets, - file_sorter,filelib,filename,gb_trees,gb_sets,gen, - gen_event,gen_fsm,gen_server,io,io_lib,io_lib_format, - io_lib_fread,io_lib_pretty,lib,lists,log_mf_h,math, - ms_transform,orddict,ordsets,otp_internal,pg,pool, - proc_lib,proplists,qlc,qlc_pt,queue,random,re,regexp, - sets,shell,shell_default,slave,sofs,string,supervisor, - supervisor_bridge,sys,timer,unicode,win32reg,zip]}, - {registered, - [timer_server,rsh_starter,take_over_monitor, - pool_master,dets]}, - {applications,[kernel]}, - {included_applications,[]}, - {env,[]}, - {start_phases,undefined}, - {maxT,infinity}, - {maxP,infinity}]}]}}, - {progress,applications_loaded}, - {apply,{application,start_boot,[kernel,permanent]}}, - {apply,{application,start_boot,[stdlib,permanent]}}, - {apply,{c,erlangrc,[]}}, - {progress,started}]}. diff --git a/bootstrap/bin/start_clean.script b/bootstrap/bin/start_clean.script deleted file mode 100644 index 9b447c34a9..0000000000 --- a/bootstrap/bin/start_clean.script +++ /dev/null @@ -1,113 +0,0 @@ -%% script generated at {2011,5,20} {15,43,53} -{script, - {"OTP APN 181 01","R14B03"}, - [{preLoaded, - [erl_prim_loader,erlang,init,otp_ring0,prim_file,prim_inet,prim_zip, - zlib]}, - {progress,preloaded}, - {path,["$ROOT/lib/kernel/ebin","$ROOT/lib/stdlib/ebin"]}, - {primLoad,[error_handler]}, - {kernel_load_completed}, - {progress,kernel_load_completed}, - {path,["$ROOT/lib/kernel/ebin"]}, - {primLoad, - [application,application_controller,application_master, - application_starter,auth,code,code_server,disk_log,disk_log_1, - disk_log_server,disk_log_sup,dist_ac,dist_util,erl_boot_server, - erl_ddll,erl_distribution,erl_epmd,erl_reply,error_logger, - erts_debug,file,file_io_server,file_server,gen_sctp,gen_tcp,gen_udp, - global,global_group,global_search,group,heart,hipe_unified_loader, - inet,inet6_sctp,inet6_tcp,inet6_tcp_dist,inet6_udp,inet_config, - inet_db,inet_dns,inet_gethost_native,inet_hosts,inet_parse,inet_res, - inet_sctp,inet_tcp,inet_tcp_dist,inet_udp,kernel,kernel_config,net, - net_adm,net_kernel,os,packages,pg2,ram_file,rpc,seq_trace, - standard_error,user,user_drv,user_sup,wrap_log_reader]}, - {path,["$ROOT/lib/stdlib/ebin"]}, - {primLoad, - [array,base64,beam_lib,binary,c,calendar,dets,dets_server,dets_sup, - dets_utils,dets_v8,dets_v9,dict,digraph,digraph_utils,edlin, - edlin_expand,epp,erl_bits,erl_compile,erl_eval,erl_expand_records, - erl_internal,erl_lint,erl_parse,erl_posix_msg,erl_pp,erl_scan, - erl_tar,error_logger_file_h,error_logger_tty_h,escript,ets, - eval_bits,file_sorter,filelib,filename,gb_sets,gb_trees,gen, - gen_event,gen_fsm,gen_server,io,io_lib,io_lib_format,io_lib_fread, - io_lib_pretty,lib,lists,log_mf_h,math,ms_transform,orddict,ordsets, - otp_internal,pg,pool,proc_lib,proplists,qlc,qlc_pt,queue,random,re, - regexp,sets,shell,shell_default,slave,sofs,string,supervisor, - supervisor_bridge,sys,timer,unicode,win32reg,zip]}, - {progress,modules_loaded}, - {path,["$ROOT/lib/kernel/ebin","$ROOT/lib/stdlib/ebin"]}, - {kernelProcess,heart,{heart,start,[]}}, - {kernelProcess,error_logger,{error_logger,start_link,[]}}, - {kernelProcess,application_controller, - {application_controller,start, - [{application,kernel, - [{description,"ERTS CXC 138 10"}, - {vsn,"2.14.4"}, - {id,[]}, - {modules, - [application,application_controller,application_master, - application_starter,auth,code,packages,code_server, - dist_util,erl_boot_server,erl_distribution,erl_reply, - error_handler,error_logger,file,file_server, - file_io_server,global,global_group,global_search, - group,heart,hipe_unified_loader,inet6_tcp, - inet6_tcp_dist,inet6_udp,inet6_sctp,inet_config, - inet_hosts,inet_gethost_native,inet_tcp_dist,kernel, - kernel_config,net,net_adm,net_kernel,os,ram_file,rpc, - user,user_drv,user_sup,disk_log,disk_log_1, - disk_log_server,disk_log_sup,dist_ac,erl_ddll, - erl_epmd,erts_debug,gen_tcp,gen_udp,gen_sctp,inet, - inet_db,inet_dns,inet_parse,inet_res,inet_tcp, - inet_udp,inet_sctp,pg2,seq_trace,standard_error, - wrap_log_reader]}, - {registered, - [application_controller,erl_reply,auth,boot_server, - code_server,disk_log_server,disk_log_sup, - erl_prim_loader,error_logger,file_server_2, - fixtable_server,global_group,global_name_server,heart, - init,kernel_config,kernel_sup,net_kernel,net_sup,rex, - user,os_server,ddll_server,erl_epmd,inet_db,pg2]}, - {applications,[]}, - {included_applications,[]}, - {env,[{error_logger,tty}]}, - {start_phases,undefined}, - {maxT,infinity}, - {maxP,infinity}, - {mod,{kernel,[]}}]}]}}, - {progress,init_kernel_started}, - {apply, - {application,load, - [{application,stdlib, - [{description,"ERTS CXC 138 10"}, - {vsn,"1.17.4"}, - {id,[]}, - {modules, - [array,base64,beam_lib,binary,c,calendar,dets, - dets_server,dets_sup,dets_utils,dets_v8,dets_v9,dict, - digraph,digraph_utils,edlin,edlin_expand,epp, - eval_bits,erl_bits,erl_compile,erl_eval, - erl_expand_records,erl_internal,erl_lint,erl_parse, - erl_posix_msg,erl_pp,erl_scan,erl_tar, - error_logger_file_h,error_logger_tty_h,escript,ets, - file_sorter,filelib,filename,gb_trees,gb_sets,gen, - gen_event,gen_fsm,gen_server,io,io_lib,io_lib_format, - io_lib_fread,io_lib_pretty,lib,lists,log_mf_h,math, - ms_transform,orddict,ordsets,otp_internal,pg,pool, - proc_lib,proplists,qlc,qlc_pt,queue,random,re,regexp, - sets,shell,shell_default,slave,sofs,string,supervisor, - supervisor_bridge,sys,timer,unicode,win32reg,zip]}, - {registered, - [timer_server,rsh_starter,take_over_monitor, - pool_master,dets]}, - {applications,[kernel]}, - {included_applications,[]}, - {env,[]}, - {start_phases,undefined}, - {maxT,infinity}, - {maxP,infinity}]}]}}, - {progress,applications_loaded}, - {apply,{application,start_boot,[kernel,permanent]}}, - {apply,{application,start_boot,[stdlib,permanent]}}, - {apply,{c,erlangrc,[]}}, - {progress,started}]}. diff --git a/bootstrap/lib/compiler/ebin/compiler.app b/bootstrap/lib/compiler/ebin/compiler.app deleted file mode 100644 index fffb64c3a0..0000000000 --- a/bootstrap/lib/compiler/ebin/compiler.app +++ /dev/null @@ -1,67 +0,0 @@ -% This is an -*- erlang -*- file. -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% - -{application, compiler, - [{description, "ERTS CXC 138 10"}, - {vsn, "4.7.3"}, - {modules, [ - beam_asm, - beam_block, - beam_bool, - beam_bsm, - beam_clean, - beam_dead, - beam_dict, - beam_disasm, - beam_flatten, - beam_jump, - beam_listing, - beam_opcodes, - beam_peep, - beam_receive, - beam_trim, - beam_type, - beam_utils, - beam_validator, - cerl, - cerl_clauses, - cerl_inline, - cerl_trees, - compile, - core_scan, - core_lint, - core_parse, - core_pp, - core_lib, - erl_bifs, - rec_env, - sys_core_dsetel, - sys_core_fold, - sys_core_inline, - sys_expand_pmod, - sys_pre_attributes, - sys_pre_expand, - v3_codegen, - v3_core, - v3_kernel, - v3_kernel_pp, - v3_life - ]}, - {registered, []}, - {applications, [kernel, stdlib]}, - {env, []}]}. diff --git a/bootstrap/lib/compiler/ebin/compiler.appup b/bootstrap/lib/compiler/ebin/compiler.appup deleted file mode 100644 index 10c9fd3dde..0000000000 --- a/bootstrap/lib/compiler/ebin/compiler.appup +++ /dev/null @@ -1 +0,0 @@ -{"4.7.1",[],[]}. diff --git a/bootstrap/lib/compiler/egen/beam_opcodes.erl b/bootstrap/lib/compiler/egen/beam_opcodes.erl deleted file mode 100644 index fda227f90f..0000000000 --- a/bootstrap/lib/compiler/egen/beam_opcodes.erl +++ /dev/null @@ -1,319 +0,0 @@ --module(beam_opcodes). -%% Warning: Do not edit this file. -%% Auto-generated by 'beam_makeops'. - --export([format_number/0]). --export([opcode/2,opname/1]). - --spec format_number() -> 0. -format_number() -> 0. - --spec opcode(atom(), 0..8) -> 1..152. -opcode(label, 1) -> 1; -opcode(func_info, 3) -> 2; -opcode(int_code_end, 0) -> 3; -opcode(call, 2) -> 4; -opcode(call_last, 3) -> 5; -opcode(call_only, 2) -> 6; -opcode(call_ext, 2) -> 7; -opcode(call_ext_last, 3) -> 8; -opcode(bif0, 2) -> 9; -opcode(bif1, 4) -> 10; -opcode(bif2, 5) -> 11; -opcode(allocate, 2) -> 12; -opcode(allocate_heap, 3) -> 13; -opcode(allocate_zero, 2) -> 14; -opcode(allocate_heap_zero, 3) -> 15; -opcode(test_heap, 2) -> 16; -opcode(init, 1) -> 17; -opcode(deallocate, 1) -> 18; -opcode(return, 0) -> 19; -opcode(send, 0) -> 20; -opcode(remove_message, 0) -> 21; -opcode(timeout, 0) -> 22; -opcode(loop_rec, 2) -> 23; -opcode(loop_rec_end, 1) -> 24; -opcode(wait, 1) -> 25; -opcode(wait_timeout, 2) -> 26; -%%opcode(m_plus, 4) -> 27; -%%opcode(m_minus, 4) -> 28; -%%opcode(m_times, 4) -> 29; -%%opcode(m_div, 4) -> 30; -%%opcode(int_div, 4) -> 31; -%%opcode(int_rem, 4) -> 32; -%%opcode(int_band, 4) -> 33; -%%opcode(int_bor, 4) -> 34; -%%opcode(int_bxor, 4) -> 35; -%%opcode(int_bsl, 4) -> 36; -%%opcode(int_bsr, 4) -> 37; -%%opcode(int_bnot, 3) -> 38; -opcode(is_lt, 3) -> 39; -opcode(is_ge, 3) -> 40; -opcode(is_eq, 3) -> 41; -opcode(is_ne, 3) -> 42; -opcode(is_eq_exact, 3) -> 43; -opcode(is_ne_exact, 3) -> 44; -opcode(is_integer, 2) -> 45; -opcode(is_float, 2) -> 46; -opcode(is_number, 2) -> 47; -opcode(is_atom, 2) -> 48; -opcode(is_pid, 2) -> 49; -opcode(is_reference, 2) -> 50; -opcode(is_port, 2) -> 51; -opcode(is_nil, 2) -> 52; -opcode(is_binary, 2) -> 53; -%%opcode(is_constant, 2) -> 54; -opcode(is_list, 2) -> 55; -opcode(is_nonempty_list, 2) -> 56; -opcode(is_tuple, 2) -> 57; -opcode(test_arity, 3) -> 58; -opcode(select_val, 3) -> 59; -opcode(select_tuple_arity, 3) -> 60; -opcode(jump, 1) -> 61; -opcode('catch', 2) -> 62; -opcode(catch_end, 1) -> 63; -opcode(move, 2) -> 64; -opcode(get_list, 3) -> 65; -opcode(get_tuple_element, 3) -> 66; -opcode(set_tuple_element, 3) -> 67; -%%opcode(put_string, 3) -> 68; -opcode(put_list, 3) -> 69; -opcode(put_tuple, 2) -> 70; -opcode(put, 1) -> 71; -opcode(badmatch, 1) -> 72; -opcode(if_end, 0) -> 73; -opcode(case_end, 1) -> 74; -opcode(call_fun, 1) -> 75; -%%opcode(make_fun, 3) -> 76; -opcode(is_function, 2) -> 77; -opcode(call_ext_only, 2) -> 78; -%%opcode(bs_start_match, 2) -> 79; -%%opcode(bs_get_integer, 5) -> 80; -%%opcode(bs_get_float, 5) -> 81; -%%opcode(bs_get_binary, 5) -> 82; -%%opcode(bs_skip_bits, 4) -> 83; -%%opcode(bs_test_tail, 2) -> 84; -%%opcode(bs_save, 1) -> 85; -%%opcode(bs_restore, 1) -> 86; -%%opcode(bs_init, 2) -> 87; -%%opcode(bs_final, 2) -> 88; -opcode(bs_put_integer, 5) -> 89; -opcode(bs_put_binary, 5) -> 90; -opcode(bs_put_float, 5) -> 91; -opcode(bs_put_string, 2) -> 92; -%%opcode(bs_need_buf, 1) -> 93; -opcode(fclearerror, 0) -> 94; -opcode(fcheckerror, 1) -> 95; -opcode(fmove, 2) -> 96; -opcode(fconv, 2) -> 97; -opcode(fadd, 4) -> 98; -opcode(fsub, 4) -> 99; -opcode(fmul, 4) -> 100; -opcode(fdiv, 4) -> 101; -opcode(fnegate, 3) -> 102; -opcode(make_fun2, 1) -> 103; -opcode('try', 2) -> 104; -opcode(try_end, 1) -> 105; -opcode(try_case, 1) -> 106; -opcode(try_case_end, 1) -> 107; -opcode(raise, 2) -> 108; -opcode(bs_init2, 6) -> 109; -%%opcode(bs_bits_to_bytes, 3) -> 110; -opcode(bs_add, 5) -> 111; -opcode(apply, 1) -> 112; -opcode(apply_last, 2) -> 113; -opcode(is_boolean, 2) -> 114; -opcode(is_function2, 3) -> 115; -opcode(bs_start_match2, 5) -> 116; -opcode(bs_get_integer2, 7) -> 117; -opcode(bs_get_float2, 7) -> 118; -opcode(bs_get_binary2, 7) -> 119; -opcode(bs_skip_bits2, 5) -> 120; -opcode(bs_test_tail2, 3) -> 121; -opcode(bs_save2, 2) -> 122; -opcode(bs_restore2, 2) -> 123; -opcode(gc_bif1, 5) -> 124; -opcode(gc_bif2, 6) -> 125; -%%opcode(bs_final2, 2) -> 126; -%%opcode(bs_bits_to_bytes2, 2) -> 127; -%%opcode(put_literal, 2) -> 128; -opcode(is_bitstr, 2) -> 129; -opcode(bs_context_to_binary, 1) -> 130; -opcode(bs_test_unit, 3) -> 131; -opcode(bs_match_string, 4) -> 132; -opcode(bs_init_writable, 0) -> 133; -opcode(bs_append, 8) -> 134; -opcode(bs_private_append, 6) -> 135; -opcode(trim, 2) -> 136; -opcode(bs_init_bits, 6) -> 137; -opcode(bs_get_utf8, 5) -> 138; -opcode(bs_skip_utf8, 4) -> 139; -opcode(bs_get_utf16, 5) -> 140; -opcode(bs_skip_utf16, 4) -> 141; -opcode(bs_get_utf32, 5) -> 142; -opcode(bs_skip_utf32, 4) -> 143; -opcode(bs_utf8_size, 3) -> 144; -opcode(bs_put_utf8, 3) -> 145; -opcode(bs_utf16_size, 3) -> 146; -opcode(bs_put_utf16, 3) -> 147; -opcode(bs_put_utf32, 3) -> 148; -opcode(on_load, 0) -> 149; -opcode(recv_mark, 1) -> 150; -opcode(recv_set, 1) -> 151; -opcode(gc_bif3, 7) -> 152; -opcode(Name, Arity) -> erlang:error(badarg, [Name,Arity]). - --spec opname(1..152) -> {atom(),0..8}. -opname(1) -> {label,1}; -opname(2) -> {func_info,3}; -opname(3) -> {int_code_end,0}; -opname(4) -> {call,2}; -opname(5) -> {call_last,3}; -opname(6) -> {call_only,2}; -opname(7) -> {call_ext,2}; -opname(8) -> {call_ext_last,3}; -opname(9) -> {bif0,2}; -opname(10) -> {bif1,4}; -opname(11) -> {bif2,5}; -opname(12) -> {allocate,2}; -opname(13) -> {allocate_heap,3}; -opname(14) -> {allocate_zero,2}; -opname(15) -> {allocate_heap_zero,3}; -opname(16) -> {test_heap,2}; -opname(17) -> {init,1}; -opname(18) -> {deallocate,1}; -opname(19) -> {return,0}; -opname(20) -> {send,0}; -opname(21) -> {remove_message,0}; -opname(22) -> {timeout,0}; -opname(23) -> {loop_rec,2}; -opname(24) -> {loop_rec_end,1}; -opname(25) -> {wait,1}; -opname(26) -> {wait_timeout,2}; -opname(27) -> {m_plus,4}; -opname(28) -> {m_minus,4}; -opname(29) -> {m_times,4}; -opname(30) -> {m_div,4}; -opname(31) -> {int_div,4}; -opname(32) -> {int_rem,4}; -opname(33) -> {int_band,4}; -opname(34) -> {int_bor,4}; -opname(35) -> {int_bxor,4}; -opname(36) -> {int_bsl,4}; -opname(37) -> {int_bsr,4}; -opname(38) -> {int_bnot,3}; -opname(39) -> {is_lt,3}; -opname(40) -> {is_ge,3}; -opname(41) -> {is_eq,3}; -opname(42) -> {is_ne,3}; -opname(43) -> {is_eq_exact,3}; -opname(44) -> {is_ne_exact,3}; -opname(45) -> {is_integer,2}; -opname(46) -> {is_float,2}; -opname(47) -> {is_number,2}; -opname(48) -> {is_atom,2}; -opname(49) -> {is_pid,2}; -opname(50) -> {is_reference,2}; -opname(51) -> {is_port,2}; -opname(52) -> {is_nil,2}; -opname(53) -> {is_binary,2}; -opname(54) -> {is_constant,2}; -opname(55) -> {is_list,2}; -opname(56) -> {is_nonempty_list,2}; -opname(57) -> {is_tuple,2}; -opname(58) -> {test_arity,3}; -opname(59) -> {select_val,3}; -opname(60) -> {select_tuple_arity,3}; -opname(61) -> {jump,1}; -opname(62) -> {'catch',2}; -opname(63) -> {catch_end,1}; -opname(64) -> {move,2}; -opname(65) -> {get_list,3}; -opname(66) -> {get_tuple_element,3}; -opname(67) -> {set_tuple_element,3}; -opname(68) -> {put_string,3}; -opname(69) -> {put_list,3}; -opname(70) -> {put_tuple,2}; -opname(71) -> {put,1}; -opname(72) -> {badmatch,1}; -opname(73) -> {if_end,0}; -opname(74) -> {case_end,1}; -opname(75) -> {call_fun,1}; -opname(76) -> {make_fun,3}; -opname(77) -> {is_function,2}; -opname(78) -> {call_ext_only,2}; -opname(79) -> {bs_start_match,2}; -opname(80) -> {bs_get_integer,5}; -opname(81) -> {bs_get_float,5}; -opname(82) -> {bs_get_binary,5}; -opname(83) -> {bs_skip_bits,4}; -opname(84) -> {bs_test_tail,2}; -opname(85) -> {bs_save,1}; -opname(86) -> {bs_restore,1}; -opname(87) -> {bs_init,2}; -opname(88) -> {bs_final,2}; -opname(89) -> {bs_put_integer,5}; -opname(90) -> {bs_put_binary,5}; -opname(91) -> {bs_put_float,5}; -opname(92) -> {bs_put_string,2}; -opname(93) -> {bs_need_buf,1}; -opname(94) -> {fclearerror,0}; -opname(95) -> {fcheckerror,1}; -opname(96) -> {fmove,2}; -opname(97) -> {fconv,2}; -opname(98) -> {fadd,4}; -opname(99) -> {fsub,4}; -opname(100) -> {fmul,4}; -opname(101) -> {fdiv,4}; -opname(102) -> {fnegate,3}; -opname(103) -> {make_fun2,1}; -opname(104) -> {'try',2}; -opname(105) -> {try_end,1}; -opname(106) -> {try_case,1}; -opname(107) -> {try_case_end,1}; -opname(108) -> {raise,2}; -opname(109) -> {bs_init2,6}; -opname(110) -> {bs_bits_to_bytes,3}; -opname(111) -> {bs_add,5}; -opname(112) -> {apply,1}; -opname(113) -> {apply_last,2}; -opname(114) -> {is_boolean,2}; -opname(115) -> {is_function2,3}; -opname(116) -> {bs_start_match2,5}; -opname(117) -> {bs_get_integer2,7}; -opname(118) -> {bs_get_float2,7}; -opname(119) -> {bs_get_binary2,7}; -opname(120) -> {bs_skip_bits2,5}; -opname(121) -> {bs_test_tail2,3}; -opname(122) -> {bs_save2,2}; -opname(123) -> {bs_restore2,2}; -opname(124) -> {gc_bif1,5}; -opname(125) -> {gc_bif2,6}; -opname(126) -> {bs_final2,2}; -opname(127) -> {bs_bits_to_bytes2,2}; -opname(128) -> {put_literal,2}; -opname(129) -> {is_bitstr,2}; -opname(130) -> {bs_context_to_binary,1}; -opname(131) -> {bs_test_unit,3}; -opname(132) -> {bs_match_string,4}; -opname(133) -> {bs_init_writable,0}; -opname(134) -> {bs_append,8}; -opname(135) -> {bs_private_append,6}; -opname(136) -> {trim,2}; -opname(137) -> {bs_init_bits,6}; -opname(138) -> {bs_get_utf8,5}; -opname(139) -> {bs_skip_utf8,4}; -opname(140) -> {bs_get_utf16,5}; -opname(141) -> {bs_skip_utf16,4}; -opname(142) -> {bs_get_utf32,5}; -opname(143) -> {bs_skip_utf32,4}; -opname(144) -> {bs_utf8_size,3}; -opname(145) -> {bs_put_utf8,3}; -opname(146) -> {bs_utf16_size,3}; -opname(147) -> {bs_put_utf16,3}; -opname(148) -> {bs_put_utf32,3}; -opname(149) -> {on_load,0}; -opname(150) -> {recv_mark,1}; -opname(151) -> {recv_set,1}; -opname(152) -> {gc_bif3,7}; -opname(Number) -> erlang:error(badarg, [Number]). diff --git a/bootstrap/lib/compiler/egen/beam_opcodes.hrl b/bootstrap/lib/compiler/egen/beam_opcodes.hrl deleted file mode 100644 index 6ad7d17118..0000000000 --- a/bootstrap/lib/compiler/egen/beam_opcodes.hrl +++ /dev/null @@ -1,12 +0,0 @@ -%% Warning: Do not edit this file. -%% Auto-generated by 'beam_makeops'. - --define(tag_u, 0). --define(tag_i, 1). --define(tag_a, 2). --define(tag_x, 3). --define(tag_y, 4). --define(tag_f, 5). --define(tag_h, 6). --define(tag_z, 7). - diff --git a/bootstrap/lib/compiler/egen/core_parse.erl b/bootstrap/lib/compiler/egen/core_parse.erl deleted file mode 100644 index 399d61109f..0000000000 --- a/bootstrap/lib/compiler/egen/core_parse.erl +++ /dev/null @@ -1,5426 +0,0 @@ --module(core_parse). --export([parse/1, parse_and_scan/1, format_error/1]). --file("core_parse.yrl", 372). - -%% The following directive is needed for (significantly) faster compilation -%% of the generated .erl file by the HiPE compiler. Please do not remove. --compile([{hipe,[{regalloc,linear_scan}]}]). - --include("core_parse.hrl"). - --import(cerl, [c_cons/2,c_tuple/1]). - -tok_val(T) -> element(3, T). -tok_line(T) -> element(2, T). - --file("/opt/installs/lib/erlang/lib/parsetools-2.0.5/include/yeccpre.hrl", 0). -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% The parser generator will insert appropriate declarations before this line.% - --type yecc_ret() :: {'error', _} | {'ok', _}. - --spec parse(Tokens :: list()) -> yecc_ret(). -parse(Tokens) -> - yeccpars0(Tokens, {no_func, no_line}, 0, [], []). - --spec parse_and_scan({function() | {atom(), atom()}, [_]} - | {atom(), atom(), [_]}) -> yecc_ret(). -parse_and_scan({F, A}) -> % Fun or {M, F} - yeccpars0([], {{F, A}, no_line}, 0, [], []); -parse_and_scan({M, F, A}) -> - yeccpars0([], {{{M, F}, A}, no_line}, 0, [], []). - --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(integer(), any()) -> no_return(). -return_error(Line, Message) -> - throw({error, {Line, ?MODULE, Message}}). - --define(CODE_VERSION, "1.4"). - -yeccpars0(Tokens, Tzr, State, States, Vstack) -> - try yeccpars1(Tokens, Tzr, State, States, Vstack) - catch - error: Error -> - Stacktrace = erlang:get_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, {_Line, ?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},_Line}, State, States, Vstack) -> - case apply(F, A) of - {ok, Tokens, Endline} -> - yeccpars1(Tokens, {{F, A}, Endline}, State, States, Vstack); - {eof, Endline} -> - yeccpars1([], {no_func, Endline}, State, States, Vstack); - {error, Descriptor, _Endline} -> - {error, Descriptor} - end; -yeccpars1([], {no_func, no_line}, State, States, Vstack) -> - Line = 999999, - yeccpars2(State, '$end', States, Vstack, yecc_end(Line), [], - {no_func, Line}); -yeccpars1([], {no_func, Endline}, State, States, Vstack) -> - yeccpars2(State, '$end', States, Vstack, yecc_end(Endline), [], - {no_func, Endline}). - -%% 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}, _Line}=Tzr) -> - yeccpars1([], Tzr, State, [State1 | States], [Token0 | Vstack]); -yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, no_line}) -> - Line = yecctoken_end_location(Token0), - yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], - yecc_end(Line), [], {no_func, Line}); -yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, Line}) -> - yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], - yecc_end(Line), [], {no_func, Line}). - -%% For internal use only. -yecc_end({Line,_Column}) -> - {'$end', Line}; -yecc_end(Line) -> - {'$end', Line}. - -yecctoken_end_location(Token) -> - try - {text, Str} = erl_scan:token_info(Token, text), - {line, Line} = erl_scan:token_info(Token, line), - Parts = re:split(Str, "\n"), - Dline = length(Parts) - 1, - Yline = Line + Dline, - case erl_scan:token_info(Token, column) of - {column, Column} -> - Col = byte_size(lists:last(Parts)), - {Yline, Col + if Dline =:= 0 -> Column; true -> 1 end}; - undefined -> - Yline - end - 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) -> - case catch erl_scan:token_info(Token, text) of - {text, Txt} -> Txt; - _ -> yecctoken2string(Token) - end. - -yecctoken_location(Token) -> - case catch erl_scan:token_info(Token, location) of - {location, Loc} -> Loc; - _ -> element(2, Token) - end. - --compile({nowarn_unused_function, yecctoken2string/1}). -yecctoken2string({atom, _, A}) -> io_lib:write(A); -yecctoken2string({integer,_,N}) -> io_lib:write(N); -yecctoken2string({float,_,F}) -> io_lib:write(F); -yecctoken2string({char,_,C}) -> io_lib:write_char(C); -yecctoken2string({var,_,V}) -> io_lib:format("~s", [V]); -yecctoken2string({string,_,S}) -> io_lib:write_unicode_string(S); -yecctoken2string({reserved_symbol, _, A}) -> io_lib:write(A); -yecctoken2string({_Cat, _, Val}) -> io_lib:format("~p",[Val]); -yecctoken2string({dot, _}) -> "'.'"; -yecctoken2string({'$end', _}) -> - []; -yecctoken2string({Other, _}) when is_atom(Other) -> - io_lib:write(Other); -yecctoken2string(Other) -> - io_lib:write(Other). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - --file("/ldisk/egil/git/otp/bootstrap/lib/compiler/egen/core_parse.erl", 199). - -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_15(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_17(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(18=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(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_25(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(26=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_26(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_35(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(36=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(37=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_37(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(38=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_38(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(39=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(40=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(41=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_41(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(42=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(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_44(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_24(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_24(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_50(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(51=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_43(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_56(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_60(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(61=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(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_63(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_65(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_69(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_78(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(79=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(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(87=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(88=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_88(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(89=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_89(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(90=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(91=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_91(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(92=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(93=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_93(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(94=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_94(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(95=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_95(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(96=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_96(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(97=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_97(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(98=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_98(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(99=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_99(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(100=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_100(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(101=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_101(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(102=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_102(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(103=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_103(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(104=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_104(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(105=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_105(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(106=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_106(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(107=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_107(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(108=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(109=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_109(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(110=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_110(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(111=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_111(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(112=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_112(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(113=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_113(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(114=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_114(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(115=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_115(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(116=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_116(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(117=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_117(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(118=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_118(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(119=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_119(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(120=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_120(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(121=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_121(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(122=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_122(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(123=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_123(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(124=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_124(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(125=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_125(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(126=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_126(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(127=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_127(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(128=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_128(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(129=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_129(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(130=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_130(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(131=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(132=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(133=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(134=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_134(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(135=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(136=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(137=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(138=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(139=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_139(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(140=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_140(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(141=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(142=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_142(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(143=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(144=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_144(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(145=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_145(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(146=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_146(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(147=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_147(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(148=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(149=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_149(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(150=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_150(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(151=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_151(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(152=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_139(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(153=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_153(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(154=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_154(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(155=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_155(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(156=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_156(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(157=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_157(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(158=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_158(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(159=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(160=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_160(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(161=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_139(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(162=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_162(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(163=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(164=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_164(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(165=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_165(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(166=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_166(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(167=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_167(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(168=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_168(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(169=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_169(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(170=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_170(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(171=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_171(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(172=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_172(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(173=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_173(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(174=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_174(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(175=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_175(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(176=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_176(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(177=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_177(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(178=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_178(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(179=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_179(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(180=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_180(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(181=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(182=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(183=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_183(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(184=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_184(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(185=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_185(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(186=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_186(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(187=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_187(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(188=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_188(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(189=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_189(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(190=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_190(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(191=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(192=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_192(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(193=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(194=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_194(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(195=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_195(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(196=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(197=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_197(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(198=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_198(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(199=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(200=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_200(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(201=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_201(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(202=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_202(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(203=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(204=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_204(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(205=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_205(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(206=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_206(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(207=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(208=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_208(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(209=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(210=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_210(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(211=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_211(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(212=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_205(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(213=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_213(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(214=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_214(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(215=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_215(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(216=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_216(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(217=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_217(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(218=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_218(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(219=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(220=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_220(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(221=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_221(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(222=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_222(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(223=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_223(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(224=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_224(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(225=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_225(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(226=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_226(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(227=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_227(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(228=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(229=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_229(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(230=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(231=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(232=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_232(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(233=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_233(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(234=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_234(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(235=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_235(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(236=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_236(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(237=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_237(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(238=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_238(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(239=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_239(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(240=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(241=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_241(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(242=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(243=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_243(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(244=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_244(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(245=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_245(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(246=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_246(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(247=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_247(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(248=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_248(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(249=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_249(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(250=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_250(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(251=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(252=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_252(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(253=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_253(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(254=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(255=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_255(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(256=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(257=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_257(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(258=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(259=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_259(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(260=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_260(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(261=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_261(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(262=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_262(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(263=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_263(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(264=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_264(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(265=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_265(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(266=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(267=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_244(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(268=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_268(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(269=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_244(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(270=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_270(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(271=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_271(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(272=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_272(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(273=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(274=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_274(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(275=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(276=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_276(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(277=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_277(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(278=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_271(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(279=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_279(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(280=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_280(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(281=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_281(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(282=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_282(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(283=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_283(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(284=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(285=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_285(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(286=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_286(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(287=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_287(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(288=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_288(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(289=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_289(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(290=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_290(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(291=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_291(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(292=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_292(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(293=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(294=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_294(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(295=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_295(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(296=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(297=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_297(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(298=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_298(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(299=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_299(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(300=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_300(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(301=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_301(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(302=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_302(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(303=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_303(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(304=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_304(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(305=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_305(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(306=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_306(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(307=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(308=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_308(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(309=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_309(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(310=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(311=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_311(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(312=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(313=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_313(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(314=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(315=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(316=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_4(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(317=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_5(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(318=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_318(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(319=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_319(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(320=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(321=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(322=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(323=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_323(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, 2, Ss, Stack, T, Ts, Tzr); -yeccpars2_0(S, module, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 3, Ss, Stack, T, Ts, Tzr); -yeccpars2_0(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_1(_S, '$end', _Ss, Stack, _T, _Ts, _Tzr) -> - {ok, hd(Stack)}; -yeccpars2_1(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_2(S, module, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 315, Ss, Stack, T, Ts, Tzr); -yeccpars2_2(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_3(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 4, Ss, Stack, T, Ts, Tzr); -yeccpars2_3(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_4(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 6, Ss, Stack, T, Ts, Tzr); -yeccpars2_4(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_5(S, attributes, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 18, Ss, Stack, T, Ts, Tzr); -yeccpars2_5(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_6(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 10, Ss, Stack, T, Ts, Tzr); -yeccpars2_6(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_6(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_exported_name(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_8(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 16, Ss, Stack, T, Ts, Tzr); -yeccpars2_8(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_9(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 14, Ss, Stack, T, Ts, Tzr); -yeccpars2_9(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_9_(Stack), - yeccgoto_exported_names(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_10(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_10_(Stack), - yeccgoto_module_export(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_11(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 12, Ss, Stack, T, Ts, Tzr); -yeccpars2_11(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_12(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr); -yeccpars2_12(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_13(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_13_(Stack), - yeccgoto_function_name(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_14(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_14(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_15_(Stack), - yeccgoto_exported_names(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_16_(Stack), - yeccgoto_module_export(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_17(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_17(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_17(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_17_(Stack), - yeccpars2_58(_S, Cat, [17 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_18(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 19, Ss, Stack, T, Ts, Tzr); -yeccpars2_18(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_19(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 22, Ss, Stack, T, Ts, Tzr); -yeccpars2_19(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 23, Ss, Stack, T, Ts, Tzr); -yeccpars2_19(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_20(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 55, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_21(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 53, Ss, Stack, T, Ts, Tzr); -yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_21_(Stack), - yeccgoto_attribute_list(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_22_(Stack), - yeccgoto_module_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_23(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 24, Ss, Stack, T, Ts, Tzr); -yeccpars2_23(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_24(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 30, Ss, Stack, T, Ts, Tzr); -yeccpars2_24(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_24(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 36, Ss, Stack, T, Ts, Tzr); -yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_cont_24(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_24(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_24(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_24(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_24(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_literal(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_26_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_27(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_27_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_literal(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_literal(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_30(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 30, Ss, Stack, T, Ts, Tzr); -yeccpars2_30(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_30(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_30(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 36, Ss, Stack, T, Ts, Tzr); -yeccpars2_30(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_31_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_32(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_32_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_33(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_33_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_34(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_34_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_35(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_35_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_36(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 30, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 36, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 39, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_37(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 42, Ss, Stack, T, Ts, Tzr); -yeccpars2_37(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_38(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 40, Ss, Stack, T, Ts, Tzr); -yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_38_(Stack), - yeccgoto_literals(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_39(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_39_(Stack), - yeccgoto_tuple_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_40: see yeccpars2_24 - -yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_41_(Stack), - yeccgoto_literals(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_42_(Stack), - yeccgoto_tuple_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_43(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 46, Ss, Stack, T, Ts, Tzr); -yeccpars2_43(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_43(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_43(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_44(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_44_(Stack), - yeccgoto_nil(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_45(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_45_(Stack), - yeccgoto_cons_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_46: see yeccpars2_24 - -yeccpars2_47(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_47_(Stack), - yeccgoto_tail_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_48: see yeccpars2_24 - -yeccpars2_49(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 50, Ss, Stack, T, Ts, Tzr); -yeccpars2_49(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_50(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_50_(Stack), - yeccgoto_tail_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_51: see yeccpars2_43 - -yeccpars2_52(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_52_(Stack), - yeccgoto_tail_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_53(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 23, Ss, Stack, T, Ts, Tzr); -yeccpars2_53(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_54(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_54_(Stack), - yeccgoto_attribute_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_55(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_55_(Stack), - yeccgoto_module_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_56(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 314, Ss, Stack, T, Ts, Tzr); -yeccpars2_56(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_function_name(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_58(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_module_defs(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_59(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_59(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_59(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_59_(Stack), - yeccpars2_313(_S, Cat, [59 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_60(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 96, Ss, Stack, T, Ts, Tzr); -yeccpars2_60(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_61: see yeccpars2_14 - -yeccpars2_62(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 63, Ss, Stack, T, Ts, Tzr); -yeccpars2_62(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_63(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 65, Ss, Stack, T, Ts, Tzr); -yeccpars2_63(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_64(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 95, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_65(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 73, Ss, Stack, T, Ts, Tzr); -yeccpars2_65(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_constant(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_67_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_68(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 94, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_69(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 92, Ss, Stack, T, Ts, Tzr); -yeccpars2_69(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_69_(Stack), - yeccgoto_constants(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_constant(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_constant(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_72(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_72(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_73(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_73_(Stack), - yeccgoto_annotation(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_74(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_74_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_75(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_75_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_76(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_76_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_77(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_77_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_78(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_78_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_79(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 81, Ss, Stack, T, Ts, Tzr); -yeccpars2_79(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_80(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 82, Ss, Stack, T, Ts, Tzr); -yeccpars2_80(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_81(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_81_(Stack), - yeccgoto_tuple_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_82(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_82_(Stack), - yeccgoto_tuple_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_83(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 85, Ss, Stack, T, Ts, Tzr); -yeccpars2_83(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 86, Ss, Stack, T, Ts, Tzr); -yeccpars2_83(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 87, Ss, Stack, T, Ts, Tzr); -yeccpars2_83(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_84(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_84_(Stack), - yeccgoto_cons_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_85(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 72, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 74, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 75, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 76, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 77, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 78, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 79, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_86(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_86_(Stack), - yeccgoto_tail_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_87: see yeccpars2_85 - -yeccpars2_88(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 89, Ss, Stack, T, Ts, Tzr); -yeccpars2_88(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_89(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_89_(Stack), - yeccgoto_tail_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_90: see yeccpars2_83 - -yeccpars2_91(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_91_(Stack), - yeccgoto_tail_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_92: see yeccpars2_85 - -yeccpars2_93(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_93_(Stack), - yeccgoto_constants(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_94(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_94_(Stack), - yeccgoto_annotation(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_95(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_95_(Stack), - yeccgoto_anno_function_name(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_96(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 99, Ss, Stack, T, Ts, Tzr); -yeccpars2_96(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_96(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_97(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_fun(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_98(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_98_(Stack), - yeccgoto_function_definition(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_99(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_99(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_100(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 101, Ss, Stack, T, Ts, Tzr); -yeccpars2_100(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_101(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_101(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 106, Ss, Stack, T, Ts, Tzr); -yeccpars2_101(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_101(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_variable(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_103(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 306, Ss, Stack, T, Ts, Tzr); -yeccpars2_103(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_104(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 304, Ss, Stack, T, Ts, Tzr); -yeccpars2_104(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_104_(Stack), - yeccgoto_anno_variables(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_105(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_105(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_106(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 108, Ss, Stack, T, Ts, Tzr); -yeccpars2_106(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_107(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_107_(Stack), - yeccgoto_variable(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_108(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_cont_108(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 129, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 131, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 132, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, apply, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 133, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 134, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, call, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 135, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'case', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 136, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 137, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, do, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 138, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'let', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 139, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, letrec, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 140, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, primop, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 141, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'receive', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 142, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'try', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 143, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 144, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_128(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_128_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_129(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 287, Ss, Stack, T, Ts, Tzr); -yeccpars2_129(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_130(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_131(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 281, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_132(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_133: see yeccpars2_108 - -yeccpars2_134(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 12, Ss, Stack, T, Ts, Tzr); -yeccpars2_134(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_134_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_135: see yeccpars2_108 - -%% yeccpars2_136: see yeccpars2_108 - -%% yeccpars2_137: see yeccpars2_108 - -%% yeccpars2_138: see yeccpars2_108 - -yeccpars2_139(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_139(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 155, Ss, Stack, T, Ts, Tzr); -yeccpars2_139(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_139(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_140(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_140(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_140(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_140_(Stack), - yeccpars2_250(250, Cat, [140 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_141: see yeccpars2_108 - -yeccpars2_142(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 179, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 180, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 182, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_143: see yeccpars2_108 - -yeccpars2_144(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 147, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_145(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 150, Ss, Stack, T, Ts, Tzr); -yeccpars2_145(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_146(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 148, Ss, Stack, T, Ts, Tzr); -yeccpars2_146(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_146_(Stack), - yeccgoto_anno_expressions(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_147(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_147_(Stack), - yeccgoto_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_148: see yeccpars2_108 - -yeccpars2_149(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_149_(Stack), - yeccgoto_anno_expressions(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_150(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_150_(Stack), - yeccgoto_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_151(S, 'of', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 152, Ss, Stack, T, Ts, Tzr); -yeccpars2_151(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_152: see yeccpars2_139 - -yeccpars2_153(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 159, Ss, Stack, T, Ts, Tzr); -yeccpars2_153(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_154(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_154_(Stack), - yeccgoto_let_vars(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_155(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_155(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 157, Ss, Stack, T, Ts, Tzr); -yeccpars2_155(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_155(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_156(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 158, Ss, Stack, T, Ts, Tzr); -yeccpars2_156(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_157(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_157_(Stack), - yeccgoto_let_vars(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_158(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_158_(Stack), - yeccgoto_let_vars(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_159: see yeccpars2_108 - -yeccpars2_160(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 161, Ss, Stack, T, Ts, Tzr); -yeccpars2_160(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_161: see yeccpars2_139 - -yeccpars2_162(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 163, Ss, Stack, T, Ts, Tzr); -yeccpars2_162(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_163: see yeccpars2_108 - -yeccpars2_164(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_164_(Stack), - yeccgoto_try_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_other_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_166(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_166_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_other_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_169(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 240, Ss, Stack, T, Ts, Tzr); -yeccpars2_169(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_clause(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_other_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_other_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_174(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 191, Ss, Stack, T, Ts, Tzr); -yeccpars2_174(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_175_(Stack), - yeccgoto_clause_pattern(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_176(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 182, Ss, Stack, T, Ts, Tzr); -yeccpars2_176(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_177(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 179, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 180, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_177_(Stack), - yeccgoto_anno_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_178(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 222, Ss, Stack, T, Ts, Tzr); -yeccpars2_178(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_179(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 180, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_180(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 215, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_181(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_182: see yeccpars2_108 - -yeccpars2_183(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 187, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_184(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 201, Ss, Stack, T, Ts, Tzr); -yeccpars2_184(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_185(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 199, Ss, Stack, T, Ts, Tzr); -yeccpars2_185(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_185_(Stack), - yeccgoto_anno_patterns(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_186(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_187(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_187_(Stack), - yeccgoto_tuple_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_188(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 196, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_variable(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_189(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 193, Ss, Stack, T, Ts, Tzr); -yeccpars2_189(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_190(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 191, Ss, Stack, T, Ts, Tzr); -yeccpars2_190(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_191(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_192(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_192_(Stack), - yeccgoto_other_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_193: see yeccpars2_63 - -yeccpars2_194(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 195, Ss, Stack, T, Ts, Tzr); -yeccpars2_194(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_195(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_195_(Stack), - yeccgoto_anno_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_196: see yeccpars2_63 - -yeccpars2_197(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 198, Ss, Stack, T, Ts, Tzr); -yeccpars2_197(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_198(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_198_(Stack), - yeccgoto_anno_variable(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_199: see yeccpars2_191 - -yeccpars2_200(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_200_(Stack), - yeccgoto_anno_patterns(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_201(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_201_(Stack), - yeccgoto_tuple_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_202(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 203, Ss, Stack, T, Ts, Tzr); -yeccpars2_202(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_203: see yeccpars2_108 - -yeccpars2_204(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_204_(Stack), - yeccgoto_timeout(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_205(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 207, Ss, Stack, T, Ts, Tzr); -yeccpars2_205(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 208, Ss, Stack, T, Ts, Tzr); -yeccpars2_205(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 209, Ss, Stack, T, Ts, Tzr); -yeccpars2_205(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_206(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_206_(Stack), - yeccgoto_cons_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_207: see yeccpars2_191 - -yeccpars2_208(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_208_(Stack), - yeccgoto_tail_pattern(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_209: see yeccpars2_191 - -yeccpars2_210(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 211, Ss, Stack, T, Ts, Tzr); -yeccpars2_210(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_211(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_211_(Stack), - yeccgoto_tail_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_212: see yeccpars2_205 - -yeccpars2_213(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_213_(Stack), - yeccgoto_tail_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_214(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 216, Ss, Stack, T, Ts, Tzr); -yeccpars2_214(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_215(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_215_(Stack), - yeccgoto_clause_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_216(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_216_(Stack), - yeccgoto_clause_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_217(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 193, Ss, Stack, T, Ts, Tzr); -yeccpars2_217(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_218(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 219, Ss, Stack, T, Ts, Tzr); -yeccpars2_218(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_219: see yeccpars2_63 - -yeccpars2_220(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 221, Ss, Stack, T, Ts, Tzr); -yeccpars2_220(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_221(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_221_(Stack), - yeccgoto_anno_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_222(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 225, Ss, Stack, T, Ts, Tzr); -yeccpars2_222(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 226, Ss, Stack, T, Ts, Tzr); -yeccpars2_222(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_223(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 236, Ss, Stack, T, Ts, Tzr); -yeccpars2_223(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_224(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 234, Ss, Stack, T, Ts, Tzr); -yeccpars2_224(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_224_(Stack), - yeccgoto_segment_patterns(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_225(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 228, Ss, Stack, T, Ts, Tzr); -yeccpars2_225(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_226(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 227, Ss, Stack, T, Ts, Tzr); -yeccpars2_226(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_227(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_227_(Stack), - yeccgoto_binary_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_228: see yeccpars2_191 - -yeccpars2_229(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 230, Ss, Stack, T, Ts, Tzr); -yeccpars2_229(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_230(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 231, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_231: see yeccpars2_191 - -yeccpars2_232(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 233, Ss, Stack, T, Ts, Tzr); -yeccpars2_232(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_233(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_233_(Stack), - yeccgoto_segment_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_234(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 225, Ss, Stack, T, Ts, Tzr); -yeccpars2_234(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_235(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_235_(Stack), - yeccgoto_segment_patterns(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_236(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 237, Ss, Stack, T, Ts, Tzr); -yeccpars2_236(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_237(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_237_(Stack), - yeccgoto_binary_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_238(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_238_(Stack), - yeccgoto_anno_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_239(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_239_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_240: see yeccpars2_108 - -yeccpars2_241(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 242, Ss, Stack, T, Ts, Tzr); -yeccpars2_241(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_242: see yeccpars2_108 - -yeccpars2_243(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_243_(Stack), - yeccgoto_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_244(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 246, Ss, Stack, T, Ts, Tzr); -yeccpars2_244(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_245(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_245_(Stack), - yeccgoto_primop_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_246(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 248, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_247(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 249, Ss, Stack, T, Ts, Tzr); -yeccpars2_247(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_248(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_248_(Stack), - yeccgoto_arg_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_249(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_249_(Stack), - yeccgoto_arg_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_250(S, in, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 251, Ss, Stack, T, Ts, Tzr); -yeccpars2_250(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_251: see yeccpars2_108 - -yeccpars2_252(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_252_(Stack), - yeccgoto_letrec_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_253(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 254, Ss, Stack, T, Ts, Tzr); -yeccpars2_253(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_254: see yeccpars2_108 - -yeccpars2_255(S, in, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 256, Ss, Stack, T, Ts, Tzr); -yeccpars2_255(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_256: see yeccpars2_108 - -yeccpars2_257(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_257_(Stack), - yeccgoto_let_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_258: see yeccpars2_108 - -yeccpars2_259(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_259_(Stack), - yeccgoto_sequence(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_260(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_260_(Stack), - yeccgoto_catch_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_261(S, 'of', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_261(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_262(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 179, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 180, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_263(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_263(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_264(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_264_(Stack), - yeccgoto_case_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_265(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_265(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_266: see yeccpars2_108 - -%% yeccpars2_267: see yeccpars2_244 - -yeccpars2_268(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_268_(Stack), - yeccgoto_call_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_269: see yeccpars2_244 - -yeccpars2_270(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_270_(Stack), - yeccgoto_application_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_271(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 273, Ss, Stack, T, Ts, Tzr); -yeccpars2_271(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 274, Ss, Stack, T, Ts, Tzr); -yeccpars2_271(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 275, Ss, Stack, T, Ts, Tzr); -yeccpars2_271(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_272(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_272_(Stack), - yeccgoto_cons(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_273: see yeccpars2_108 - -yeccpars2_274(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_274_(Stack), - yeccgoto_tail(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_275: see yeccpars2_108 - -yeccpars2_276(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 277, Ss, Stack, T, Ts, Tzr); -yeccpars2_276(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_277(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_277_(Stack), - yeccgoto_tail(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_278: see yeccpars2_271 - -yeccpars2_279(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_279_(Stack), - yeccgoto_tail(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_280(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 282, Ss, Stack, T, Ts, Tzr); -yeccpars2_280(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_281(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_281_(Stack), - yeccgoto_expression(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_282(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_282_(Stack), - yeccgoto_expression(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_283(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 284, Ss, Stack, T, Ts, Tzr); -yeccpars2_283(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_284: see yeccpars2_63 - -yeccpars2_285(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 286, Ss, Stack, T, Ts, Tzr); -yeccpars2_285(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_286(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_286_(Stack), - yeccgoto_anno_expression(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_287(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 290, Ss, Stack, T, Ts, Tzr); -yeccpars2_287(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 291, Ss, Stack, T, Ts, Tzr); -yeccpars2_287(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_288(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 301, Ss, Stack, T, Ts, Tzr); -yeccpars2_288(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_289(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 299, Ss, Stack, T, Ts, Tzr); -yeccpars2_289(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_289_(Stack), - yeccgoto_segments(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_290(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 293, Ss, Stack, T, Ts, Tzr); -yeccpars2_290(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_291(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 292, Ss, Stack, T, Ts, Tzr); -yeccpars2_291(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_292(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_292_(Stack), - yeccgoto_binary(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_293: see yeccpars2_108 - -yeccpars2_294(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 295, Ss, Stack, T, Ts, Tzr); -yeccpars2_294(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_295(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 296, Ss, Stack, T, Ts, Tzr); -yeccpars2_295(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_296: see yeccpars2_108 - -yeccpars2_297(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 298, Ss, Stack, T, Ts, Tzr); -yeccpars2_297(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_298(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_298_(Stack), - yeccgoto_segment(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_299(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 290, Ss, Stack, T, Ts, Tzr); -yeccpars2_299(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_300(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_300_(Stack), - yeccgoto_segments(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_301(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 302, Ss, Stack, T, Ts, Tzr); -yeccpars2_301(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_302(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_302_(Stack), - yeccgoto_binary(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_303(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 196, Ss, Stack, T, Ts, Tzr); -yeccpars2_303(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_304(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_304(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_304(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_305(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_305_(Stack), - yeccgoto_anno_variables(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_306(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 307, Ss, Stack, T, Ts, Tzr); -yeccpars2_306(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_307: see yeccpars2_108 - -yeccpars2_308(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_308_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_309(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 310, Ss, Stack, T, Ts, Tzr); -yeccpars2_309(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_310: see yeccpars2_63 - -yeccpars2_311(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 312, Ss, Stack, T, Ts, Tzr); -yeccpars2_311(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_312(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_312_(Stack), - yeccgoto_anno_fun(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_313(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_313_(Stack), - yeccgoto_function_definitions(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_314(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_314_(Stack), - yeccgoto_module_definition(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_315(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 316, Ss, Stack, T, Ts, Tzr); -yeccpars2_315(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_316: see yeccpars2_4 - -%% yeccpars2_317: see yeccpars2_5 - -yeccpars2_318(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_318(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_318(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_318_(Stack), - yeccpars2_58(_S, Cat, [318 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_319(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 320, Ss, Stack, T, Ts, Tzr); -yeccpars2_319(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_320(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 321, Ss, Stack, T, Ts, Tzr); -yeccpars2_320(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_321: see yeccpars2_63 - -yeccpars2_322(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 323, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_323(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_323_(Stack), - yeccgoto_module_definition(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccgoto_anno_clause(142, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_177(177, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_clause(177, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_177(177, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_clause(262, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_177(177, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_clauses(142, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_176(176, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_clauses(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_238(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_clauses(262, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_263(263, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_expression(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_128(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(131, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(132, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_271(271, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(133, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_244(269, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(135, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_265(265, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_261(261, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_260(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(258, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(141, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_244(244, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(143, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_151(151, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(144, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(148, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(159, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_160(160, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_164(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(182, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_202(202, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_204(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(240, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_241(241, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_243(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(246, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_252(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(254, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_255(255, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_257(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_259(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(266, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_244(267, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(273, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_271(278, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(275, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_276(276, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(293, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_294(294, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(296, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_308(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_expressions(131, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_280(280, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expressions(144, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_145(145, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expressions(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_149(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expressions(246, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_247(247, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expressions(296, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_297(297, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_fun(96=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_98(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_function_name(17, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_60(60, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_function_name(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_60(60, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_function_name(140, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_60(60, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_function_name(318, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_60(60, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(180, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(181, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_205(205, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(183, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_192(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(199, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(207, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_205(212, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(209, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_210(210, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_229(229, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_patterns(180, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_214(214, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_patterns(183, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_184(184, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_patterns(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_200(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_patterns(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_232(232, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_variable(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_104(104, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(139=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_154(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(142, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(152=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_154(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(155, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_104(104, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(161=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_154(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(177, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(180, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(181, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(183, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(186, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_190(190, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(199, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(207, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(209, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(262, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(304, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_104(104, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_variables(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_103(103, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variables(155, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_156(156, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variables(304=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_305(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_annotation(63, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_64(64, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(193, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_194(194, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(196, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_197(197, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(219, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_220(220, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(284, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_285(285, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(311, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(321, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(322, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_application_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_arg_list(244=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_245(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_arg_list(267=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_268(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_arg_list(269=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_270(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_atomic_constant(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(85=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_atomic_literal(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(30=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_atomic_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_attribute(19, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(21, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_attribute(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(21, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_attribute_list(19, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_attribute_list(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_54(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_call_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_case_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_catch_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_218(218, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause_pattern(142, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_pattern(177, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_pattern(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_pattern(262, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cons(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cons_constant(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(85=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cons_literal(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(30=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cons_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_constant(65, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(72, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(83, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(79, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(85, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(90, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_88(88, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(92, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_constants(65, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_68(68, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constants(79, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_80(80, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constants(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_93(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_exported_name(6, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_9(9, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exported_name(14, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_9(9, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_exported_names(6, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_8(8, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exported_names(14=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expression(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(130, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_283(283, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_expr(96=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_97(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(99, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_309(309, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_definition(17, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_59(59, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definition(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_59(59, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definition(140, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_59(59, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definition(318, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_59(59, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_definitions(17=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_58(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definitions(59=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definitions(140, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_250(250, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definitions(318=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_58(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_name(6=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(14=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(17=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(59=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(61, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_62(62, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(140=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(318=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_let_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_let_vars(139, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_253(253, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_vars(152, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_153(153, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_vars(161, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_162(162, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_letrec_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_literal(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(30, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(43, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(36, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(38, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(40, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(38, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(46, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(51, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(48, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_49(49, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_literals(36, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literals(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_module_attribute(5, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_module_attribute(317, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_module_definition(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_1(1, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_module_defs(17, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_56(56, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_module_defs(318, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_module_export(4, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_module_export(316, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_5(317, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_nil(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(30=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(85=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_other_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_217(217, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(186, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_189(189, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_primop_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_receive_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_segment(287, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_289(289, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_segment(299, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_289(289, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_segment_pattern(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_224(224, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_segment_pattern(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_224(224, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_segment_patterns(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_223(223, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_segment_patterns(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_235(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_segments(287, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_288(288, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_segments(299=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_300(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_sequence(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_single_expression(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail(271=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_272(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail(278=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_279(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail_constant(83=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_84(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail_constant(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_91(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail_literal(43=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail_literal(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_52(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail_pattern(205=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_206(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail_pattern(212=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_213(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_timeout(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_166(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_timeout(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_239(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple_constant(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(85=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple_literal(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(30=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_variable(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(105, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_303(303, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(139=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(152=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(155=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(161=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_188(188, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(186, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_188(188, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(304=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr). - --compile({inline,yeccpars2_9_/1}). --file("core_parse.yrl", 89). -yeccpars2_9_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_10_/1}). --file("core_parse.yrl", 85). -yeccpars2_10_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_13_/1}). --file("core_parse.yrl", 288). -yeccpars2_13_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_var { name = { tok_val ( __1 ) , tok_val ( __3 ) } } - end | __Stack]. - --compile({inline,yeccpars2_15_/1}). --file("core_parse.yrl", 88). -yeccpars2_15_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_16_/1}). --file("core_parse.yrl", 86). -yeccpars2_16_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_17_/1}). --file("core_parse.yrl", 110). -yeccpars2_17_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_21_/1}). --file("core_parse.yrl", 97). -yeccpars2_21_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_22_/1}). --file("core_parse.yrl", 93). -yeccpars2_22_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_26_/1}). --file("core_parse.yrl", 252). -yeccpars2_26_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_27_/1}). --file("core_parse.yrl", 100). -yeccpars2_27_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { # c_literal { val = tok_val ( __1 ) } , __3 } - end | __Stack]. - --compile({inline,yeccpars2_31_/1}). --file("core_parse.yrl", 250). -yeccpars2_31_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_32_/1}). --file("core_parse.yrl", 247). -yeccpars2_32_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_33_/1}). --file("core_parse.yrl", 249). -yeccpars2_33_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_34_/1}). --file("core_parse.yrl", 248). -yeccpars2_34_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_35_/1}). --file("core_parse.yrl", 251). -yeccpars2_35_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_38_/1}). --file("core_parse.yrl", 245). -yeccpars2_38_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_39_/1}). --file("core_parse.yrl", 254). -yeccpars2_39_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( [ ] ) - end | __Stack]. - --compile({inline,yeccpars2_41_/1}). --file("core_parse.yrl", 244). -yeccpars2_41_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_42_/1}). --file("core_parse.yrl", 255). -yeccpars2_42_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( __2 ) - end | __Stack]. - --compile({inline,yeccpars2_44_/1}). --file("core_parse.yrl", 66). -yeccpars2_44_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { nil , tok_line ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_45_/1}). --file("core_parse.yrl", 257). -yeccpars2_45_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_cons ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_47_/1}). --file("core_parse.yrl", 259). -yeccpars2_47_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_50_/1}). --file("core_parse.yrl", 260). -yeccpars2_50_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_52_/1}). --file("core_parse.yrl", 261). -yeccpars2_52_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_cons { hd = __2 , tl = __3 } - end | __Stack]. - --compile({inline,yeccpars2_54_/1}). --file("core_parse.yrl", 96). -yeccpars2_54_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_55_/1}). --file("core_parse.yrl", 94). -yeccpars2_55_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - __3 - end | __Stack]. - --compile({inline,yeccpars2_59_/1}). --file("core_parse.yrl", 110). -yeccpars2_59_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_67_/1}). --file("core_parse.yrl", 135). -yeccpars2_67_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_69_/1}). --file("core_parse.yrl", 128). -yeccpars2_69_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_73_/1}). --file("core_parse.yrl", 104). -yeccpars2_73_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_74_/1}). --file("core_parse.yrl", 133). -yeccpars2_74_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_75_/1}). --file("core_parse.yrl", 130). -yeccpars2_75_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_76_/1}). --file("core_parse.yrl", 132). -yeccpars2_76_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_77_/1}). --file("core_parse.yrl", 131). -yeccpars2_77_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_78_/1}). --file("core_parse.yrl", 134). -yeccpars2_78_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_81_/1}). --file("core_parse.yrl", 137). -yeccpars2_81_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { } - end | __Stack]. - --compile({inline,yeccpars2_82_/1}). --file("core_parse.yrl", 138). -yeccpars2_82_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - list_to_tuple ( __2 ) - end | __Stack]. - --compile({inline,yeccpars2_84_/1}). --file("core_parse.yrl", 140). -yeccpars2_84_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __2 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_86_/1}). --file("core_parse.yrl", 142). -yeccpars2_86_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_89_/1}). --file("core_parse.yrl", 143). -yeccpars2_89_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_91_/1}). --file("core_parse.yrl", 144). -yeccpars2_91_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __2 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_93_/1}). --file("core_parse.yrl", 127). -yeccpars2_93_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_94_/1}). --file("core_parse.yrl", 105). -yeccpars2_94_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_95_/1}). --file("core_parse.yrl", 292). -yeccpars2_95_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_98_/1}). --file("core_parse.yrl", 114). -yeccpars2_98_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_104_/1}). --file("core_parse.yrl", 201). -yeccpars2_104_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_107_/1}). --file("core_parse.yrl", 198). -yeccpars2_107_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_var { name = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_128_/1}). --file("core_parse.yrl", 302). -yeccpars2_128_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_fun { vars = [ ] , body = __5 } - end | __Stack]. - --compile({inline,yeccpars2_134_/1}). --file("core_parse.yrl", 250). -yeccpars2_134_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_140_/1}). --file("core_parse.yrl", 110). -yeccpars2_140_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_146_/1}). --file("core_parse.yrl", 216). -yeccpars2_146_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_147_/1}). --file("core_parse.yrl", 263). -yeccpars2_147_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( [ ] ) - end | __Stack]. - --compile({inline,yeccpars2_149_/1}). --file("core_parse.yrl", 215). -yeccpars2_149_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_150_/1}). --file("core_parse.yrl", 264). -yeccpars2_150_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( __2 ) - end | __Stack]. - --compile({inline,yeccpars2_154_/1}). --file("core_parse.yrl", 294). -yeccpars2_154_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_157_/1}). --file("core_parse.yrl", 295). -yeccpars2_157_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_158_/1}). --file("core_parse.yrl", 296). -yeccpars2_158_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_164_/1}). --file("core_parse.yrl", 345). -yeccpars2_164_(__Stack0) -> - [__10,__9,__8,__7,__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - Len = length ( __8 ) , - if Len =:= 2 ; Len =:= 3 -> - # c_try { arg = __2 , vars = __4 , body = __6 , evars = __8 , handler = __10 } ; - true -> - return_error ( tok_line ( __7 ) , - "expected 2 or 3 exception variables in 'try'" ) - end - end | __Stack]. - --compile({inline,yeccpars2_166_/1}). --file("core_parse.yrl", 356). -yeccpars2_166_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { T , A } = __2 , - # c_receive { clauses = [ ] , timeout = T , action = A } - end | __Stack]. - --compile({inline,yeccpars2_175_/1}). --file("core_parse.yrl", 325). -yeccpars2_175_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_177_/1}). --file("core_parse.yrl", 316). -yeccpars2_177_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_185_/1}). --file("core_parse.yrl", 161). -yeccpars2_185_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_187_/1}). --file("core_parse.yrl", 172). -yeccpars2_187_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( [ ] ) - end | __Stack]. - --compile({inline,yeccpars2_192_/1}). --file("core_parse.yrl", 168). -yeccpars2_192_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_alias { var = __1 , pat = __3 } - end | __Stack]. - --compile({inline,yeccpars2_195_/1}). --file("core_parse.yrl", 156). -yeccpars2_195_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_198_/1}). --file("core_parse.yrl", 205). -yeccpars2_198_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_200_/1}). --file("core_parse.yrl", 160). -yeccpars2_200_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_201_/1}). --file("core_parse.yrl", 173). -yeccpars2_201_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( __2 ) - end | __Stack]. - --compile({inline,yeccpars2_204_/1}). --file("core_parse.yrl", 363). -yeccpars2_204_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , __4 } - end | __Stack]. - --compile({inline,yeccpars2_206_/1}). --file("core_parse.yrl", 176). -yeccpars2_206_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_cons { hd = __2 , tl = __3 } - end | __Stack]. - --compile({inline,yeccpars2_208_/1}). --file("core_parse.yrl", 178). -yeccpars2_208_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_211_/1}). --file("core_parse.yrl", 179). -yeccpars2_211_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_213_/1}). --file("core_parse.yrl", 181). -yeccpars2_213_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_cons { hd = __2 , tl = __3 } - end | __Stack]. - --compile({inline,yeccpars2_215_/1}). --file("core_parse.yrl", 326). -yeccpars2_215_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_216_/1}). --file("core_parse.yrl", 327). -yeccpars2_216_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_221_/1}). --file("core_parse.yrl", 320). -yeccpars2_221_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_224_/1}). --file("core_parse.yrl", 187). -yeccpars2_224_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_227_/1}). --file("core_parse.yrl", 183). -yeccpars2_227_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_binary { segments = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_233_/1}). --file("core_parse.yrl", 190). -yeccpars2_233_(__Stack0) -> - [__7,__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - case __6 of - [ S , U , T , Fs ] -> - # c_bitstr { val = __3 , size = S , unit = U , type = T , flags = Fs } ; - true -> - return_error ( tok_line ( __1 ) , - "expected 4 arguments in binary segment" ) - end - end | __Stack]. - --compile({inline,yeccpars2_235_/1}). --file("core_parse.yrl", 186). -yeccpars2_235_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_237_/1}). --file("core_parse.yrl", 184). -yeccpars2_237_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_binary { segments = __3 } - end | __Stack]. - --compile({inline,yeccpars2_238_/1}). --file("core_parse.yrl", 315). -yeccpars2_238_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __2 ] - end | __Stack]. - --compile({inline,yeccpars2_239_/1}). --file("core_parse.yrl", 359). -yeccpars2_239_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { T , A } = __3 , - # c_receive { clauses = __2 , timeout = T , action = A } - end | __Stack]. - --compile({inline,yeccpars2_243_/1}). --file("core_parse.yrl", 323). -yeccpars2_243_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_clause { pats = __1 , guard = __3 , body = __5 } - end | __Stack]. - --compile({inline,yeccpars2_245_/1}). --file("core_parse.yrl", 337). -yeccpars2_245_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_primop { name = __2 , args = __3 } - end | __Stack]. - --compile({inline,yeccpars2_248_/1}). --file("core_parse.yrl", 339). -yeccpars2_248_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_249_/1}). --file("core_parse.yrl", 340). -yeccpars2_249_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_252_/1}). --file("core_parse.yrl", 310). -yeccpars2_252_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_letrec { defs = __2 , body = __4 } - end | __Stack]. - --compile({inline,yeccpars2_257_/1}). --file("core_parse.yrl", 307). -yeccpars2_257_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_let { vars = __2 , arg = __4 , body = __6 } - end | __Stack]. - --compile({inline,yeccpars2_259_/1}). --file("core_parse.yrl", 299). -yeccpars2_259_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_seq { arg = __2 , body = __3 } - end | __Stack]. - --compile({inline,yeccpars2_260_/1}). --file("core_parse.yrl", 353). -yeccpars2_260_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - # c_catch { body = __2 } - end | __Stack]. - --compile({inline,yeccpars2_264_/1}). --file("core_parse.yrl", 313). -yeccpars2_264_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_case { arg = __2 , clauses = __4 } - end | __Stack]. - --compile({inline,yeccpars2_268_/1}). --file("core_parse.yrl", 334). -yeccpars2_268_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_call { module = __2 , name = __4 , args = __5 } - end | __Stack]. - --compile({inline,yeccpars2_270_/1}). --file("core_parse.yrl", 330). -yeccpars2_270_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_apply { op = __2 , args = __3 } - end | __Stack]. - --compile({inline,yeccpars2_272_/1}). --file("core_parse.yrl", 266). -yeccpars2_272_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_cons ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_274_/1}). --file("core_parse.yrl", 268). -yeccpars2_274_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_277_/1}). --file("core_parse.yrl", 269). -yeccpars2_277_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_279_/1}). --file("core_parse.yrl", 270). -yeccpars2_279_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_cons ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_281_/1}). --file("core_parse.yrl", 218). -yeccpars2_281_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - # c_values { es = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_282_/1}). --file("core_parse.yrl", 219). -yeccpars2_282_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_values { es = __2 } - end | __Stack]. - --compile({inline,yeccpars2_286_/1}). --file("core_parse.yrl", 213). -yeccpars2_286_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_289_/1}). --file("core_parse.yrl", 276). -yeccpars2_289_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_292_/1}). --file("core_parse.yrl", 272). -yeccpars2_292_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_literal { val = << >> } - end | __Stack]. - --compile({inline,yeccpars2_298_/1}). --file("core_parse.yrl", 279). -yeccpars2_298_(__Stack0) -> - [__7,__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - case __6 of - [ S , U , T , Fs ] -> - # c_bitstr { val = __3 , size = S , unit = U , type = T , flags = Fs } ; - true -> - return_error ( tok_line ( __1 ) , - "expected 4 arguments in binary segment" ) - end - end | __Stack]. - --compile({inline,yeccpars2_300_/1}). --file("core_parse.yrl", 275). -yeccpars2_300_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_302_/1}). --file("core_parse.yrl", 273). -yeccpars2_302_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_binary { segments = __3 } - end | __Stack]. - --compile({inline,yeccpars2_305_/1}). --file("core_parse.yrl", 200). -yeccpars2_305_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_308_/1}). --file("core_parse.yrl", 304). -yeccpars2_308_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_fun { vars = __3 , body = __6 } - end | __Stack]. - --compile({inline,yeccpars2_312_/1}). --file("core_parse.yrl", 117). -yeccpars2_312_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_313_/1}). --file("core_parse.yrl", 108). -yeccpars2_313_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __2 ] - end | __Stack]. - --compile({inline,yeccpars2_314_/1}). --file("core_parse.yrl", 77). -yeccpars2_314_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_module { name = # c_literal { val = tok_val ( __2 ) } , exports = __3 , - attrs = __4 , defs = __5 } - end | __Stack]. - --compile({inline,yeccpars2_318_/1}). --file("core_parse.yrl", 110). -yeccpars2_318_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_323_/1}). --file("core_parse.yrl", 82). -yeccpars2_323_(__Stack0) -> - [__10,__9,__8,__7,__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_module { anno = __9 , name = tok_val ( __3 ) , exports = __4 , - attrs = __5 , defs = __6 } - end | __Stack]. - - --file("core_parse.yrl", 384). diff --git a/bootstrap/lib/kernel/ebin/kernel.app b/bootstrap/lib/kernel/ebin/kernel.app deleted file mode 100644 index 9b5bff5033..0000000000 --- a/bootstrap/lib/kernel/ebin/kernel.app +++ /dev/null @@ -1,120 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% This is an -*- erlang -*- file. -%% -{application, kernel, - [ - {description, "ERTS CXC 138 10"}, - {vsn, "2.14.4"}, - {modules, [application, - application_controller, - application_master, - application_starter, - auth, - code, - packages, - code_server, - dist_util, - erl_boot_server, - erl_distribution, - erl_reply, - error_handler, - error_logger, - file, - file_server, - file_io_server, - global, - global_group, - global_search, - group, - heart, - hipe_unified_loader, - inet6_tcp, - inet6_tcp_dist, - inet6_udp, - inet6_sctp, - inet_config, - inet_hosts, - inet_gethost_native, - inet_tcp_dist, - kernel, - kernel_config, - net, - net_adm, - net_kernel, - os, - ram_file, - rpc, - user, - user_drv, - user_sup, - disk_log, - disk_log_1, - disk_log_server, - disk_log_sup, - dist_ac, - erl_ddll, - erl_epmd, - erts_debug, - gen_tcp, - gen_udp, - gen_sctp, - inet, - inet_db, - inet_dns, - inet_parse, - inet_res, - inet_tcp, - inet_udp, - inet_sctp, - pg2, - seq_trace, - standard_error, - wrap_log_reader]}, - {registered, [application_controller, - erl_reply, - auth, - boot_server, - code_server, - disk_log_server, - disk_log_sup, - erl_prim_loader, - error_logger, - file_server_2, - fixtable_server, - global_group, - global_name_server, - heart, - init, - kernel_config, - kernel_sup, - net_kernel, - net_sup, - rex, - user, - os_server, - ddll_server, - erl_epmd, - inet_db, - pg2]}, - {applications, []}, - {env, [{error_logger, tty}]}, - {mod, {kernel, []}} - ] -}. diff --git a/bootstrap/lib/kernel/ebin/kernel.appup b/bootstrap/lib/kernel/ebin/kernel.appup deleted file mode 100644 index f287e992f1..0000000000 --- a/bootstrap/lib/kernel/ebin/kernel.appup +++ /dev/null @@ -1 +0,0 @@ -{"2.14.3",[],[]}. diff --git a/bootstrap/lib/kernel/egen/.gitignore b/bootstrap/lib/kernel/egen/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 --- a/bootstrap/lib/kernel/egen/.gitignore +++ /dev/null diff --git a/bootstrap/lib/orber/include/Makefile b/bootstrap/lib/orber/include/Makefile deleted file mode 100644 index 5aaeed1015..0000000000 --- a/bootstrap/lib/orber/include/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1998-2011. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -# -# -include $(ERL_TOP)/make/target.mk - -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Application version -# ---------------------------------------------------- -include ../vsn.mk -VSN=$(ORBER_VSN) - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/orber-$(VSN) - -# ---------------------------------------------------- -# Target Specs -# ---------------------------------------------------- - -EXTERNAL_HRL_FILES= ../include/corba.hrl \ - ../include/ifr_types.hrl \ - ../include/orber_pi.hrl - -# ---------------------------------------------------- -# FLAGS -# ---------------------------------------------------- - -# ---------------------------------------------------- -# Targets -# ---------------------------------------------------- -debug opt clean docs: - - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - - -release_spec: opt - $(INSTALL_DIR) $(RELSYSDIR)/include - $(INSTALL_DATA) $(EXTERNAL_HRL_FILES) $(RELSYSDIR)/include - - -release_docs_spec: - - diff --git a/bootstrap/lib/orber/include/corba.hrl b/bootstrap/lib/orber/include/corba.hrl deleted file mode 100644 index 526662d59d..0000000000 --- a/bootstrap/lib/orber/include/corba.hrl +++ /dev/null @@ -1,148 +0,0 @@ -%%-------------------------------------------------------------------- -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% -%%------------------------------------------------------------ -%% File: corba.hrl -%% -%% Description: -%% Standard header file for the Orber Erlang CORBA environment -%% -%%----------------------------------------------------------------- --ifndef(corba_hrl). --define(corba_hrl, true). - -%% -%% Implementation repository record (not used and can therefor be changed) -%% --record(orb_ImplDef, {node, module, typename, start=start, args=[[]], pid}). - -%% -%% Any record -%% --record(any, {typecode, value}). - -%% -%% Any record -%% --record(fixed, {digits, scale, value}). - -%% -%% Service context record -%% --record('IOP_ServiceContext', {context_id, context_data}). - -%% -%% Exception recod for the resolve initial reference functions -%% --record('InvalidName', {'OE_ID'="IDL:omg.org/CORBA/ORB/InvalidName:1.0"}). - -%% Orber OMG assigned TAG's -%% Service Context IDs 0x45524904 - 0x45524907 ("ERI\x04" - "ERI\x07") -%% Component IDs 0x45524904 - 0x45524907 ("ERI\x04" - "ERI\x07") -%% ORB type IDs 0x45524904 - 0x45524907 ("ERI\x04" - "ERI\x07") --define(ORBER_ORB_TYPE_1, 16#45524904). -%-define(ORBER_ORB_TYPE_2, 16#45524905). -%-define(ORBER_ORB_TYPE_3, 16#45524906). -%-define(ORBER_ORB_TYPE_4, 16#45524907). - -%-define(ORBER_COMPONENT_1, 16#45524904). -%-define(ORBER_COMPONENT_2, 16#45524905). -%-define(ORBER_COMPONENT_3, 16#45524906). -%-define(ORBER_COMPONENT_4, 16#45524907). - --define(ORBER_GENERIC_CTX_ID, 16#45524904). -%-define(ORBER_SERVICE_CTX_2, 16#45524905). -%-define(ORBER_SERVICE_CTX_3, 16#45524906). -%-define(ORBER_SERVICE_CTX_4, 16#45524907). - -%% -%% System exceptions -%% - -%% VMCID -%% VMCID base assigned to OMG --define(CORBA_OMGVMCID, 16#4f4d0000). - -%% Orber's VMCID base - "ER\x00\x00" - "ER\x0f\xff". -%% Range 16#45520000 -> 16#45520fff --define(ORBER_VMCID, 16#45520000). - -%% Some other Vendors VMCID bases. --define(IONA_VMCID_1, 16#4f4f0000). --define(IONA_VMCID_2, 16#49540000). --define(SUN_VMCID, 16#53550000). --define(BORLAND_VMCID, 16#56420000). --define(TAO_VMCID, 16#54410000). --define(PRISMTECH_VMCID,16#50540000). - --define(ex_body, {'OE_ID'="", minor=?ORBER_VMCID, completion_status}). - --record('UNKNOWN', ?ex_body). --record('BAD_PARAM', ?ex_body). --record('NO_MEMORY', ?ex_body). --record('IMP_LIMIT', ?ex_body). --record('COMM_FAILURE', ?ex_body). --record('INV_OBJREF', ?ex_body). --record('NO_PERMISSION', ?ex_body). --record('INTERNAL', ?ex_body). --record('MARSHAL', ?ex_body). --record('INITIALIZE', ?ex_body). --record('NO_IMPLEMENT', ?ex_body). --record('BAD_TYPECODE', ?ex_body). --record('BAD_OPERATION', ?ex_body). --record('NO_RESOURCES', ?ex_body). --record('NO_RESPONSE', ?ex_body). --record('PERSIST_STORE', ?ex_body). --record('BAD_INV_ORDER', ?ex_body). --record('TRANSIENT', ?ex_body). --record('FREE_MEM', ?ex_body). --record('INV_IDENT', ?ex_body). --record('INV_FLAG', ?ex_body). --record('INTF_REPOS', ?ex_body). --record('BAD_CONTEXT', ?ex_body). --record('OBJ_ADAPTER', ?ex_body). --record('DATA_CONVERSION', ?ex_body). --record('OBJECT_NOT_EXIST', ?ex_body). --record('TRANSACTION_REQUIRED', ?ex_body). --record('TRANSACTION_ROLLEDBACK', ?ex_body). --record('INVALID_TRANSACTION', ?ex_body). --record('INV_POLICY', ?ex_body). --record('CODESET_INCOMPATIBLE', ?ex_body). --record('REBIND', ?ex_body). --record('TIMEOUT', ?ex_body). --record('TRANSACTION_UNAVAILABLE', ?ex_body). --record('TRANSACTION_MODE', ?ex_body). --record('BAD_QOS', ?ex_body). - -%% Defines for the enum exception_type (is also used for reply_status) --define(NO_EXCEPTION, 'no_exception'). --define(USER_EXCEPTION, 'user_exception'). --define(SYSTEM_EXCEPTION, 'system_exception'). - -%% Defines for the enum completion_status. --define(COMPLETED_YES, 'COMPLETED_YES'). --define(COMPLETED_NO, 'COMPLETED_NO'). --define(COMPLETED_MAYBE, 'COMPLETED_MAYBE'). - - --undef(ex_body). - - --endif. diff --git a/bootstrap/lib/orber/include/ifr_types.hrl b/bootstrap/lib/orber/include/ifr_types.hrl deleted file mode 100644 index 324b32bd4f..0000000000 --- a/bootstrap/lib/orber/include/ifr_types.hrl +++ /dev/null @@ -1,72 +0,0 @@ -%%-------------------------------------------------------------------- -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% -%%---------------------------------------------------------------------- -%% File : ifr_types.hrl -%% Purpose : Record definitions for structs used in the interface repository -%%---------------------------------------------------------------------- - - -%%%---------------------------------------------------------------------- -%%% ********************************************************************* -%%% * * -%%% * PLEASE NOTE * -%%% * * -%%% * If a record is removed or added in this file, select/2 in * -%%% * orber_ifr.erl _MUST_ be updated accordingly. * -%%% * * -%%% ********************************************************************* -%%%---------------------------------------------------------------------- - --record(contained_description, {kind, value}). - --record(structmember, {name, type, type_def}). - --record(unionmember, {name, label, type, type_def}). - --record(container_description, {contained_object, kind, value}). - --record(moduledescription, {name, id, defined_in, version}). - --record(constantdescription, {name, id, defined_in, version, type, value}). - --record(typedescription, {name, id, defined_in, version, type}). - --define(make_typedescription(Obj,Object_type), - #typedescription{name = Obj#Object_type.name, - id = Obj#Object_type.id, - defined_in = Obj#Object_type.defined_in, - version = Obj#Object_type.version, - type = Obj#Object_type.type}). - --record(exceptiondescription, {name, id, defined_in, version, type}). - --record(attributedescription, {name, id, defined_in, version, type, mode}). - --record(parameterdescription, {name, type, type_def, mode}). - --record(operationdescription, {name, id, defined_in, version, result, mode, - contexts, parameters, exceptions}). - --record(fullinterfacedescription, {name, id, defined_in, version, operations, - attributes, base_interfaces, type}). - --record(interfacedescription, {name, id, defined_in, version, - base_interfaces}). diff --git a/bootstrap/lib/orber/include/orber_pi.hrl b/bootstrap/lib/orber/include/orber_pi.hrl deleted file mode 100644 index 69f14a5165..0000000000 --- a/bootstrap/lib/orber/include/orber_pi.hrl +++ /dev/null @@ -1,76 +0,0 @@ -%%---------------------------------------------------------------------- -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2000-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% -%%---------------------------------------------------------------------- -%% File : orber_pi.hrl -%% Purpose : -%%---------------------------------------------------------------------- - -%%=============== CONSTANTS ================================== -%%-------- PortableInterceptor::Interceptor (local) ---------- -%% Reply Status --define('PortableInterceptor_SUCCESSFUL', 0). --define('PortableInterceptor_SYSTEM_EXCEPTION', 1). --define('PortableInterceptor_USER_EXCEPTION', 2). --define('PortableInterceptor_LOCATION_FORWARD', 3). --define('PortableInterceptor_LOCATION_FORWARD_PERMANENT', 4). --define('PortableInterceptor_TRANSPORT_RETRY', 5). - - -%%=============== EXCEPTIONS ================================= -%%-------- PortableInterceptor::Interceptor (local) ---------- -%% forward eq. CORBA::Object, premanent eq. boolean --record('PortableInterceptor_ForwardRequest', {'OE_ID'="local", forward, permanent}). --record('PortableInterceptor_InvalidSlot', {'OE_ID'="local"}). - -%%--------------- IOP_N::Codec (local) ----------------------- --record('IOP_N_Codec_InvalidTypeForEncoding', {'OE_ID'="local"}). --record('IOP_N_Codec_FormatMismatch', {'OE_ID'="local"}). --record('IOP_N_Codec_TypeMismatch', {'OE_ID'="local"}). - -%%--------------- IOP_N (Module level) ----------------------- --define('IOP_N_ENCODING_CDR_ENCAPS', 0). - -%%--------------- IOP_N::CodecFactory (Module level) --------- --record('IOP_N_CodecFactory_UnknownEncoding', {'OE_ID'="local"}). - -%%--------------- IOP_N::ORBInitInfo (Module level) ---------- -%% name eq. string() --record('PortableInterceptor_ORBInitInfo_DuplicateName', {'OE_ID'="local", name}). --record('PortableInterceptor_ORBInitInfo_InvalidName', {'OE_ID'="local"}). - - -%%=============== DATA STRUCTURES ============================ -%%--------------- IOP_N (Module level) ----------------------- --record('IOP_N_Encoding', - {format, %% Currently only 'IOP_N_ENCODING_CDR_ENCAPS' allowed. - major_version, %% 1 only - minor_version}). %% 0,1 or 2 - - -%%--------------- Dynamic (Module level) --------------------- -%% argument eq. #any{}, -%% mode eq. CORBA::ParameterMode - PARAM_IN, PARAM_OUT, PARAM_INOUT. --record('Dynamic_Parameter', - {argument, - mode}). - -%%--------------- END OF MODULE ------------------------------ - diff --git a/bootstrap/lib/stdlib/ebin/stdlib.app b/bootstrap/lib/stdlib/ebin/stdlib.app deleted file mode 100644 index bcce209e27..0000000000 --- a/bootstrap/lib/stdlib/ebin/stdlib.app +++ /dev/null @@ -1,106 +0,0 @@ -%% This is an -*- erlang -*- file. -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -{application, stdlib, - [{description, "ERTS CXC 138 10"}, - {vsn, "1.17.4"}, - {modules, [array, - base64, - beam_lib, - binary, - c, - calendar, - dets, - dets_server, - dets_sup, - dets_utils, - dets_v8, - dets_v9, - dict, - digraph, - digraph_utils, - edlin, - edlin_expand, - epp, - eval_bits, - erl_bits, - erl_compile, - erl_eval, - erl_expand_records, - erl_internal, - erl_lint, - erl_parse, - erl_posix_msg, - erl_pp, - erl_scan, - erl_tar, - error_logger_file_h, - error_logger_tty_h, - escript, - ets, - file_sorter, - filelib, - filename, - gb_trees, - gb_sets, - gen, - gen_event, - gen_fsm, - gen_server, - io, - io_lib, - io_lib_format, - io_lib_fread, - io_lib_pretty, - lib, - lists, - log_mf_h, - math, - ms_transform, - orddict, - ordsets, - otp_internal, - pg, - pool, - proc_lib, - proplists, - qlc, - qlc_pt, - queue, - random, - re, - regexp, - sets, - shell, - shell_default, - slave, - sofs, - string, - supervisor, - supervisor_bridge, - sys, - timer, - unicode, - win32reg, - zip]}, - {registered,[timer_server,rsh_starter,take_over_monitor,pool_master, - dets]}, - {applications, [kernel]}, - {env, []}]}. - diff --git a/bootstrap/lib/stdlib/ebin/stdlib.appup b/bootstrap/lib/stdlib/ebin/stdlib.appup deleted file mode 100644 index 1b03a40251..0000000000 --- a/bootstrap/lib/stdlib/ebin/stdlib.appup +++ /dev/null @@ -1 +0,0 @@ -{"1.17.3",[],[]}. diff --git a/bootstrap/lib/stdlib/egen/erl_parse.erl b/bootstrap/lib/stdlib/egen/erl_parse.erl deleted file mode 100644 index 97952dcb46..0000000000 --- a/bootstrap/lib/stdlib/egen/erl_parse.erl +++ /dev/null @@ -1,9680 +0,0 @@ --module(erl_parse). --export([parse/1, parse_and_scan/1, format_error/1]). --file("erl_parse.yrl", 502). - --export([parse_form/1,parse_exprs/1,parse_term/1]). --export([normalise/1,abstract/1,tokens/1,tokens/2]). --export([abstract/2, package_segments/1]). --export([inop_prec/1,preop_prec/1,func_prec/0,max_prec/0]). --export([set_line/2,get_attribute/2,get_attributes/1]). - -%% The following directive is needed for (significantly) faster compilation -%% of the generated .erl file by the HiPE compiler. Please do not remove. --compile([{hipe,[{regalloc,linear_scan}]}]). - --export_type([abstract_clause/0, abstract_expr/0, abstract_form/0, - error_info/0]). - --type abstract_clause() :: term(). --type abstract_expr() :: term(). --type abstract_form() :: term(). --type error_description() :: term(). --type error_info() :: {erl_scan:line(), module(), error_description()}. --type token() :: {Tag :: atom(), Line :: erl_scan:line()}. - -%% mkop(Op, Arg) -> {op,Line,Op,Arg}. -%% mkop(Left, Op, Right) -> {op,Line,Op,Left,Right}. - --define(mkop2(L, OpPos, R), - begin - {Op,Pos} = OpPos, - {op,Pos,Op,L,R} - end). - --define(mkop1(OpPos, A), - begin - {Op,Pos} = OpPos, - {op,Pos,Op,A} - end). - -%% keep track of line info in tokens --define(line(Tup), element(2, Tup)). - -%% Entry points compatible to old erl_parse. -%% These really suck and are only here until Calle gets multiple -%% entry points working. - --spec parse_form(Tokens) -> {ok, AbsForm} | {error, ErrorInfo} when - Tokens :: [token()], - AbsForm :: abstract_form(), - ErrorInfo :: error_info(). -parse_form([{'-',L1},{atom,L2,spec}|Tokens]) -> - parse([{'-',L1},{'spec',L2}|Tokens]); -parse_form(Tokens) -> - parse(Tokens). - --spec parse_exprs(Tokens) -> {ok, ExprList} | {error, ErrorInfo} when - Tokens :: [token()], - ExprList :: [abstract_expr()], - ErrorInfo :: error_info(). -parse_exprs(Tokens) -> - case parse([{atom,0,f},{'(',0},{')',0},{'->',0}|Tokens]) of - {ok,{function,_Lf,f,0,[{clause,_Lc,[],[],Exprs}]}} -> - {ok,Exprs}; - {error,_} = Err -> Err - end. - --spec parse_term(Tokens) -> {ok, Term} | {error, ErrorInfo} when - Tokens :: [token()], - Term :: term(), - ErrorInfo :: error_info(). -parse_term(Tokens) -> - case parse([{atom,0,f},{'(',0},{')',0},{'->',0}|Tokens]) of - {ok,{function,_Lf,f,0,[{clause,_Lc,[],[],[Expr]}]}} -> - try normalise(Expr) of - Term -> {ok,Term} - catch - _:_R -> {error,{?line(Expr),?MODULE,"bad term"}} - end; - {ok,{function,_Lf,f,0,[{clause,_Lc,[],[],[_E1,E2|_Es]}]}} -> - {error,{?line(E2),?MODULE,"bad term"}}; - {error,_} = Err -> Err - end. - --type attributes() :: 'export' | 'file' | 'import' | 'module' - | 'opaque' | 'record' | 'type'. - -build_typed_attribute({atom,La,record}, - {typed_record, {atom,_Ln,RecordName}, RecTuple}) -> - {attribute,La,record,{RecordName,record_tuple(RecTuple)}}; -build_typed_attribute({atom,La,Attr}, - {type_def, {call,_,{atom,_,TypeName},Args}, Type}) - when Attr =:= 'type' ; Attr =:= 'opaque' -> - case lists:all(fun({var, _, _}) -> true; - (_) -> false - end, Args) of - true -> {attribute,La,Attr,{TypeName,Type,Args}}; - false -> error_bad_decl(La, Attr) - end; -build_typed_attribute({atom,La,Attr},_) -> - case Attr of - record -> error_bad_decl(La, record); - type -> error_bad_decl(La, type); - opaque -> error_bad_decl(La, opaque); - _ -> ret_err(La, "bad attribute") - end. - -build_type_spec({spec,La}, {SpecFun, TypeSpecs}) -> - NewSpecFun = - case SpecFun of - {atom, _, Fun} -> - {Fun, find_arity_from_specs(TypeSpecs)}; - {{atom,_, Mod}, {atom,_, Fun}} -> - {Mod,Fun,find_arity_from_specs(TypeSpecs)}; - {{atom, _, Fun}, {integer, _, Arity}} -> - %% Old style spec. Allow this for now. - {Fun,Arity}; - {{atom,_, Mod}, {atom, _, Fun}, {integer, _, Arity}} -> - %% Old style spec. Allow this for now. - {Mod,Fun,Arity} - end, - {attribute,La,spec,{NewSpecFun, TypeSpecs}}. - -find_arity_from_specs([Spec|_]) -> - %% Use the first spec to find the arity. If all are not the same, - %% erl_lint will find this. - Fun = case Spec of - {type, _, bounded_fun, [F, _]} -> F; - {type, _, 'fun', _} = F -> F - end, - {type, _, 'fun', [{type, _, product, Args},_]} = Fun, - length(Args). - -build_def(LHS, Types) -> - IsSubType = {atom, ?line(LHS), is_subtype}, - {type, ?line(LHS), constraint, [IsSubType, [LHS, Types]]}. - -lift_unions(T1, {type, _La, union, List}) -> - {type, ?line(T1), union, [T1|List]}; -lift_unions(T1, T2) -> - {type, ?line(T1), union, [T1, T2]}. - -skip_paren({paren_type,_L,[Type]}) -> - skip_paren(Type); -skip_paren(Type) -> - Type. - -build_gen_type({atom, La, tuple}) -> - {type, La, tuple, any}; -build_gen_type({atom, La, Name}) -> - {type, La, Name, []}. - -build_bin_type([{var, _, '_'}|Left], Int) -> - build_bin_type(Left, Int); -build_bin_type([], Int) -> - skip_paren(Int); -build_bin_type([{var, La, _}|_], _) -> - ret_err(La, "Bad binary type"). - -%% build_attribute(AttrName, AttrValue) -> -%% {attribute,Line,module,Module} -%% {attribute,Line,export,Exports} -%% {attribute,Line,import,Imports} -%% {attribute,Line,record,{Name,Inits}} -%% {attribute,Line,file,{Name,Line}} -%% {attribute,Line,Name,Val} - -build_attribute({atom,La,module}, Val) -> - case Val of - [{atom,_Lm,Module}] -> - {attribute,La,module,Module}; - [{atom,_Lm,Module},ExpList] -> - {attribute,La,module,{Module,var_list(ExpList)}}; - [Name] -> - case package_segments(Name) of - error -> - error_bad_decl(La, module); - Module -> - {attribute,La,module,Module} - end; - [Name,ExpList] -> - case package_segments(Name) of - error -> - error_bad_decl(La, module); - Module -> - {attribute,La,module,{Module,var_list(ExpList)}} - end; - _Other -> - error_bad_decl(La, module) - end; -build_attribute({atom,La,export}, Val) -> - case Val of - [ExpList] -> - {attribute,La,export,farity_list(ExpList)}; - _Other -> error_bad_decl(La, export) - end; -build_attribute({atom,La,import}, Val) -> - case Val of - [Name] -> - case package_segments(Name) of - error -> - error_bad_decl(La, import); - Module -> - {attribute,La,import,Module} - end; - [{atom,_Lm,Mod},ImpList] -> - {attribute,La,import,{Mod,farity_list(ImpList)}}; - [Name, ImpList] -> - case package_segments(Name) of - error -> - error_bad_decl(La, import); - Module -> - {attribute,La,import,{Module,farity_list(ImpList)}} - end; - _Other -> error_bad_decl(La, import) - end; -build_attribute({atom,La,record}, Val) -> - case Val of - [{atom,_Ln,Record},RecTuple] -> - {attribute,La,record,{Record,record_tuple(RecTuple)}}; - _Other -> error_bad_decl(La, record) - end; -build_attribute({atom,La,file}, Val) -> - case Val of - [{string,_Ln,Name},{integer,_Ll,Line}] -> - {attribute,La,file,{Name,Line}}; - _Other -> error_bad_decl(La, file) - end; -build_attribute({atom,La,Attr}, Val) -> - case Val of - [Expr0] -> - Expr = attribute_farity(Expr0), - {attribute,La,Attr,term(Expr)}; - _Other -> ret_err(La, "bad attribute") - end. - -var_list({cons,_Lc,{var,_,V},Tail}) -> - [V|var_list(Tail)]; -var_list({nil,_Ln}) -> []; -var_list(Other) -> - ret_err(?line(Other), "bad variable list"). - -attribute_farity({cons,L,H,T}) -> - {cons,L,attribute_farity(H),attribute_farity(T)}; -attribute_farity({tuple,L,Args0}) -> - Args = attribute_farity_list(Args0), - {tuple,L,Args}; -attribute_farity({op,L,'/',{atom,_,_}=Name,{integer,_,_}=Arity}) -> - {tuple,L,[Name,Arity]}; -attribute_farity(Other) -> Other. - -attribute_farity_list(Args) -> - [attribute_farity(A) || A <- Args]. - --spec error_bad_decl(integer(), attributes()) -> no_return(). - -error_bad_decl(L, S) -> - ret_err(L, io_lib:format("bad ~w declaration", [S])). - -farity_list({cons,_Lc,{op,_Lo,'/',{atom,_La,A},{integer,_Li,I}},Tail}) -> - [{A,I}|farity_list(Tail)]; -farity_list({nil,_Ln}) -> []; -farity_list(Other) -> - ret_err(?line(Other), "bad function arity"). - -record_tuple({tuple,_Lt,Fields}) -> - record_fields(Fields); -record_tuple(Other) -> - ret_err(?line(Other), "bad record declaration"). - -record_fields([{atom,La,A}|Fields]) -> - [{record_field,La,{atom,La,A}}|record_fields(Fields)]; -record_fields([{match,_Lm,{atom,La,A},Expr}|Fields]) -> - [{record_field,La,{atom,La,A},Expr}|record_fields(Fields)]; -record_fields([{typed,Expr,TypeInfo}|Fields]) -> - [Field] = record_fields([Expr]), - TypeInfo1 = - case Expr of - {match, _, _, _} -> TypeInfo; %% If we have an initializer. - {atom, La, _} -> - case has_undefined(TypeInfo) of - false -> - TypeInfo2 = maybe_add_paren(TypeInfo), - lift_unions(abstract(undefined, La), TypeInfo2); - true -> - TypeInfo - end - end, - [{typed_record_field,Field,TypeInfo1}|record_fields(Fields)]; -record_fields([Other|_Fields]) -> - ret_err(?line(Other), "bad record field"); -record_fields([]) -> []. - -has_undefined({atom,_,undefined}) -> - true; -has_undefined({ann_type,_,[_,T]}) -> - has_undefined(T); -has_undefined({paren_type,_,[T]}) -> - has_undefined(T); -has_undefined({type,_,union,Ts}) -> - lists:any(fun has_undefined/1, Ts); -has_undefined(_) -> - false. - -maybe_add_paren({ann_type,L,T}) -> - {paren_type,L,[{ann_type,L,T}]}; -maybe_add_paren(T) -> - T. - -term(Expr) -> - try normalise(Expr) - catch _:_R -> ret_err(?line(Expr), "bad attribute") - end. - -package_segments(Name) -> - package_segments(Name, [], []). - -package_segments({record_field, _, F1, F2}, Fs, As) -> - package_segments(F1, [F2 | Fs], As); -package_segments({atom, _, A}, [F | Fs], As) -> - package_segments(F, Fs, [A | As]); -package_segments({atom, _, A}, [], As) -> - lists:reverse([A | As]); -package_segments(_, _, _) -> - error. - -%% build_function([Clause]) -> {function,Line,Name,Arity,[Clause]} - -build_function(Cs) -> - Name = element(3, hd(Cs)), - Arity = length(element(4, hd(Cs))), - {function,?line(hd(Cs)),Name,Arity,check_clauses(Cs, Name, Arity)}. - -%% build_rule([Clause]) -> {rule,Line,Name,Arity,[Clause]'} - -build_rule(Cs) -> - Name = element(3, hd(Cs)), - Arity = length(element(4, hd(Cs))), - {rule,?line(hd(Cs)),Name,Arity,check_clauses(Cs, Name, Arity)}. - -%% build_fun(Line, [Clause]) -> {'fun',Line,{clauses,[Clause]}}. - -build_fun(Line, Cs) -> - Arity = length(element(4, hd(Cs))), - {'fun',Line,{clauses,check_clauses(Cs, 'fun', Arity)}}. - -check_clauses(Cs, Name, Arity) -> - mapl(fun ({clause,L,N,As,G,B}) when N =:= Name, length(As) =:= Arity -> - {clause,L,As,G,B}; - ({clause,L,_N,_As,_G,_B}) -> - ret_err(L, "head mismatch") end, Cs). - -build_try(L,Es,Scs,{Ccs,As}) -> - {'try',L,Es,Scs,Ccs,As}. - --spec ret_err(_, _) -> no_return(). -ret_err(L, S) -> - {location,Location} = get_attribute(L, location), - return_error(Location, S). - -%% mapl(F,List) -%% an alternative map which always maps from left to right -%% and makes it possible to interrupt the mapping with throw on -%% the first occurence from left as expected. -%% can be removed when the jam machine (and all other machines) -%% uses the standardized (Erlang 5.0) evaluation order (from left to right) -mapl(F, [H|T]) -> - V = F(H), - [V | mapl(F,T)]; -mapl(_, []) -> - []. - -%% Convert between the abstract form of a term and a term. - --spec normalise(AbsTerm) -> Data when - AbsTerm :: abstract_expr(), - Data :: term(). -normalise({char,_,C}) -> C; -normalise({integer,_,I}) -> I; -normalise({float,_,F}) -> F; -normalise({atom,_,A}) -> A; -normalise({string,_,S}) -> S; -normalise({nil,_}) -> []; -normalise({bin,_,Fs}) -> - {value, B, _} = - eval_bits:expr_grp(Fs, [], - fun(E, _) -> - {value, normalise(E), []} - end, [], true), - B; -normalise({cons,_,Head,Tail}) -> - [normalise(Head)|normalise(Tail)]; -normalise({tuple,_,Args}) -> - list_to_tuple(normalise_list(Args)); -%% Atom dot-notation, as in 'foo.bar.baz' -normalise({record_field,_,_,_}=A) -> - case package_segments(A) of - error -> erlang:error({badarg, A}); - As -> list_to_atom(packages:concat(As)) - end; -%% Special case for unary +/-. -normalise({op,_,'+',{char,_,I}}) -> I; -normalise({op,_,'+',{integer,_,I}}) -> I; -normalise({op,_,'+',{float,_,F}}) -> F; -normalise({op,_,'-',{char,_,I}}) -> -I; %Weird, but compatible! -normalise({op,_,'-',{integer,_,I}}) -> -I; -normalise({op,_,'-',{float,_,F}}) -> -F; -normalise(X) -> erlang:error({badarg, X}). - -normalise_list([H|T]) -> - [normalise(H)|normalise_list(T)]; -normalise_list([]) -> - []. - --spec abstract(Data) -> AbsTerm when - Data :: term(), - AbsTerm :: abstract_expr(). -abstract(T) when is_integer(T) -> {integer,0,T}; -abstract(T) when is_float(T) -> {float,0,T}; -abstract(T) when is_atom(T) -> {atom,0,T}; -abstract([]) -> {nil,0}; -abstract(B) when is_bitstring(B) -> - {bin, 0, [abstract_byte(Byte, 0) || Byte <- bitstring_to_list(B)]}; -abstract([C|T]) when is_integer(C), 0 =< C, C < 256 -> - abstract_string(T, [C]); -abstract([H|T]) -> - {cons,0,abstract(H),abstract(T)}; -abstract(Tuple) when is_tuple(Tuple) -> - {tuple,0,abstract_list(tuple_to_list(Tuple))}. - -abstract_string([C|T], String) when is_integer(C), 0 =< C, C < 256 -> - abstract_string(T, [C|String]); -abstract_string([], String) -> - {string, 0, lists:reverse(String)}; -abstract_string(T, String) -> - not_string(String, abstract(T)). - -not_string([C|T], Result) -> - not_string(T, {cons, 0, {integer, 0, C}, Result}); -not_string([], Result) -> - Result. - -abstract_list([H|T]) -> - [abstract(H)|abstract_list(T)]; -abstract_list([]) -> - []. - -abstract_byte(Byte, Line) when is_integer(Byte) -> - {bin_element, Line, {integer, Line, Byte}, default, default}; -abstract_byte(Bits, Line) -> - Sz = bit_size(Bits), - <<Val:Sz>> = Bits, - {bin_element, Line, {integer, Line, Val}, {integer, Line, Sz}, default}. - -%%% abstract/2 keeps the line number -abstract(T, Line) when is_integer(T) -> {integer,Line,T}; -abstract(T, Line) when is_float(T) -> {float,Line,T}; -abstract(T, Line) when is_atom(T) -> {atom,Line,T}; -abstract([], Line) -> {nil,Line}; -abstract(B, Line) when is_bitstring(B) -> - {bin, Line, [abstract_byte(Byte, Line) || Byte <- bitstring_to_list(B)]}; -abstract([C|T], Line) when is_integer(C), 0 =< C, C < 256 -> - abstract_string(T, [C], Line); -abstract([H|T], Line) -> - {cons,Line,abstract(H, Line),abstract(T, Line)}; -abstract(Tuple, Line) when is_tuple(Tuple) -> - {tuple,Line,abstract_list(tuple_to_list(Tuple), Line)}. - -abstract_string([C|T], String, Line) when is_integer(C), 0 =< C, C < 256 -> - abstract_string(T, [C|String], Line); -abstract_string([], String, Line) -> - {string, Line, lists:reverse(String)}; -abstract_string(T, String, Line) -> - not_string(String, abstract(T, Line), Line). - -not_string([C|T], Result, Line) -> - not_string(T, {cons, Line, {integer, Line, C}, Result}, Line); -not_string([], Result, _Line) -> - Result. - -abstract_list([H|T], Line) -> - [abstract(H, Line)|abstract_list(T, Line)]; -abstract_list([], _Line) -> - []. - -%% Generate a list of tokens representing the abstract term. - --spec tokens(AbsTerm) -> Tokens when - AbsTerm :: abstract_expr(), - Tokens :: [token()]. -tokens(Abs) -> - tokens(Abs, []). - --spec tokens(AbsTerm, MoreTokens) -> Tokens when - AbsTerm :: abstract_expr(), - MoreTokens :: [token()], - Tokens :: [token()]. -tokens({char,L,C}, More) -> [{char,L,C}|More]; -tokens({integer,L,N}, More) -> [{integer,L,N}|More]; -tokens({float,L,F}, More) -> [{float,L,F}|More]; -tokens({atom,L,A}, More) -> [{atom,L,A}|More]; -tokens({var,L,V}, More) -> [{var,L,V}|More]; -tokens({string,L,S}, More) -> [{string,L,S}|More]; -tokens({nil,L}, More) -> [{'[',L},{']',L}|More]; -tokens({cons,L,Head,Tail}, More) -> - [{'[',L}|tokens(Head, tokens_tail(Tail, More))]; -tokens({tuple,L,[]}, More) -> - [{'{',L},{'}',L}|More]; -tokens({tuple,L,[E|Es]}, More) -> - [{'{',L}|tokens(E, tokens_tuple(Es, ?line(E), More))]. - -tokens_tail({cons,L,Head,Tail}, More) -> - [{',',L}|tokens(Head, tokens_tail(Tail, More))]; -tokens_tail({nil,L}, More) -> - [{']',L}|More]; -tokens_tail(Other, More) -> - L = ?line(Other), - [{'|',L}|tokens(Other, [{']',L}|More])]. - -tokens_tuple([E|Es], Line, More) -> - [{',',Line}|tokens(E, tokens_tuple(Es, ?line(E), More))]; -tokens_tuple([], Line, More) -> - [{'}',Line}|More]. - -%% Give the relative precedences of operators. - -inop_prec('=') -> {150,100,100}; -inop_prec('!') -> {150,100,100}; -inop_prec('orelse') -> {160,150,150}; -inop_prec('andalso') -> {200,160,160}; -inop_prec('==') -> {300,200,300}; -inop_prec('/=') -> {300,200,300}; -inop_prec('=<') -> {300,200,300}; -inop_prec('<') -> {300,200,300}; -inop_prec('>=') -> {300,200,300}; -inop_prec('>') -> {300,200,300}; -inop_prec('=:=') -> {300,200,300}; -inop_prec('=/=') -> {300,200,300}; -inop_prec('++') -> {400,300,300}; -inop_prec('--') -> {400,300,300}; -inop_prec('+') -> {400,400,500}; -inop_prec('-') -> {400,400,500}; -inop_prec('bor') -> {400,400,500}; -inop_prec('bxor') -> {400,400,500}; -inop_prec('bsl') -> {400,400,500}; -inop_prec('bsr') -> {400,400,500}; -inop_prec('or') -> {400,400,500}; -inop_prec('xor') -> {400,400,500}; -inop_prec('*') -> {500,500,600}; -inop_prec('/') -> {500,500,600}; -inop_prec('div') -> {500,500,600}; -inop_prec('rem') -> {500,500,600}; -inop_prec('band') -> {500,500,600}; -inop_prec('and') -> {500,500,600}; -inop_prec('#') -> {800,700,800}; -inop_prec(':') -> {900,800,900}; -inop_prec('.') -> {900,900,1000}. - --type pre_op() :: 'catch' | '+' | '-' | 'bnot' | 'not' | '#'. - --spec preop_prec(pre_op()) -> {0 | 600 | 700, 100 | 700 | 800}. - -preop_prec('catch') -> {0,100}; -preop_prec('+') -> {600,700}; -preop_prec('-') -> {600,700}; -preop_prec('bnot') -> {600,700}; -preop_prec('not') -> {600,700}; -preop_prec('#') -> {700,800}. - --spec func_prec() -> {800,700}. - -func_prec() -> {800,700}. - --spec max_prec() -> 1000. - -max_prec() -> 1000. - -%%% [Experimental]. The parser just copies the attributes of the -%%% scanner tokens to the abstract format. This design decision has -%%% been hidden to some extent: use set_line() and get_attribute() to -%%% access the second element of (almost all) of the abstract format -%%% tuples. A typical use is to negate line numbers to prevent the -%%% compiler from emitting warnings and errors. The second element can -%%% (of course) be set to any value, but then these functions no -%%% longer apply. To get all present attributes as a property list -%%% get_attributes() should be used. - -set_line(L, F) -> - erl_scan:set_attribute(line, L, F). - -get_attribute(L, Name) -> - erl_scan:attributes_info(L, Name). - -get_attributes(L) -> - erl_scan:attributes_info(L). - --file("/opt/installs/lib/erlang/lib/parsetools-2.0.5/include/yeccpre.hrl", 0). -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% The parser generator will insert appropriate declarations before this line.% - --type yecc_ret() :: {'error', _} | {'ok', _}. - --spec parse(Tokens :: list()) -> yecc_ret(). -parse(Tokens) -> - yeccpars0(Tokens, {no_func, no_line}, 0, [], []). - --spec parse_and_scan({function() | {atom(), atom()}, [_]} - | {atom(), atom(), [_]}) -> yecc_ret(). -parse_and_scan({F, A}) -> % Fun or {M, F} - yeccpars0([], {{F, A}, no_line}, 0, [], []); -parse_and_scan({M, F, A}) -> - yeccpars0([], {{{M, F}, A}, no_line}, 0, [], []). - --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(integer(), any()) -> no_return(). -return_error(Line, Message) -> - throw({error, {Line, ?MODULE, Message}}). - --define(CODE_VERSION, "1.4"). - -yeccpars0(Tokens, Tzr, State, States, Vstack) -> - try yeccpars1(Tokens, Tzr, State, States, Vstack) - catch - error: Error -> - Stacktrace = erlang:get_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, {_Line, ?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},_Line}, State, States, Vstack) -> - case apply(F, A) of - {ok, Tokens, Endline} -> - yeccpars1(Tokens, {{F, A}, Endline}, State, States, Vstack); - {eof, Endline} -> - yeccpars1([], {no_func, Endline}, State, States, Vstack); - {error, Descriptor, _Endline} -> - {error, Descriptor} - end; -yeccpars1([], {no_func, no_line}, State, States, Vstack) -> - Line = 999999, - yeccpars2(State, '$end', States, Vstack, yecc_end(Line), [], - {no_func, Line}); -yeccpars1([], {no_func, Endline}, State, States, Vstack) -> - yeccpars2(State, '$end', States, Vstack, yecc_end(Endline), [], - {no_func, Endline}). - -%% 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}, _Line}=Tzr) -> - yeccpars1([], Tzr, State, [State1 | States], [Token0 | Vstack]); -yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, no_line}) -> - Line = yecctoken_end_location(Token0), - yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], - yecc_end(Line), [], {no_func, Line}); -yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, Line}) -> - yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], - yecc_end(Line), [], {no_func, Line}). - -%% For internal use only. -yecc_end({Line,_Column}) -> - {'$end', Line}; -yecc_end(Line) -> - {'$end', Line}. - -yecctoken_end_location(Token) -> - try - {text, Str} = erl_scan:token_info(Token, text), - {line, Line} = erl_scan:token_info(Token, line), - Parts = re:split(Str, "\n"), - Dline = length(Parts) - 1, - Yline = Line + Dline, - case erl_scan:token_info(Token, column) of - {column, Column} -> - Col = byte_size(lists:last(Parts)), - {Yline, Col + if Dline =:= 0 -> Column; true -> 1 end}; - undefined -> - Yline - end - 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) -> - case catch erl_scan:token_info(Token, text) of - {text, Txt} -> Txt; - _ -> yecctoken2string(Token) - end. - -yecctoken_location(Token) -> - case catch erl_scan:token_info(Token, location) of - {location, Loc} -> Loc; - _ -> element(2, Token) - end. - --compile({nowarn_unused_function, yecctoken2string/1}). -yecctoken2string({atom, _, A}) -> io_lib:write(A); -yecctoken2string({integer,_,N}) -> io_lib:write(N); -yecctoken2string({float,_,F}) -> io_lib:write(F); -yecctoken2string({char,_,C}) -> io_lib:write_char(C); -yecctoken2string({var,_,V}) -> io_lib:format("~s", [V]); -yecctoken2string({string,_,S}) -> io_lib:write_unicode_string(S); -yecctoken2string({reserved_symbol, _, A}) -> io_lib:write(A); -yecctoken2string({_Cat, _, Val}) -> io_lib:format("~p",[Val]); -yecctoken2string({dot, _}) -> "'.'"; -yecctoken2string({'$end', _}) -> - []; -yecctoken2string({Other, _}) when is_atom(Other) -> - io_lib:write(Other); -yecctoken2string(Other) -> - io_lib:write(Other). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 779). - -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_15(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_17(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(18=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_18(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_25(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(26=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_26(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_35(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(36=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_36(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(37=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_37(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(38=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_38(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(39=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_39(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(40=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_40(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(41=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_41(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(42=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_42(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_44(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_46(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_48(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_50(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_45(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_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(56=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(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_45(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_63(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_65(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(66=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(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_69(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_45(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_45(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_78(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(79=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_79(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(80=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(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_45(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(87=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(88=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_88(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(89=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_89(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(90=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(91=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_91(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(92=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_92(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(93=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_93(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(94=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_94(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(95=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_95(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(96=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_96(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(97=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(98=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_98(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(99=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(100=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_100(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(101=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(102=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_102(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(103=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(104=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_104(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(105=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(106=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_106(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(107=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_75(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(108=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(109=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(110=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(111=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_111(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(112=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(113=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_113(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(114=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(115=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_115(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(116=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_116(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(117=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(118=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(119=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_119(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(120=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(121=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(122=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(123=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(124=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_124(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(125=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(126=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_126(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(127=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(128=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_128(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(129=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(130=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_130(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(131=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_131(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(132=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_132(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(133=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_133(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(134=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(135=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_135(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(136=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(137=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_137(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(138=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(139=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_139(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(140=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_140(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(141=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_141(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(142=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_142(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(143=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_143(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(144=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(145=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_145(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(146=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(147=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_147(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(148=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_148(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(149=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_149(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(150=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_150(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(151=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_151(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(152=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_152(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(153=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_153(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(154=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_154(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(155=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_155(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(156=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_156(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(157=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_157(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(158=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_158(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(159=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(160=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_160(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(161=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(162=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_162(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(163=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_163(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(164=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_164(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(165=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_165(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(166=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(167=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_167(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(168=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(169=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_169(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(170=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_170(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(171=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_171(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(172=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(173=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_173(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(174=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(175=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(176=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(177=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_177(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(178=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_178(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(179=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_179(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(180=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_180(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(181=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(182=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_182(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(183=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_183(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(184=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_184(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(185=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_185(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(186=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_186(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(187=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_187(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(188=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_188(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(189=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_189(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(190=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_190(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(191=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(192=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_192(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(193=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_193(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(194=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_194(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(195=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(196=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_196(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(197=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_197(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(198=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_198(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(199=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_199(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(200=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_200(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(201=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_201(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(202=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_202(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(203=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_203(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(204=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_204(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(205=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_199(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(206=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_206(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(207=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_207(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(208=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_208(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(209=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_209(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(210=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_210(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(211=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_211(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(212=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_212(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(213=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_213(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(214=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_214(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(215=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_215(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(216=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_216(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(217=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_217(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(218=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_218(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(219=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_219(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(220=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(221=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_221(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(222=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(223=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_223(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(224=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_224(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(225=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_225(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(226=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_226(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(227=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_227(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(228=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(229=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_229(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(230=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(231=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(232=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_232(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(233=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_233(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(234=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(235=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_235(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(236=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(237=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_237(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(238=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(239=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_239(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(240=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_240(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(241=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_241(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(242=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_242(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(243=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_243(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(244=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_244(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(245=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_245(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(246=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_246(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(247=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_247(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(248=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(249=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(250=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_250(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(251=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_251(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(252=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_252(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(253=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_253(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(254=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_254(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(255=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_255(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(256=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_256(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(257=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_257(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(258=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_258(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(259=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_259(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(260=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_260(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(261=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(262=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_262(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(263=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_263(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(264=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_264(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(265=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_265(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(266=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_266(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(267=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_267(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(268=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_268(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(269=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_269(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(270=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_270(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(271=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_271(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(272=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(273=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_273(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(274=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_274(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(275=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_275(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(276=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_276(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(277=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_277(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(278=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_278(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(279=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_279(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(280=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_280(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(281=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_281(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(282=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_282(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(283=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_283(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(284=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_284(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(285=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_285(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(286=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_286(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(287=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_287(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(288=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_288(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(289=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_289(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(290=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(291=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_291(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(292=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_292(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(293=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_293(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(294=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_294(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(295=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_295(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(296=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_296(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(297=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_297(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(298=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_298(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(299=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_299(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(300=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_300(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(301=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_301(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(302=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_302(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(303=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_303(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(304=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_304(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(305=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_305(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(306=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_295(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(307=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_307(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(308=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_308(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(309=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_309(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(310=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_310(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(311=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_311(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(312=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_312(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(313=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_313(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(314=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_314(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(315=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_315(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(316=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_316(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(317=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_317(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(318=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_318(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(319=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_319(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(320=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_320(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(321=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_321(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(322=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(323=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_323(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(324=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_324(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(325=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_325(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(326=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_326(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(327=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_327(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(328=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_328(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(329=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_329(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(330=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_330(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(331=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_331(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(332=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_332(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(333=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_333(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(334=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(335=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_335(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(336=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_336(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(337=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_337(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(338=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_338(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(339=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_339(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(340=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_340(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(341=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_341(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(342=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_342(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(343=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_343(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(344=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(345=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_345(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(346=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_346(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(347=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_347(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(348=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_348(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(349=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_349(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(350=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_350(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(351=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_351(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(352=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_352(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(353=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_353(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(354=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_354(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(355=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_355(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(356=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_356(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(357=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_357(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(358=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_358(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(359=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_359(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(360=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_360(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(361=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_361(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(362=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_362(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(363=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_363(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(364=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_364(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(365=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_365(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(366=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_366(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(367=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_367(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(368=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_368(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(369=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_369(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(370=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(371=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_371(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(372=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_372(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(373=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_373(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(374=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_374(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(375=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_375(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(376=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_376(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(377=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_377(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(378=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_378(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(379=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_379(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(380=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(381=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_381(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(382=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_382(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(383=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_383(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(384=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_384(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(385=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_385(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(386=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_386(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(387=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_387(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(388=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_388(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(389=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_389(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(390=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(391=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_391(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(392=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_392(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(393=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_393(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(394=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_394(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(395=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_395(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(396=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(397=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_397(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(398=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_398(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(399=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(400=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_400(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(401=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(402=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_402(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(403=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(404=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(405=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_405(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(406=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_406(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(407=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(408=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_408(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(409=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_409(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(410=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_410(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(411=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_411(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(412=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_412(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(413=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_413(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(414=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(415=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_415(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(416=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(417=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_417(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(418=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_418(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(419=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_409(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(420=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_420(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(421=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_295(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(422=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_422(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(423=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_423(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(424=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_424(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(425=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_425(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(426=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_426(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(427=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_427(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(428=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(429=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_429(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(430=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_430(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(431=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_431(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(432=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(433=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_433(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(434=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_434(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(435=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_435(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(436=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_68(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(437=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_437(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(438=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_438(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(439=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_439(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(440=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(441=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(442=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_442(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(443=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_443(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(444=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(445=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_445(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(446=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_446(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(447=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_447(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(448=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_448(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(449=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_449(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(450=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_431(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(451=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_451(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(452=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_452(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(453=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_453(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(454=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_454(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(455=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_455(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(456=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(457=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_457(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(458=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(459=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_459(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(460=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_460(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(461=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_461(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(462=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(463=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_463(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(464=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_464(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, 9, Ss, Stack, T, Ts, Tzr); -yeccpars2_0(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 10, Ss, Stack, T, Ts, Tzr); -yeccpars2_0(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_1_(Stack), - yeccgoto_rule(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_2(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 460, Ss, Stack, T, Ts, Tzr); -yeccpars2_2(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_2_(Stack), - yeccgoto_rule_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_3(S, dot, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 459, Ss, Stack, T, Ts, Tzr); -yeccpars2_3(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_4(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_4_(Stack), - yeccgoto_function(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_5(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 454, Ss, Stack, T, Ts, Tzr); -yeccpars2_5(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_5_(Stack), - yeccgoto_function_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_6(S, dot, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 453, Ss, Stack, T, Ts, Tzr); -yeccpars2_6(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_7(_S, '$end', _Ss, Stack, _T, _Ts, _Tzr) -> - {ok, hd(Stack)}; -yeccpars2_7(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_8(S, dot, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 452, Ss, Stack, T, Ts, Tzr); -yeccpars2_8(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_9(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 292, Ss, Stack, T, Ts, Tzr); -yeccpars2_9(S, spec, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 293, Ss, Stack, T, Ts, Tzr); -yeccpars2_9(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_10(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr); -yeccpars2_10(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_11(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_11(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_11_(Stack), - yeccpars2_287(287, Cat, [11 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_12_(Stack), - yeccgoto_clause_args(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_13(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 46, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_cont_13(S, '<<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 50, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 51, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'begin', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 53, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'case', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 55, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 57, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 58, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 59, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'if', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 60, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'query', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 63, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'receive', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 64, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 65, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'try', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 66, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_17(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 282, Ss, Stack, T, Ts, Tzr); -yeccpars2_17(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_700(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_20(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_700(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_26(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 280, Ss, Stack, T, Ts, Tzr); -yeccpars2_26(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_27(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 275, Ss, Stack, T, Ts, Tzr); -yeccpars2_27(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_900(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_28(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 271, Ss, Stack, T, Ts, Tzr); -yeccpars2_28(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 272, Ss, Stack, T, Ts, Tzr); -yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_800(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_29(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr); -yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_700(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_600(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_500(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_32(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 263, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, 'and', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, 'band', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 265, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, 'div', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, 'rem', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 267, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_400(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_33(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 250, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, '++', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 251, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 252, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, '--', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 253, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'bor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 254, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'bsl', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 255, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'bsr', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 256, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'bxor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 257, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'or', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 258, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'xor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 259, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_300(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_34(S, '/=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 239, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 240, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '=/=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 241, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '=:=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 242, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '=<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 243, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '==', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 244, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 245, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '>=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 246, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_200(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_35(S, 'andalso', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 236, Ss, Stack, T, Ts, Tzr); -yeccpars2_35(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_160(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_36(S, 'orelse', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 234, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_150(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_37(S, '!', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 230, Ss, Stack, T, Ts, Tzr); -yeccpars2_37(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 231, Ss, Stack, T, Ts, Tzr); -yeccpars2_37(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_100(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_39(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 228, Ss, Stack, T, Ts, Tzr); -yeccpars2_39(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_39_(Stack), - yeccgoto_exprs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_44(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 211, Ss, Stack, T, Ts, Tzr); -yeccpars2_44(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_45(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_46(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_46_(Stack), - yeccgoto_argument_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_47(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_prefix_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_48(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_prefix_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_49(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 208, Ss, Stack, T, Ts, Tzr); -yeccpars2_49(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_50(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 187, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_51(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 172, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_52(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_53: see yeccpars2_45 - -yeccpars2_54(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_prefix_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_55: see yeccpars2_45 - -%% yeccpars2_56: see yeccpars2_45 - -yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_58(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_59(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr); -yeccpars2_59(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 152, Ss, Stack, T, Ts, Tzr); -yeccpars2_59(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_60: see yeccpars2_45 - -yeccpars2_61(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_62(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_prefix_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_63(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 127, Ss, Stack, T, Ts, Tzr); -yeccpars2_63(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_64(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 117, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_65(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 65, Ss, Stack, T, Ts, Tzr); -yeccpars2_65(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_strings(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_66: see yeccpars2_45 - -yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_68(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 70, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_69(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 71, Ss, Stack, T, Ts, Tzr); -yeccpars2_69(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_70_(Stack), - yeccgoto_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_71_(Stack), - yeccgoto_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_72(S, 'of', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 76, Ss, Stack, T, Ts, Tzr); -yeccpars2_72(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_78(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_73(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_73_(Stack), - yeccgoto_try_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_74: see yeccpars2_45 - -yeccpars2_75(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 95, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 96, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_76: see yeccpars2_45 - -yeccpars2_77(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_77(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_77_(Stack), - yeccpars2_83(83, Cat, [77 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_78(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 74, Ss, Stack, T, Ts, Tzr); -yeccpars2_78(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 75, Ss, Stack, T, Ts, Tzr); -yeccpars2_78(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_79(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 80, Ss, Stack, T, Ts, Tzr); -yeccpars2_79(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_79_(Stack), - yeccgoto_cr_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_80: see yeccpars2_45 - -yeccpars2_81(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_81_(Stack), - yeccgoto_cr_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_82(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_82_(Stack), - yeccgoto_try_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_83(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 90, Ss, Stack, T, Ts, Tzr); -yeccpars2_83(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_84: see yeccpars2_45 - -yeccpars2_85(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_85_(Stack), - yeccgoto_clause_guard(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_86(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 87, Ss, Stack, T, Ts, Tzr); -yeccpars2_86(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_86_(Stack), - yeccgoto_guard(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_87: see yeccpars2_45 - -yeccpars2_88(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_88_(Stack), - yeccgoto_guard(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_89(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_89_(Stack), - yeccgoto_cr_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_90: see yeccpars2_45 - -yeccpars2_91(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_91_(Stack), - yeccgoto_clause_body(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_92(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 109, Ss, Stack, T, Ts, Tzr); -yeccpars2_92(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 110, Ss, Stack, T, Ts, Tzr); -yeccpars2_92(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_93(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_93(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_93_(Stack), - yeccgoto_try_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_94(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_94(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_94_(Stack), - yeccpars2_83(105, Cat, [94 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_95(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 101, Ss, Stack, T, Ts, Tzr); -yeccpars2_95(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_96(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 97, Ss, Stack, T, Ts, Tzr); -yeccpars2_96(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_97: see yeccpars2_45 - -yeccpars2_98(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_98(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_98_(Stack), - yeccpars2_83(99, Cat, [98 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_99: see yeccpars2_83 - -yeccpars2_100(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_100_(Stack), - yeccgoto_try_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_101: see yeccpars2_45 - -yeccpars2_102(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_102_(Stack), - yeccpars2_83(103, Cat, [102 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_103: see yeccpars2_83 - -yeccpars2_104(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_104_(Stack), - yeccgoto_try_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_105: see yeccpars2_83 - -yeccpars2_106(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_106_(Stack), - yeccgoto_try_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_107: see yeccpars2_75 - -yeccpars2_108(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_108_(Stack), - yeccgoto_try_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_109: see yeccpars2_45 - -yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_110_(Stack), - yeccgoto_try_catch(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_111(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 112, Ss, Stack, T, Ts, Tzr); -yeccpars2_111(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_112_(Stack), - yeccgoto_try_catch(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_113(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 114, Ss, Stack, T, Ts, Tzr); -yeccpars2_113(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_114_(Stack), - yeccgoto_try_catch(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_115_(Stack), - yeccgoto_strings(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_116(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 121, Ss, Stack, T, Ts, Tzr); -yeccpars2_116(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 122, Ss, Stack, T, Ts, Tzr); -yeccpars2_116(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_117: see yeccpars2_45 - -%% yeccpars2_118: see yeccpars2_83 - -yeccpars2_119(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 120, Ss, Stack, T, Ts, Tzr); -yeccpars2_119(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_120_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_121: see yeccpars2_45 - -yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_122_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_123: see yeccpars2_83 - -yeccpars2_124(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 125, Ss, Stack, T, Ts, Tzr); -yeccpars2_124(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_125_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_126(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 141, Ss, Stack, T, Ts, Tzr); -yeccpars2_126(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_127: see yeccpars2_45 - -yeccpars2_128(S, '||', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 129, Ss, Stack, T, Ts, Tzr); -yeccpars2_128(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_129: see yeccpars2_45 - -yeccpars2_130(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 140, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_131(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 138, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_131_(Stack), - yeccgoto_lc_exprs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_132(S, '<-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 136, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_lc_expr(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_133(S, '<=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 134, Ss, Stack, T, Ts, Tzr); -yeccpars2_133(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_134: see yeccpars2_45 - -yeccpars2_135(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_135_(Stack), - yeccgoto_lc_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_136: see yeccpars2_45 - -yeccpars2_137(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_137_(Stack), - yeccgoto_lc_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_138: see yeccpars2_45 - -yeccpars2_139(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_139_(Stack), - yeccgoto_lc_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_140(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_140_(Stack), - yeccgoto_list_comprehension(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_141(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_141_(Stack), - yeccgoto_query_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_142(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 148, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_143(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 146, Ss, Stack, T, Ts, Tzr); -yeccpars2_143(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_143_(Stack), - yeccgoto_if_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_144: see yeccpars2_83 - -yeccpars2_145(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_145_(Stack), - yeccgoto_if_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_146: see yeccpars2_45 - -yeccpars2_147(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_147_(Stack), - yeccgoto_if_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_148(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_148_(Stack), - yeccgoto_if_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_149(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 163, Ss, Stack, T, Ts, Tzr); -yeccpars2_149(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_150(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 161, Ss, Stack, T, Ts, Tzr); -yeccpars2_150(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_150_(Stack), - yeccgoto_fun_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_151(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_151(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_151_(Stack), - yeccpars2_83(159, Cat, [151 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_152(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 153, Ss, Stack, T, Ts, Tzr); -yeccpars2_152(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 154, Ss, Stack, T, Ts, Tzr); -yeccpars2_152(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_153(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 158, Ss, Stack, T, Ts, Tzr); -yeccpars2_153(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_154(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 155, Ss, Stack, T, Ts, Tzr); -yeccpars2_154(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_155(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 156, Ss, Stack, T, Ts, Tzr); -yeccpars2_155(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_156(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 157, Ss, Stack, T, Ts, Tzr); -yeccpars2_156(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_157(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_157_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_158(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_158_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_159: see yeccpars2_83 - -yeccpars2_160(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_160_(Stack), - yeccgoto_fun_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_161: see yeccpars2_10 - -yeccpars2_162(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_162_(Stack), - yeccgoto_fun_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_163(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_163_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_164(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_164_(Stack), - yeccgoto_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_165(S, 'of', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 166, Ss, Stack, T, Ts, Tzr); -yeccpars2_165(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_166: see yeccpars2_45 - -yeccpars2_167(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 168, Ss, Stack, T, Ts, Tzr); -yeccpars2_167(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_168_(Stack), - yeccgoto_case_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_169(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 170, Ss, Stack, T, Ts, Tzr); -yeccpars2_169(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_170_(Stack), - yeccgoto_expr_max(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_171(S, '||', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 129, Ss, Stack, T, Ts, Tzr); -yeccpars2_171(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_179(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_172_(Stack), - yeccgoto_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_173_(Stack), - yeccgoto_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_174: see yeccpars2_45 - -yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_175_(Stack), - yeccgoto_tail(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_176: see yeccpars2_45 - -yeccpars2_177(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_178(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_178_(Stack), - yeccgoto_tail(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_179(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 174, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 175, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 176, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_180(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_180_(Stack), - yeccgoto_tail(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_181(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_182(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_bit_expr(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_183(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 195, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_183_(Stack), - yeccpars2_194(194, Cat, [183 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_184(S, '||', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 191, Ss, Stack, T, Ts, Tzr); -yeccpars2_184(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_185(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 190, Ss, Stack, T, Ts, Tzr); -yeccpars2_185(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_186(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 188, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_186_(Stack), - yeccgoto_bin_elements(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_187(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_187_(Stack), - yeccgoto_binary(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_188(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_189(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_189_(Stack), - yeccgoto_bin_elements(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_190(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_190_(Stack), - yeccgoto_binary(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_191: see yeccpars2_45 - -yeccpars2_192(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 193, Ss, Stack, T, Ts, Tzr); -yeccpars2_192(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_193(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_193_(Stack), - yeccgoto_binary_comprehension(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_194(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 199, Ss, Stack, T, Ts, Tzr); -yeccpars2_194(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_194_(Stack), - yeccpars2_198(_S, Cat, [194 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_195: see yeccpars2_181 - -yeccpars2_196(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_bit_size_expr(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_197(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_197_(Stack), - yeccgoto_opt_bit_size_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_198(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_198_(Stack), - yeccgoto_bin_element(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_199(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 202, Ss, Stack, T, Ts, Tzr); -yeccpars2_199(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_200(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_200_(Stack), - yeccgoto_opt_bit_type_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_201(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 205, Ss, Stack, T, Ts, Tzr); -yeccpars2_201(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_201_(Stack), - yeccgoto_bit_type_list(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_202(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 203, Ss, Stack, T, Ts, Tzr); -yeccpars2_202(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_202_(Stack), - yeccgoto_bit_type(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_203(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 204, Ss, Stack, T, Ts, Tzr); -yeccpars2_203(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_204(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_204_(Stack), - yeccgoto_bit_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_205: see yeccpars2_199 - -yeccpars2_206(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_206_(Stack), - yeccgoto_bit_type_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_207(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_207_(Stack), - yeccgoto_bit_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_208(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_208_(Stack), - yeccgoto_expr_900(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_209(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 210, Ss, Stack, T, Ts, Tzr); -yeccpars2_209(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_210(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_210_(Stack), - yeccgoto_expr_max(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_211(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 213, Ss, Stack, T, Ts, Tzr); -yeccpars2_211(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 214, Ss, Stack, T, Ts, Tzr); -yeccpars2_211(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_212(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_212_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_213(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 227, Ss, Stack, T, Ts, Tzr); -yeccpars2_213(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_214(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 219, Ss, Stack, T, Ts, Tzr); -yeccpars2_214(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_224(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_215(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 226, Ss, Stack, T, Ts, Tzr); -yeccpars2_215(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_216(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 224, Ss, Stack, T, Ts, Tzr); -yeccpars2_216(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_216_(Stack), - yeccgoto_record_fields(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_217(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 222, Ss, Stack, T, Ts, Tzr); -yeccpars2_217(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_218(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 220, Ss, Stack, T, Ts, Tzr); -yeccpars2_218(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_219(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_219_(Stack), - yeccgoto_record_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_220: see yeccpars2_45 - -yeccpars2_221(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_221_(Stack), - yeccgoto_record_field(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_222: see yeccpars2_45 - -yeccpars2_223(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_223_(Stack), - yeccgoto_record_field(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_224(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 217, Ss, Stack, T, Ts, Tzr); -yeccpars2_224(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 218, Ss, Stack, T, Ts, Tzr); -yeccpars2_224(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_225(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_225_(Stack), - yeccgoto_record_fields(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_226(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_226_(Stack), - yeccgoto_record_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_227(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_227_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_228: see yeccpars2_45 - -yeccpars2_229(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_229_(Stack), - yeccgoto_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_230(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_231: see yeccpars2_230 - -yeccpars2_232(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_232_(Stack), - yeccgoto_expr_100(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_233(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_233_(Stack), - yeccgoto_expr_100(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_234: see yeccpars2_230 - -yeccpars2_235(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_235_(Stack), - yeccgoto_expr_150(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_236: see yeccpars2_230 - -yeccpars2_237(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_237_(Stack), - yeccgoto_expr_160(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_238: see yeccpars2_230 - -yeccpars2_239(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_240(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_241(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_242(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_243(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_244(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_245(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_246(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_247(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_247_(Stack), - yeccgoto_expr_200(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_248: see yeccpars2_230 - -%% yeccpars2_249: see yeccpars2_230 - -yeccpars2_250(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_251(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_list_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_252(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_253(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_list_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_254(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_255(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_256(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_257(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_258(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_259(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_260(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 263, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, 'and', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, 'band', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 265, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, 'div', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, 'rem', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 267, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_260_(Stack), - yeccgoto_expr_400(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_261: see yeccpars2_230 - -yeccpars2_262(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_263(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_264(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_265(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_266(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_267(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_268(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_268_(Stack), - yeccgoto_expr_500(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_269(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_269_(Stack), - yeccgoto_expr_300(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_270(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_270_(Stack), - yeccgoto_function_call(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_271(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 274, Ss, Stack, T, Ts, Tzr); -yeccpars2_271(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_272: see yeccpars2_181 - -yeccpars2_273(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_273_(Stack), - yeccgoto_expr_800(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_274(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_274_(Stack), - yeccgoto_expr_900(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_275(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 276, Ss, Stack, T, Ts, Tzr); -yeccpars2_275(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_276(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 278, Ss, Stack, T, Ts, Tzr); -yeccpars2_276(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 214, Ss, Stack, T, Ts, Tzr); -yeccpars2_276(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_277(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_277_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_278(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 279, Ss, Stack, T, Ts, Tzr); -yeccpars2_278(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_279(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_279_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_280(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_280_(Stack), - yeccgoto_argument_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_281(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_281_(Stack), - yeccgoto_expr_600(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_282(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 283, Ss, Stack, T, Ts, Tzr); -yeccpars2_282(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_283(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 285, Ss, Stack, T, Ts, Tzr); -yeccpars2_283(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 214, Ss, Stack, T, Ts, Tzr); -yeccpars2_283(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_284(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_284_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_285(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 286, Ss, Stack, T, Ts, Tzr); -yeccpars2_285(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_286(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_286_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_287(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 90, Ss, Stack, T, Ts, Tzr); -yeccpars2_287(S, ':-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 290, Ss, Stack, T, Ts, Tzr); -yeccpars2_287(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_288(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_288_(Stack), - yeccgoto_rule_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_289(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_289_(Stack), - yeccgoto_function_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_290: see yeccpars2_45 - -yeccpars2_291(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_291_(Stack), - yeccgoto_rule_body(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_292(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 428, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_293(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 296, Ss, Stack, T, Ts, Tzr); -yeccpars2_293(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 297, Ss, Stack, T, Ts, Tzr); -yeccpars2_293(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_294(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_294_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_295(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 310, Ss, Stack, T, Ts, Tzr); -yeccpars2_295(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_296(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 297, Ss, Stack, T, Ts, Tzr); -yeccpars2_296(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_297(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 298, Ss, Stack, T, Ts, Tzr); -yeccpars2_297(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 299, Ss, Stack, T, Ts, Tzr); -yeccpars2_297(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_spec_fun(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_298(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 304, Ss, Stack, T, Ts, Tzr); -yeccpars2_298(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_299(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 300, Ss, Stack, T, Ts, Tzr); -yeccpars2_299(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_300(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 301, Ss, Stack, T, Ts, Tzr); -yeccpars2_300(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_300_(Stack), - yeccgoto_spec_fun(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_301(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 302, Ss, Stack, T, Ts, Tzr); -yeccpars2_301(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_302(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 303, Ss, Stack, T, Ts, Tzr); -yeccpars2_302(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_303(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_303_(Stack), - yeccgoto_spec_fun(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_304(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 305, Ss, Stack, T, Ts, Tzr); -yeccpars2_304(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_305(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_305_(Stack), - yeccgoto_spec_fun(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_306: see yeccpars2_295 - -yeccpars2_307(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 423, Ss, Stack, T, Ts, Tzr); -yeccpars2_307(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_308(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 421, Ss, Stack, T, Ts, Tzr); -yeccpars2_308(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_308_(Stack), - yeccgoto_type_sigs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_309(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 409, Ss, Stack, T, Ts, Tzr); -yeccpars2_309(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_sig(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_310(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 323, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_cont_310(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 321, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 322, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, '<<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 324, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 325, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 326, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 327, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 328, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 330, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_400(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_312(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 263, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, 'and', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, 'band', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 265, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, 'div', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, 'rem', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 267, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_300(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_313(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 250, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 252, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, '..', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 404, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'bor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 254, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'bsl', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 255, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'bsr', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 256, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'bxor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 257, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'or', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 258, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'xor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 259, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_200(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_314(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 401, Ss, Stack, T, Ts, Tzr); -yeccpars2_314(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_top_type_100(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_500(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_316(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 398, Ss, Stack, T, Ts, Tzr); -yeccpars2_316(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_top_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_318(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 396, Ss, Stack, T, Ts, Tzr); -yeccpars2_318(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_318_(Stack), - yeccgoto_top_types(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_319(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 336, Ss, Stack, T, Ts, Tzr); -yeccpars2_319(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_321(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 384, Ss, Stack, T, Ts, Tzr); -yeccpars2_321(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_322(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_323(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 380, Ss, Stack, T, Ts, Tzr); -yeccpars2_323(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_324(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 365, Ss, Stack, T, Ts, Tzr); -yeccpars2_324(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 366, Ss, Stack, T, Ts, Tzr); -yeccpars2_324(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_325(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 358, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_326(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 347, Ss, Stack, T, Ts, Tzr); -yeccpars2_326(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 348, Ss, Stack, T, Ts, Tzr); -yeccpars2_326(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_327(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 337, Ss, Stack, T, Ts, Tzr); -yeccpars2_327(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_328(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_329(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 334, Ss, Stack, T, Ts, Tzr); -yeccpars2_329(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_330(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 332, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_331(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 333, Ss, Stack, T, Ts, Tzr); -yeccpars2_331(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_332(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_332_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_333(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_333_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_334(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 336, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_335(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_335_(Stack), - yeccgoto_top_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_336(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_337(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 340, Ss, Stack, T, Ts, Tzr); -yeccpars2_337(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 341, Ss, Stack, T, Ts, Tzr); -yeccpars2_337(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_338(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 346, Ss, Stack, T, Ts, Tzr); -yeccpars2_338(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_339(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_fun_type_100(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_340(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 323, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, '...', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 342, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_341(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_341_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_342(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 343, Ss, Stack, T, Ts, Tzr); -yeccpars2_342(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_343(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 344, Ss, Stack, T, Ts, Tzr); -yeccpars2_343(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_344: see yeccpars2_322 - -yeccpars2_345(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_345_(Stack), - yeccgoto_fun_type_100(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_346(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_346_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_347(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 355, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_348(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 349, Ss, Stack, T, Ts, Tzr); -yeccpars2_348(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_349(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 350, Ss, Stack, T, Ts, Tzr); -yeccpars2_349(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_350(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 352, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_351(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 353, Ss, Stack, T, Ts, Tzr); -yeccpars2_351(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_352(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_352_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_353(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_353_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_354(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 356, Ss, Stack, T, Ts, Tzr); -yeccpars2_354(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_355(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_355_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_356(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_356_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_357(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 359, Ss, Stack, T, Ts, Tzr); -yeccpars2_357(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 360, Ss, Stack, T, Ts, Tzr); -yeccpars2_357(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_358(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_358_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_359(S, '...', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 361, Ss, Stack, T, Ts, Tzr); -yeccpars2_359(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_360(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_360_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_361(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 362, Ss, Stack, T, Ts, Tzr); -yeccpars2_361(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_362(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_362_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_363(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 379, Ss, Stack, T, Ts, Tzr); -yeccpars2_363(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_364(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 372, Ss, Stack, T, Ts, Tzr); -yeccpars2_364(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 373, Ss, Stack, T, Ts, Tzr); -yeccpars2_364(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_365(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_365_(Stack), - yeccgoto_binary_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_366(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 367, Ss, Stack, T, Ts, Tzr); -yeccpars2_366(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_367(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 369, Ss, Stack, T, Ts, Tzr); -yeccpars2_367(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_368(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_368_(Stack), - yeccgoto_bin_base_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_369(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 370, Ss, Stack, T, Ts, Tzr); -yeccpars2_369(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_370: see yeccpars2_319 - -yeccpars2_371(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_371_(Stack), - yeccgoto_bin_unit_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_372(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 375, Ss, Stack, T, Ts, Tzr); -yeccpars2_372(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_373(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_373_(Stack), - yeccgoto_binary_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_374(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 378, Ss, Stack, T, Ts, Tzr); -yeccpars2_374(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_375(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 376, Ss, Stack, T, Ts, Tzr); -yeccpars2_375(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_376(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 377, Ss, Stack, T, Ts, Tzr); -yeccpars2_376(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_377(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 370, Ss, Stack, T, Ts, Tzr); -yeccpars2_377(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_378(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_378_(Stack), - yeccgoto_binary_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_379(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_379_(Stack), - yeccgoto_binary_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_380: see yeccpars2_322 - -yeccpars2_381(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_381_(Stack), - yeccgoto_fun_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_382(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 383, Ss, Stack, T, Ts, Tzr); -yeccpars2_382(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_383(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_383_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_384(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 385, Ss, Stack, T, Ts, Tzr); -yeccpars2_384(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_385(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 388, Ss, Stack, T, Ts, Tzr); -yeccpars2_385(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 389, Ss, Stack, T, Ts, Tzr); -yeccpars2_385(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_386(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 394, Ss, Stack, T, Ts, Tzr); -yeccpars2_386(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_387(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 392, Ss, Stack, T, Ts, Tzr); -yeccpars2_387(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_387_(Stack), - yeccgoto_field_types(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_388(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 390, Ss, Stack, T, Ts, Tzr); -yeccpars2_388(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_389(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_389_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_390: see yeccpars2_322 - -yeccpars2_391(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_391_(Stack), - yeccgoto_field_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_392(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 388, Ss, Stack, T, Ts, Tzr); -yeccpars2_392(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_393(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_393_(Stack), - yeccgoto_field_types(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_394(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_394_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_395(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_395_(Stack), - yeccgoto_type_500(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_396: see yeccpars2_322 - -yeccpars2_397(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_397_(Stack), - yeccgoto_top_types(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_398(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 399, Ss, Stack, T, Ts, Tzr); -yeccpars2_398(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_399: see yeccpars2_322 - -yeccpars2_400(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_400_(Stack), - yeccgoto_fun_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_401: see yeccpars2_334 - -yeccpars2_402(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_402_(Stack), - yeccgoto_top_type_100(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_403: see yeccpars2_334 - -%% yeccpars2_404: see yeccpars2_334 - -yeccpars2_405(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 250, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 252, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'bor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 254, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'bsl', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 255, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'bsr', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 256, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'bxor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 257, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'or', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 258, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'xor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 259, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_405_(Stack), - yeccgoto_type_200(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_406(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 263, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, 'and', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, 'band', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 265, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, 'div', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, 'rem', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 267, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_406_(Stack), - yeccgoto_type_300(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_407: see yeccpars2_334 - -yeccpars2_408(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_408_(Stack), - yeccgoto_type_400(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_409(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 412, Ss, Stack, T, Ts, Tzr); -yeccpars2_409(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 413, Ss, Stack, T, Ts, Tzr); -yeccpars2_409(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_410(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_410_(Stack), - yeccgoto_type_sig(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_411(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 419, Ss, Stack, T, Ts, Tzr); -yeccpars2_411(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_411_(Stack), - yeccgoto_type_guards(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_412(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 416, Ss, Stack, T, Ts, Tzr); -yeccpars2_412(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_413(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 414, Ss, Stack, T, Ts, Tzr); -yeccpars2_413(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_414: see yeccpars2_322 - -yeccpars2_415(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_415_(Stack), - yeccgoto_type_guard(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_416: see yeccpars2_322 - -yeccpars2_417(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 418, Ss, Stack, T, Ts, Tzr); -yeccpars2_417(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_418(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_418_(Stack), - yeccgoto_type_guard(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_419: see yeccpars2_409 - -yeccpars2_420(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_420_(Stack), - yeccgoto_type_guards(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_421: see yeccpars2_295 - -yeccpars2_422(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_422_(Stack), - yeccgoto_type_sigs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_423(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_423_(Stack), - yeccgoto_type_spec(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_424(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_424_(Stack), - yeccgoto_type_spec(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_425(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_425_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_426(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 450, Ss, Stack, T, Ts, Tzr); -yeccpars2_426(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 432, Ss, Stack, T, Ts, Tzr); -yeccpars2_426(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_426_(Stack), - yeccgoto_attr_val(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_427(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_427_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_428: see yeccpars2_45 - -yeccpars2_429(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 449, Ss, Stack, T, Ts, Tzr); -yeccpars2_429(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_430(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 210, Ss, Stack, T, Ts, Tzr); -yeccpars2_430(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 431, Ss, Stack, T, Ts, Tzr); -yeccpars2_430(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 432, Ss, Stack, T, Ts, Tzr); -yeccpars2_430(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_431(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 436, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_432: see yeccpars2_322 - -yeccpars2_433(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_433_(Stack), - yeccgoto_typed_attr_val(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_434(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_434_(Stack), - yeccgoto_typed_attr_val(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_435(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 448, Ss, Stack, T, Ts, Tzr); -yeccpars2_435(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_436: see yeccpars2_68 - -yeccpars2_437(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 447, Ss, Stack, T, Ts, Tzr); -yeccpars2_437(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_438(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 444, Ss, Stack, T, Ts, Tzr); -yeccpars2_438(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_438_(Stack), - yeccgoto_typed_exprs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_439(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 440, Ss, Stack, T, Ts, Tzr); -yeccpars2_439(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 441, Ss, Stack, T, Ts, Tzr); -yeccpars2_439(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_439_(Stack), - yeccgoto_exprs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_440: see yeccpars2_45 - -%% yeccpars2_441: see yeccpars2_322 - -yeccpars2_442(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_442_(Stack), - yeccgoto_typed_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_443(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_443_(Stack), - yeccgoto_typed_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_444: see yeccpars2_45 - -yeccpars2_445(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_445_(Stack), - yeccgoto_typed_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_446(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_446_(Stack), - yeccgoto_typed_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_447(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_447_(Stack), - yeccgoto_typed_record_fields(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_448(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_448_(Stack), - yeccgoto_attr_val(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_449(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_449_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_450: see yeccpars2_431 - -yeccpars2_451(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_451_(Stack), - yeccgoto_attr_val(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_452(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_452_(Stack), - yeccgoto_form(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_453(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_453_(Stack), - yeccgoto_form(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_454(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 456, Ss, Stack, T, Ts, Tzr); -yeccpars2_454(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_455(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_455_(Stack), - yeccgoto_function_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_456: see yeccpars2_10 - -yeccpars2_457(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_457(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_457_(Stack), - yeccpars2_83(458, Cat, [457 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_458: see yeccpars2_83 - -yeccpars2_459(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_459_(Stack), - yeccgoto_form(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_460(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 462, Ss, Stack, T, Ts, Tzr); -yeccpars2_460(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_461(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_461_(Stack), - yeccgoto_rule_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_462: see yeccpars2_10 - -yeccpars2_463(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_463(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_463_(Stack), - yeccpars2_464(464, Cat, [463 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_464(S, ':-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 290, Ss, Stack, T, Ts, Tzr); -yeccpars2_464(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccgoto_add_op(33, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(249, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_add_op(313, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(403, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_add_op(405, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(403, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_argument_list(10=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(29=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_270(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_151(151, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(161, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_151(151, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(456=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(462=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_atomic(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_attr_val(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_427(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_attribute(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_8(8, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bin_base_type(324, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_364(364, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bin_element(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_186(186, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bin_element(188, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_186(186, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bin_elements(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bin_elements(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_189(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bin_unit_type(324, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_363(363, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bin_unit_type(372, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_374(374, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_184(184, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_133(133, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_133(133, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_133(133, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_133(133, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary_comprehension(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary_type(310=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(319=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(322=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(325=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(330=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(334=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(340=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(347=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(350=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(367=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(370=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(401=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(403=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(404=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(407=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(416=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bit_expr(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_183(183, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bit_expr(188, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_183(183, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bit_size_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_197(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bit_type(199, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_201(201, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bit_type(205, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_201(201, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bit_type_list(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_200(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bit_type_list(205=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_206(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_case_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause_args(10, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_11(11, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_args(456, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_457(457, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_args(462, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_463(463, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause_body(83=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_89(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(99=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_100(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(103=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_104(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(105=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_106(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(118, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(119, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(123, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(124, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_145(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_160(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(287=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_289(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(458=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_289(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause_guard(11, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_287(287, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(77, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(83, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(94, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(105, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(98, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(99, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(102, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(103, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(151, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(159, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(457, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(458, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(463, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_464(464, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_comp_op(34, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(238, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cr_clause(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(79, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clause(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(79, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clause(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(79, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clause(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(79, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cr_clauses(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(116, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clauses(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_78(78, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clauses(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_81(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clauses(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(167, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_209(209, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(171, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(165, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_164(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_77(77, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_94(94, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_77(77, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_77(77, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_98(98, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(102, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_94(94, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(118, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(123, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_128(128, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(132, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_135(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_137(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(132, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_77(77, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_179(179, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_177(177, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(132, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_221(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_223(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(132, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_426(426, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_430(430, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_439(439, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_439(439, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_439(439, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_100(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_233(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_232(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_150(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_235(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_160(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_237(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_200(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_300(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_247(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_269(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_400(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_500(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_260(260, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_600(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_268(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_700(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_281(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_800(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(20, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_900(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(20, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_max(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(20, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_182(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_207(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_182(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_196(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_273(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_exprs(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(26, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_86(86, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_72(72, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(113, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_86(86, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_86(86, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_91(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(111, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_86(86, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_229(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_435(435, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_229(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_446(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_451(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_field_type(385, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_387(387, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_field_type(392, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_387(387, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_field_types(385, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_386(386, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_field_types(392=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_393(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_form(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_7(7, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_clause(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_150(150, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_clause(161, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_150(150, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_clauses(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_149(149, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_clauses(161=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_162(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_type(295, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_309(309, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_type(306, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_309(309, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_type(337=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_339(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_type(421, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_309(309, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_type_100(337, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_338(338, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_6(6, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_call(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_clause(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_clause(454, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_clauses(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_4(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_clauses(454=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_455(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_guard(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(144, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_guard(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_guard(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_88(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_guard(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(144, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_if_clause(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_143(143, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_clause(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_143(143, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_if_clauses(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_142(142, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_clauses(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_147(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_if_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_lc_expr(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(131, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_expr(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(131, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_expr(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(131, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_expr(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(131, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_lc_exprs(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_130(130, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_exprs(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_139(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_exprs(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_192(192, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_exprs(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_291(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_list(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_list_comprehension(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(63, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(126, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_list_op(33, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(248, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_mult_op(32, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(261, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_mult_op(260, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(261, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_mult_op(312, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(407, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_mult_op(406, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(407, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_opt_bit_size_expr(183, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_194(194, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_opt_bit_type_list(194=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_198(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_prefix_op(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(181, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(188, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(181, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(334, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(344, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(380, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(390, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(399, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(401, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(403, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(404, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(407, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(414, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(432, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(441, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_query_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_receive_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_record_expr(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(20, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_record_field(214, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_216(216, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_field(224, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_216(216, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_record_fields(214, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_215(215, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_fields(224=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_225(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_record_tuple(211=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_212(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_tuple(276=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_277(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_tuple(283=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_284(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_rule(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_3(3, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_rule_body(287=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_288(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_rule_body(464=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_288(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_rule_clause(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_2(2, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_rule_clause(460, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_2(2, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_rule_clauses(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_rule_clauses(460=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_461(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_spec_fun(293, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_295(295, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_spec_fun(296, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_295(306, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_strings(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail(171=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_180(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_top_type(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_382(382, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_357(357, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_345(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_381(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_391(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_400(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_415(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_433(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_442(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_top_type_100(310=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(322=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(325=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(330=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(334=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_335(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(340=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(347=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(350=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(401=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_402(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(416=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_top_types(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_316(316, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_331(331, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_316(316, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_354(354, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_351(351, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_397(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_417(417, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_catch(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_73(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_catch(78=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_82(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_clause(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_93(93, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_clause(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_93(93, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_clauses(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_92(92, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_clauses(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type(310=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(319=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_395(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(322=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(325=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(330=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(334=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(340=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(347=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(350=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(367=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_368(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(370=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_371(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(401=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(403=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(404=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(407=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(416=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_200(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(334, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(344, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(380, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(390, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(399, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(401, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(414, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(432, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(441, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_300(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(334, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(344, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(380, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(390, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(399, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(401, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(404, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_405(405, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(414, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(432, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(441, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_400(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(334, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(344, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(380, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(390, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(399, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(401, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(403, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_406(406, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(404, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(414, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(432, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(441, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_500(310=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(322=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(325=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(330=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(334=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(340=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(347=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(350=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(401=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(403=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(404=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(407=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_408(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(416=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_guard(409, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_411(411, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_guard(419, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_411(411, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_guards(409=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_410(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_guards(419=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_420(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_sig(295, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_308(308, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_sig(306, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_308(308, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_sig(421, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_308(308, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_sigs(295=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_424(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_sigs(306, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_307(307, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_sigs(421=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_422(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_spec(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_294(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_typed_attr_val(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_425(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_attr_val(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_429(429, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_typed_expr(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_438(438, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_expr(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_438(438, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_expr(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_438(438, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_typed_exprs(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_437(437, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_exprs(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_443(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_exprs(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_445(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_typed_record_fields(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_434(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_record_fields(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_434(_S, Cat, Ss, Stack, T, Ts, Tzr). - --compile({inline,yeccpars2_1_/1}). --file("erl_parse.yrl", 487). -yeccpars2_1_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - build_rule ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_2_/1}). --file("erl_parse.yrl", 489). -yeccpars2_2_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_4_/1}). --file("erl_parse.yrl", 197). -yeccpars2_4_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - build_function ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_5_/1}). --file("erl_parse.yrl", 199). -yeccpars2_5_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_11_/1}). --file("erl_parse.yrl", 209). -yeccpars2_11_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_12_/1}). --file("erl_parse.yrl", 206). -yeccpars2_12_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - element ( 1 , __1 ) - end | __Stack]. - --compile({inline,yeccpars2_39_/1}). --file("erl_parse.yrl", 438). -yeccpars2_39_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8235). --compile({inline,yeccpars2_46_/1}). --file("erl_parse.yrl", 434). -yeccpars2_46_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { [ ] , ? line ( __1 ) } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8244). --compile({inline,yeccpars2_70_/1}). --file("erl_parse.yrl", 325). -yeccpars2_70_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { tuple , ? line ( __1 ) , [ ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8253). --compile({inline,yeccpars2_71_/1}). --file("erl_parse.yrl", 326). -yeccpars2_71_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { tuple , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8262). --compile({inline,yeccpars2_73_/1}). --file("erl_parse.yrl", 408). -yeccpars2_73_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_try ( ? line ( __1 ) , __2 , [ ] , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_77_/1}). --file("erl_parse.yrl", 209). -yeccpars2_77_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_79_/1}). --file("erl_parse.yrl", 377). -yeccpars2_79_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_81_/1}). --file("erl_parse.yrl", 378). -yeccpars2_81_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8294). --compile({inline,yeccpars2_82_/1}). --file("erl_parse.yrl", 406). -yeccpars2_82_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - build_try ( ? line ( __1 ) , __2 , __4 , __5 ) - end | __Stack]. - --compile({inline,yeccpars2_85_/1}). --file("erl_parse.yrl", 208). -yeccpars2_85_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_86_/1}). --file("erl_parse.yrl", 441). -yeccpars2_86_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_88_/1}). --file("erl_parse.yrl", 442). -yeccpars2_88_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8327). --compile({inline,yeccpars2_89_/1}). --file("erl_parse.yrl", 381). -yeccpars2_89_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { clause , ? line ( __1 ) , [ __1 ] , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_91_/1}). --file("erl_parse.yrl", 211). -yeccpars2_91_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_93_/1}). --file("erl_parse.yrl", 417). -yeccpars2_93_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_94_/1}). --file("erl_parse.yrl", 209). -yeccpars2_94_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_98_/1}). --file("erl_parse.yrl", 209). -yeccpars2_98_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8366). --compile({inline,yeccpars2_100_/1}). --file("erl_parse.yrl", 427). -yeccpars2_100_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - L = ? line ( __1 ) , - { clause , L , [ { tuple , L , [ __1 , __3 , { var , L , '_' } ] } ] , __4 , __5 } - end | __Stack]. - --compile({inline,yeccpars2_102_/1}). --file("erl_parse.yrl", 209). -yeccpars2_102_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8383). --compile({inline,yeccpars2_104_/1}). --file("erl_parse.yrl", 424). -yeccpars2_104_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - L = ? line ( __1 ) , - { clause , L , [ { tuple , L , [ __1 , __3 , { var , L , '_' } ] } ] , __4 , __5 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8393). --compile({inline,yeccpars2_106_/1}). --file("erl_parse.yrl", 421). -yeccpars2_106_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - L = ? line ( __1 ) , - { clause , L , [ { tuple , L , [ { atom , L , throw } , __1 , { var , L , '_' } ] } ] , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_108_/1}). --file("erl_parse.yrl", 418). -yeccpars2_108_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_110_/1}). --file("erl_parse.yrl", 411). -yeccpars2_110_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , [ ] } - end | __Stack]. - --compile({inline,yeccpars2_112_/1}). --file("erl_parse.yrl", 413). -yeccpars2_112_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , __4 } - end | __Stack]. - --compile({inline,yeccpars2_114_/1}). --file("erl_parse.yrl", 415). -yeccpars2_114_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { [ ] , __2 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8435). --compile({inline,yeccpars2_115_/1}). --file("erl_parse.yrl", 452). -yeccpars2_115_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { string , ? line ( __1 ) , element ( 3 , __1 ) ++ element ( 3 , __2 ) } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8444). --compile({inline,yeccpars2_120_/1}). --file("erl_parse.yrl", 386). -yeccpars2_120_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'receive' , ? line ( __1 ) , [ ] , __3 , __4 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8453). --compile({inline,yeccpars2_122_/1}). --file("erl_parse.yrl", 384). -yeccpars2_122_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'receive' , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8462). --compile({inline,yeccpars2_125_/1}). --file("erl_parse.yrl", 388). -yeccpars2_125_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'receive' , ? line ( __1 ) , __2 , __4 , __5 } - end | __Stack]. - --compile({inline,yeccpars2_131_/1}). --file("erl_parse.yrl", 318). -yeccpars2_131_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8479). --compile({inline,yeccpars2_135_/1}). --file("erl_parse.yrl", 323). -yeccpars2_135_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { b_generate , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8488). --compile({inline,yeccpars2_137_/1}). --file("erl_parse.yrl", 322). -yeccpars2_137_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { generate , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_139_/1}). --file("erl_parse.yrl", 319). -yeccpars2_139_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8505). --compile({inline,yeccpars2_140_/1}). --file("erl_parse.yrl", 315). -yeccpars2_140_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { lc , ? line ( __1 ) , __2 , __4 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8514). --compile({inline,yeccpars2_141_/1}). --file("erl_parse.yrl", 431). -yeccpars2_141_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'query' , ? line ( __1 ) , __2 } - end | __Stack]. - --compile({inline,yeccpars2_143_/1}). --file("erl_parse.yrl", 367). -yeccpars2_143_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8531). --compile({inline,yeccpars2_145_/1}). --file("erl_parse.yrl", 371). -yeccpars2_145_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { clause , ? line ( hd ( hd ( __1 ) ) ) , [ ] , __1 , __2 } - end | __Stack]. - --compile({inline,yeccpars2_147_/1}). --file("erl_parse.yrl", 368). -yeccpars2_147_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8548). --compile({inline,yeccpars2_148_/1}). --file("erl_parse.yrl", 365). -yeccpars2_148_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'if' , ? line ( __1 ) , __2 } - end | __Stack]. - --compile({inline,yeccpars2_150_/1}). --file("erl_parse.yrl", 398). -yeccpars2_150_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_151_/1}). --file("erl_parse.yrl", 209). -yeccpars2_151_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8572). --compile({inline,yeccpars2_157_/1}). --file("erl_parse.yrl", 394). -yeccpars2_157_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'fun' , ? line ( __1 ) , { function , element ( 3 , __2 ) , element ( 3 , __4 ) , element ( 3 , __6 ) } } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8581). --compile({inline,yeccpars2_158_/1}). --file("erl_parse.yrl", 392). -yeccpars2_158_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'fun' , ? line ( __1 ) , { function , element ( 3 , __2 ) , element ( 3 , __4 ) } } - end | __Stack]. - --compile({inline,yeccpars2_160_/1}). --file("erl_parse.yrl", 402). -yeccpars2_160_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { Args , Pos } = __1 , - { clause , Pos , 'fun' , Args , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_162_/1}). --file("erl_parse.yrl", 399). -yeccpars2_162_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8607). --compile({inline,yeccpars2_163_/1}). --file("erl_parse.yrl", 396). -yeccpars2_163_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_fun ( ? line ( __1 ) , __2 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8616). --compile({inline,yeccpars2_164_/1}). --file("erl_parse.yrl", 214). -yeccpars2_164_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { 'catch' , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8625). --compile({inline,yeccpars2_168_/1}). --file("erl_parse.yrl", 375). -yeccpars2_168_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'case' , ? line ( __1 ) , __2 , __4 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8634). --compile({inline,yeccpars2_170_/1}). --file("erl_parse.yrl", 270). -yeccpars2_170_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { block , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8643). --compile({inline,yeccpars2_172_/1}). --file("erl_parse.yrl", 279). -yeccpars2_172_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { nil , ? line ( __1 ) } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8652). --compile({inline,yeccpars2_173_/1}). --file("erl_parse.yrl", 280). -yeccpars2_173_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { cons , ? line ( __1 ) , __2 , __3 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8661). --compile({inline,yeccpars2_175_/1}). --file("erl_parse.yrl", 282). -yeccpars2_175_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - { nil , ? line ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_178_/1}). --file("erl_parse.yrl", 283). -yeccpars2_178_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8678). --compile({inline,yeccpars2_180_/1}). --file("erl_parse.yrl", 284). -yeccpars2_180_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { cons , ? line ( __2 ) , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_183_/1}). --file("erl_parse.yrl", 300). -yeccpars2_183_(__Stack0) -> - [begin - default - end | __Stack0]. - --compile({inline,yeccpars2_186_/1}). --file("erl_parse.yrl", 290). -yeccpars2_186_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8702). --compile({inline,yeccpars2_187_/1}). --file("erl_parse.yrl", 287). -yeccpars2_187_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { bin , ? line ( __1 ) , [ ] } - end | __Stack]. - --compile({inline,yeccpars2_189_/1}). --file("erl_parse.yrl", 291). -yeccpars2_189_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8719). --compile({inline,yeccpars2_190_/1}). --file("erl_parse.yrl", 288). -yeccpars2_190_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { bin , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8728). --compile({inline,yeccpars2_193_/1}). --file("erl_parse.yrl", 317). -yeccpars2_193_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { bc , ? line ( __1 ) , __2 , __4 } - end | __Stack]. - --compile({inline,yeccpars2_194_/1}). --file("erl_parse.yrl", 303). -yeccpars2_194_(__Stack0) -> - [begin - default - end | __Stack0]. - --compile({inline,yeccpars2_197_/1}). --file("erl_parse.yrl", 299). -yeccpars2_197_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8752). --compile({inline,yeccpars2_198_/1}). --file("erl_parse.yrl", 294). -yeccpars2_198_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { bin_element , ? line ( __1 ) , __1 , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_200_/1}). --file("erl_parse.yrl", 302). -yeccpars2_200_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_201_/1}). --file("erl_parse.yrl", 306). -yeccpars2_201_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_202_/1}). --file("erl_parse.yrl", 308). -yeccpars2_202_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - element ( 3 , __1 ) - end | __Stack]. - --compile({inline,yeccpars2_204_/1}). --file("erl_parse.yrl", 309). -yeccpars2_204_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { element ( 3 , __1 ) , element ( 3 , __3 ) } - end | __Stack]. - --compile({inline,yeccpars2_206_/1}). --file("erl_parse.yrl", 305). -yeccpars2_206_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8801). --compile({inline,yeccpars2_207_/1}). --file("erl_parse.yrl", 296). -yeccpars2_207_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - ? mkop1 ( __1 , __2 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8810). --compile({inline,yeccpars2_208_/1}). --file("erl_parse.yrl", 256). -yeccpars2_208_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __1 ) , { atom , ? line ( __1 ) , '' } , __2 } - end | __Stack]. - --compile({inline,yeccpars2_210_/1}). --file("erl_parse.yrl", 269). -yeccpars2_210_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8827). --compile({inline,yeccpars2_212_/1}). --file("erl_parse.yrl", 340). -yeccpars2_212_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { record , ? line ( __1 ) , element ( 3 , __2 ) , __3 } - end | __Stack]. - --compile({inline,yeccpars2_216_/1}). --file("erl_parse.yrl", 353). -yeccpars2_216_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_219_/1}). --file("erl_parse.yrl", 350). -yeccpars2_219_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8852). --compile({inline,yeccpars2_221_/1}). --file("erl_parse.yrl", 356). -yeccpars2_221_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __1 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8861). --compile({inline,yeccpars2_223_/1}). --file("erl_parse.yrl", 357). -yeccpars2_223_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __1 ) , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_225_/1}). --file("erl_parse.yrl", 354). -yeccpars2_225_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_226_/1}). --file("erl_parse.yrl", 351). -yeccpars2_226_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8886). --compile({inline,yeccpars2_227_/1}). --file("erl_parse.yrl", 338). -yeccpars2_227_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_index , ? line ( __1 ) , element ( 3 , __2 ) , __4 } - end | __Stack]. - --compile({inline,yeccpars2_229_/1}). --file("erl_parse.yrl", 439). -yeccpars2_229_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8903). --compile({inline,yeccpars2_232_/1}). --file("erl_parse.yrl", 217). -yeccpars2_232_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { match , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8912). --compile({inline,yeccpars2_233_/1}). --file("erl_parse.yrl", 218). -yeccpars2_233_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8921). --compile({inline,yeccpars2_235_/1}). --file("erl_parse.yrl", 221). -yeccpars2_235_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8930). --compile({inline,yeccpars2_237_/1}). --file("erl_parse.yrl", 224). -yeccpars2_237_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8939). --compile({inline,yeccpars2_247_/1}). --file("erl_parse.yrl", 228). -yeccpars2_247_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8948). --compile({inline,yeccpars2_260_/1}). --file("erl_parse.yrl", 236). -yeccpars2_260_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8957). --compile({inline,yeccpars2_268_/1}). --file("erl_parse.yrl", 240). -yeccpars2_268_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8966). --compile({inline,yeccpars2_269_/1}). --file("erl_parse.yrl", 232). -yeccpars2_269_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8975). --compile({inline,yeccpars2_270_/1}). --file("erl_parse.yrl", 362). -yeccpars2_270_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { call , ? line ( __1 ) , __1 , element ( 1 , __2 ) } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8984). --compile({inline,yeccpars2_273_/1}). --file("erl_parse.yrl", 252). -yeccpars2_273_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { remote , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8993). --compile({inline,yeccpars2_274_/1}). --file("erl_parse.yrl", 258). -yeccpars2_274_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9002). --compile({inline,yeccpars2_277_/1}). --file("erl_parse.yrl", 344). -yeccpars2_277_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record , ? line ( __2 ) , __1 , element ( 3 , __3 ) , __4 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9011). --compile({inline,yeccpars2_279_/1}). --file("erl_parse.yrl", 342). -yeccpars2_279_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __2 ) , __1 , element ( 3 , __3 ) , __5 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9020). --compile({inline,yeccpars2_280_/1}). --file("erl_parse.yrl", 435). -yeccpars2_280_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , ? line ( __1 ) } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9029). --compile({inline,yeccpars2_281_/1}). --file("erl_parse.yrl", 244). -yeccpars2_281_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - ? mkop1 ( __1 , __2 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9038). --compile({inline,yeccpars2_284_/1}). --file("erl_parse.yrl", 348). -yeccpars2_284_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record , ? line ( __2 ) , __1 , element ( 3 , __3 ) , __4 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9047). --compile({inline,yeccpars2_286_/1}). --file("erl_parse.yrl", 346). -yeccpars2_286_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __2 ) , __1 , element ( 3 , __3 ) , __5 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9056). --compile({inline,yeccpars2_288_/1}). --file("erl_parse.yrl", 493). -yeccpars2_288_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { clause , ? line ( __1 ) , element ( 3 , __1 ) , __2 , __3 , __4 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9065). --compile({inline,yeccpars2_289_/1}). --file("erl_parse.yrl", 203). -yeccpars2_289_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { clause , ? line ( __1 ) , element ( 3 , __1 ) , __2 , __3 , __4 } - end | __Stack]. - --compile({inline,yeccpars2_291_/1}). --file("erl_parse.yrl", 495). -yeccpars2_291_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_294_/1}). --file("erl_parse.yrl", 75). -yeccpars2_294_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_type_spec ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_300_/1}). --file("erl_parse.yrl", 81). -yeccpars2_300_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_303_/1}). --file("erl_parse.yrl", 85). -yeccpars2_303_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __3 , __5 } - end | __Stack]. - --compile({inline,yeccpars2_305_/1}). --file("erl_parse.yrl", 84). -yeccpars2_305_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_308_/1}). --file("erl_parse.yrl", 99). -yeccpars2_308_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_318_/1}). --file("erl_parse.yrl", 113). -yeccpars2_318_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9130). --compile({inline,yeccpars2_332_/1}). --file("erl_parse.yrl", 152). -yeccpars2_332_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , tuple , [ ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9139). --compile({inline,yeccpars2_333_/1}). --file("erl_parse.yrl", 153). -yeccpars2_333_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , tuple , __2 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9148). --compile({inline,yeccpars2_335_/1}). --file("erl_parse.yrl", 116). -yeccpars2_335_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { ann_type , ? line ( __1 ) , [ __1 , __3 ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9157). --compile({inline,yeccpars2_341_/1}). --file("erl_parse.yrl", 159). -yeccpars2_341_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , 'fun' , [ ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9166). --compile({inline,yeccpars2_345_/1}). --file("erl_parse.yrl", 163). -yeccpars2_345_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , 'fun' , - [ { type , ? line ( __1 ) , any } , __5 ] } - end | __Stack]. - --compile({inline,yeccpars2_346_/1}). --file("erl_parse.yrl", 160). -yeccpars2_346_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - __3 - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9184). --compile({inline,yeccpars2_352_/1}). --file("erl_parse.yrl", 144). -yeccpars2_352_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { remote_type , ? line ( __1 ) , - [ __1 , __3 , [ ] ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9194). --compile({inline,yeccpars2_353_/1}). --file("erl_parse.yrl", 146). -yeccpars2_353_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { remote_type , ? line ( __1 ) , - [ __1 , __3 , __5 ] } - end | __Stack]. - --compile({inline,yeccpars2_355_/1}). --file("erl_parse.yrl", 141). -yeccpars2_355_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_gen_type ( __1 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9212). --compile({inline,yeccpars2_356_/1}). --file("erl_parse.yrl", 142). -yeccpars2_356_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , - normalise ( __1 ) , __3 } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9222). --compile({inline,yeccpars2_358_/1}). --file("erl_parse.yrl", 148). -yeccpars2_358_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , nil , [ ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9231). --compile({inline,yeccpars2_360_/1}). --file("erl_parse.yrl", 149). -yeccpars2_360_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , list , [ __2 ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9240). --compile({inline,yeccpars2_362_/1}). --file("erl_parse.yrl", 150). -yeccpars2_362_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , - nonempty_list , [ __2 ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9250). --compile({inline,yeccpars2_365_/1}). --file("erl_parse.yrl", 179). -yeccpars2_365_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , binary , - [ abstract ( 0 , ? line ( __1 ) ) , - abstract ( 0 , ? line ( __1 ) ) ] } - end | __Stack]. - --compile({inline,yeccpars2_368_/1}). --file("erl_parse.yrl", 189). -yeccpars2_368_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_bin_type ( [ __1 ] , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_371_/1}). --file("erl_parse.yrl", 191). -yeccpars2_371_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - build_bin_type ( [ __1 , __3 ] , __5 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9277). --compile({inline,yeccpars2_373_/1}). --file("erl_parse.yrl", 182). -yeccpars2_373_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , binary , - [ __2 , abstract ( 0 , ? line ( __1 ) ) ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9287). --compile({inline,yeccpars2_378_/1}). --file("erl_parse.yrl", 187). -yeccpars2_378_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , binary , [ __2 , __4 ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9296). --compile({inline,yeccpars2_379_/1}). --file("erl_parse.yrl", 184). -yeccpars2_379_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , binary , - [ abstract ( 0 , ? line ( __1 ) ) , __2 ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9306). --compile({inline,yeccpars2_381_/1}). --file("erl_parse.yrl", 167). -yeccpars2_381_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , 'fun' , - [ { type , ? line ( __1 ) , product , [ ] } , __4 ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9316). --compile({inline,yeccpars2_383_/1}). --file("erl_parse.yrl", 138). -yeccpars2_383_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { paren_type , ? line ( __2 ) , [ __2 ] } - end | __Stack]. - --compile({inline,yeccpars2_387_/1}). --file("erl_parse.yrl", 173). -yeccpars2_387_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9333). --compile({inline,yeccpars2_389_/1}). --file("erl_parse.yrl", 154). -yeccpars2_389_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , record , [ __2 ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9342). --compile({inline,yeccpars2_391_/1}). --file("erl_parse.yrl", 176). -yeccpars2_391_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , field_type , - [ __1 , __3 ] } - end | __Stack]. - --compile({inline,yeccpars2_393_/1}). --file("erl_parse.yrl", 174). -yeccpars2_393_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9360). --compile({inline,yeccpars2_394_/1}). --file("erl_parse.yrl", 155). -yeccpars2_394_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , - record , [ __2 | __4 ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9370). --compile({inline,yeccpars2_395_/1}). --file("erl_parse.yrl", 135). -yeccpars2_395_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - ? mkop1 ( __1 , skip_paren ( __2 ) ) - end | __Stack]. - --compile({inline,yeccpars2_397_/1}). --file("erl_parse.yrl", 114). -yeccpars2_397_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9387). --compile({inline,yeccpars2_400_/1}). --file("erl_parse.yrl", 170). -yeccpars2_400_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , 'fun' , - [ { type , ? line ( __1 ) , product , __2 } , __5 ] } - end | __Stack]. - --compile({inline,yeccpars2_402_/1}). --file("erl_parse.yrl", 120). -yeccpars2_402_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - lift_unions ( __1 , __3 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9405). --compile({inline,yeccpars2_405_/1}). --file("erl_parse.yrl", 122). -yeccpars2_405_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , range , - [ skip_paren ( __1 ) , - skip_paren ( __3 ) ] } - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9416). --compile({inline,yeccpars2_406_/1}). --file("erl_parse.yrl", 127). -yeccpars2_406_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( skip_paren ( __1 ) , - __2 , skip_paren ( __3 ) ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9426). --compile({inline,yeccpars2_408_/1}). --file("erl_parse.yrl", 131). -yeccpars2_408_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( skip_paren ( __1 ) , - __2 , skip_paren ( __3 ) ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9436). --compile({inline,yeccpars2_410_/1}). --file("erl_parse.yrl", 103). -yeccpars2_410_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , bounded_fun , - [ __1 , __3 ] } - end | __Stack]. - --compile({inline,yeccpars2_411_/1}). --file("erl_parse.yrl", 106). -yeccpars2_411_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_415_/1}). --file("erl_parse.yrl", 111). -yeccpars2_415_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_def ( __1 , __3 ) - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9462). --compile({inline,yeccpars2_418_/1}). --file("erl_parse.yrl", 109). -yeccpars2_418_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , constraint , - [ __1 , __3 ] } - end | __Stack]. - --compile({inline,yeccpars2_420_/1}). --file("erl_parse.yrl", 107). -yeccpars2_420_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_422_/1}). --file("erl_parse.yrl", 100). -yeccpars2_422_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_423_/1}). --file("erl_parse.yrl", 78). -yeccpars2_423_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_424_/1}). --file("erl_parse.yrl", 77). -yeccpars2_424_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __2 } - end | __Stack]. - --compile({inline,yeccpars2_425_/1}). --file("erl_parse.yrl", 73). -yeccpars2_425_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_typed_attribute ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_426_/1}). --file("erl_parse.yrl", 193). -yeccpars2_426_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_427_/1}). --file("erl_parse.yrl", 72). -yeccpars2_427_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_attribute ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_433_/1}). --file("erl_parse.yrl", 88). -yeccpars2_433_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type_def , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_434_/1}). --file("erl_parse.yrl", 87). -yeccpars2_434_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { typed_record , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_438_/1}). --file("erl_parse.yrl", 92). -yeccpars2_438_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_439_/1}). --file("erl_parse.yrl", 438). -yeccpars2_439_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_442_/1}). --file("erl_parse.yrl", 97). -yeccpars2_442_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { typed , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_443_/1}). --file("erl_parse.yrl", 94). -yeccpars2_443_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_445_/1}). --file("erl_parse.yrl", 93). -yeccpars2_445_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_446_/1}). --file("erl_parse.yrl", 95). -yeccpars2_446_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/egil/git/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9592). --compile({inline,yeccpars2_447_/1}). --file("erl_parse.yrl", 90). -yeccpars2_447_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { tuple , ? line ( __1 ) , __2 } - end | __Stack]. - --compile({inline,yeccpars2_448_/1}). --file("erl_parse.yrl", 195). -yeccpars2_448_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __2 | __4 ] - end | __Stack]. - --compile({inline,yeccpars2_449_/1}). --file("erl_parse.yrl", 74). -yeccpars2_449_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - build_typed_attribute ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_451_/1}). --file("erl_parse.yrl", 194). -yeccpars2_451_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_452_/1}). --file("erl_parse.yrl", 68). -yeccpars2_452_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __1 - end | __Stack]. - --compile({inline,yeccpars2_453_/1}). --file("erl_parse.yrl", 69). -yeccpars2_453_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __1 - end | __Stack]. - --compile({inline,yeccpars2_455_/1}). --file("erl_parse.yrl", 200). -yeccpars2_455_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_457_/1}). --file("erl_parse.yrl", 209). -yeccpars2_457_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_459_/1}). --file("erl_parse.yrl", 70). -yeccpars2_459_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __1 - end | __Stack]. - --compile({inline,yeccpars2_461_/1}). --file("erl_parse.yrl", 490). -yeccpars2_461_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_463_/1}). --file("erl_parse.yrl", 209). -yeccpars2_463_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - - --file("erl_parse.yrl", 1094). diff --git a/erts/configure.in b/erts/configure.in index fac07f8b6a..03e27c9dad 100644 --- a/erts/configure.in +++ b/erts/configure.in @@ -1673,6 +1673,15 @@ esac AC_C_BIGENDIAN +dnl fdatasync syscall (Unix only) +AC_CHECK_FUNCS([fdatasync]) + +dnl Find which C libraries are required to use fdatasync +dnl TODO: Remove check once SunOS >= 5.11 is required by erts. +dnl fdatasync requires linking against -lrt on SunOS <= 5.10. +dnl OpenSolaris 2009.06 is SunOS 5.11 and does not require -lrt. +AC_SEARCH_LIBS(fdatasync, [rt]) + dnl ---------------------------------------------------------------------- dnl Checks for library functions. dnl ---------------------------------------------------------------------- @@ -1860,12 +1869,6 @@ fi dnl Need by run_erl. AC_CHECK_FUNCS([openpty]) -dnl fdatasync syscall (Unix only) -AC_CHECK_FUNCS([fdatasync]) - -dnl Find which C libraries are required to use fdatasync -AC_SEARCH_LIBS(fdatasync, [rt]) - AC_CHECK_HEADERS(net/if_dl.h ifaddrs.h netpacket/packet.h) AC_CHECK_FUNCS([getifaddrs]) @@ -3722,7 +3725,7 @@ case "$erl_xcomp_without_sysroot-$with_ssl" in SSL_RUNTIME_LIBDIR="$rdir/lib" SSL_LIBDIR="$dir/lib" SSL_CRYPTO_LIBNAME=libeay32 - SSL_CRYPTO_LIBNAME=ssleay32 + SSL_SSL_LIBNAME=ssleay32 elif test -f "$dir/lib/openssl.lib"; then SSL_RUNTIME_LIBDIR="$rdir/lib" SSL_LIBDIR="$dir/lib" @@ -3904,7 +3907,7 @@ dnl so it is - be adoptable elif test -f "$with_ssl/lib/libeay32.lib"; then SSL_LIBDIR="$with_ssl/lib" SSL_CRYPTO_LIBNAME=libeay32 - SSL_CRYPTO_LIBNAME=ssleay32 + SSL_SSL_LIBNAME=ssleay32 else # This probably wont work, but that's what the user said, so... SSL_LIBDIR="$with_ssl/lib" diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml index 7cfab0785d..84d4160e6a 100644 --- a/erts/doc/src/erlang.xml +++ b/erts/doc/src/erlang.xml @@ -518,6 +518,18 @@ </func> <func> + <name>check_old_code(Module) -> boolean()</name> + <fsummary>Check if a module has old code</fsummary> + <type> + <v>Module = atom()</v> + </type> + <desc> + <p>Returns <c>true</c> if the <c>Module</c> has old code, + and <c>false</c> otherwise.</p> + <p>See also <seealso marker="kernel:code">code(3)</seealso>.</p> + </desc> + </func> + <func> <name>check_process_code(Pid, Module) -> boolean()</name> <fsummary>Check if a process is executing old code for a module</fsummary> <type> @@ -1023,6 +1035,56 @@ b</pre> </desc> </func> <func> + <name>erlang:external_size(Term) -> integer() >= 0</name> + <fsummary>Calculate the maximum size for a term encoded in the Erlang + external term format</fsummary> + <type> + <v>Term = term()</v> + </type> + <desc> + <p>Calculates, without doing the encoding, the maximum byte size for + a term encoded in the Erlang external term format. The following + condition applies always:</p> + <p> + <pre> +> <input>Size1 = byte_size(term_to_binary(Term)),</input> +> <input>Size2 = erlang:external_size(Term),</input> +> <input>true = Size1 =< Size2.</input> +true + </pre> + </p> + <p>This is equivalent to a call to: <code>erlang:external_size(Term, []) + </code></p> + </desc> + </func> + <func> + <name>erlang:external_size(Term, [Option]) -> integer() >= 0</name> + <fsummary>Calculate the maximum size for a term encoded in the Erlang + external term format</fsummary> + <type> + <v>Term = term()</v> + <v>Option = {minor_version, Version}</v> + </type> + <desc> + <p>Calculates, without doing the encoding, the maximum byte size for + a term encoded in the Erlang external term format. The following + condition applies always:</p> + <p> + <pre> +> <input>Size1 = byte_size(term_to_binary(Term, Options)),</input> +> <input>Size2 = erlang:external_size(Term, Options),</input> +> <input>true = Size1 =< Size2.</input> +true + </pre> + </p> + <p>The option <c>{minor_version, Version}</c> specifies how floats + are encoded. See + <seealso marker="#term_to_binary/2">term_to_binary/2</seealso> for + a more detailed description. + </p> + </desc> + </func> + <func> <name>float(Number) -> float()</name> <fsummary>Convert a number to a float</fsummary> <type> diff --git a/erts/doc/src/erlsrv.xml b/erts/doc/src/erlsrv.xml index 0dfad2a112..919caa9542 100644 --- a/erts/doc/src/erlsrv.xml +++ b/erts/doc/src/erlsrv.xml @@ -273,7 +273,7 @@ </desc> </func> <func> - <name>erlsrv {start | stop | disable | enable} <service-name></name> + <name>erlsrv {start | start_disabled | stop | disable | enable} <service-name></name> <fsummary>Manipulate the current service status.</fsummary> <desc> <p>These commands are only added for convenience, the normal @@ -287,6 +287,21 @@ service actually is stopped. Enabling a service sets it in automatic mode, that is started at boot. This command cannot set the service to manual. </p> + + <p>The <c>start_disabled</c> command operates on a service + regardless of if it's enabled/disabled or started/stopped. It + does this by first enabling it (regardless of if it's enabled + or not), then starting it (if it's not already started) and + then disabling it. The result will be a disabled but started + service, regardless of its earlier state. This is useful for + starting services temporarily during a release upgrade. The + difference between using <c>start_disabled</c> and the + sequence <c>enable</c>, <c>start</c> and <c>disable</c> is + that all other <c>erlsrv</c> commands are locked out during + the sequence of operations in <c>start_disable</c>, making the + operation atomic from an <c>erlsrv</c> user's point of + view.</p> + </desc> </func> <func> diff --git a/erts/doc/src/start_erl.xml b/erts/doc/src/start_erl.xml index 21cc901f52..6f6930af7e 100644 --- a/erts/doc/src/start_erl.xml +++ b/erts/doc/src/start_erl.xml @@ -69,12 +69,29 @@ <c><![CDATA[erl]]></c> program. Everything <em>after</em><c><![CDATA[++]]></c> is interpreted as options to <c><![CDATA[start_erl]]></c> itself.</item> <tag>-reldir <release root></tag> - <item>Mandatory if the environment variable <c><![CDATA[RELDIR]]></c> is not - specified. Tells start_erl where the root of the - release tree is placed in the file-system - (like <Erlang root>\\releases). The - <c><![CDATA[start_erl.data]]></c> file is expected to be placed in - this directory (if not otherwise specified).</item> + + <item>Mandatory if the environment variable + <c><![CDATA[RELDIR]]></c> is not specified and no + <c>-rootdir</c> option is given. Tells start_erl where the + root of the release tree is placed in the file-system (typically + <Erlang root>\\releases). The + <c><![CDATA[start_erl.data]]></c> file is expected to be + placed in this directory (if not otherwise specified). If + only the <c>-rootdir</c> option is given, the directory is + assumed to be <Erlang root>\\releases.</item> + + <tag>-rootdir <Erlang root directory></tag> + + <item>Mandatory if <c>-reldir</c> is not given and there is + no <c><![CDATA[RELDIR]]></c> in the environment. This + specifies the Erlang installation root directory (under + which the <c>lib</c>, <c>releases</c> and + <c>erts-<Version></c> directories are placed). If only + <c>-reldir</c> (or the environment variable + <c><![CDATA[RELDIR]]></c>) is given, the Erlang root is assumed to + be the directory exactly one level above the release + directory.</item> + <tag>-data <data file name></tag> <item>Optional, specifies another data file than start_erl.data in the <release root>. It is specified relative to the diff --git a/erts/doc/src/zlib.xml b/erts/doc/src/zlib.xml index 47a649af02..8917ab5c3a 100644 --- a/erts/doc/src/zlib.xml +++ b/erts/doc/src/zlib.xml @@ -378,31 +378,31 @@ unpack(Z, Compressed, Dict) -> <name name="crc32" arity="2"/> <fsummary>Calculate CRC</fsummary> <desc> - <p>Calculate the CRC checksum for <c><anno>Binary</anno></c>.</p> + <p>Calculate the CRC checksum for <c><anno>Data</anno></c>.</p> </desc> </func> <func> <name name="crc32" arity="3"/> <fsummary>Calculate CRC</fsummary> <desc> - <p>Update a running CRC checksum for <c><anno>Binary</anno></c>. - If <c><anno>Binary</anno></c> is the empty binary, this function returns + <p>Update a running CRC checksum for <c><anno>Data</anno></c>. + If <c><anno>Data</anno></c> is the empty binary or the empty iolist, this function returns the required initial value for the crc.</p> <pre> -Crc = lists:foldl(fun(Bin,Crc0) -> - zlib:crc32(Z, Crc0, Bin), - end, zlib:crc32(Z,<< >>), Bins)</pre> +Crc = lists:foldl(fun(Data,Crc0) -> + zlib:crc32(Z, Crc0, Data), + end, zlib:crc32(Z,<< >>), Datas)</pre> </desc> </func> <func> <name name="crc32_combine" arity="4"/> <fsummary>Combine two CRC's</fsummary> <desc> - <p>Combine two CRC checksums into one. For two binaries, - <c>Bin1</c> and <c>Bin2</c> with sizes of <c>Size1</c> and + <p>Combine two CRC checksums into one. For two binaries or iolists, + <c>Data1</c> and <c>Data2</c> with sizes of <c>Size1</c> and <c><anno>Size2</anno></c>, with CRC checksums <c><anno>CRC1</anno></c> and <c><anno>CRC2</anno></c>. <c>crc32_combine/4</c> returns the <c><anno>CRC</anno></c> - checksum of <c><<Bin1/binary,Bin2/binary>></c>, requiring + checksum of <c>[Data1,Data2]</c>, requiring only <c><anno>CRC1</anno></c>, <c><anno>CRC2</anno></c>, and <c><anno>Size2</anno></c>. </p> </desc> @@ -411,75 +411,75 @@ Crc = lists:foldl(fun(Bin,Crc0) -> <name name="adler32" arity="2"/> <fsummary>Calculate the adler checksum</fsummary> <desc> - <p>Calculate the Adler-32 checksum for <c><anno>Binary</anno></c>.</p> + <p>Calculate the Adler-32 checksum for <c><anno>Data</anno></c>.</p> </desc> </func> <func> <name name="adler32" arity="3"/> <fsummary>Calculate the adler checksum</fsummary> <desc> - <p>Update a running Adler-32 checksum for <c><anno>Binary</anno></c>. - If <c><anno>Binary</anno></c> is the empty binary, this function returns + <p>Update a running Adler-32 checksum for <c><anno>Data</anno></c>. + If <c><anno>Data</anno></c> is the empty binary or the empty iolist, this function returns the required initial value for the checksum.</p> <pre> -Crc = lists:foldl(fun(Bin,Crc0) -> - zlib:adler32(Z, Crc0, Bin), - end, zlib:adler32(Z,<< >>), Bins)</pre> +Crc = lists:foldl(fun(Data,Crc0) -> + zlib:adler32(Z, Crc0, Data), + end, zlib:adler32(Z,<< >>), Datas)</pre> </desc> </func> <func> <name name="adler32_combine" arity="4"/> <fsummary>Combine two Adler-32 checksums</fsummary> <desc> - <p>Combine two Adler-32 checksums into one. For two binaries, - <c>Bin1</c> and <c>Bin2</c> with sizes of <c>Size1</c> and + <p>Combine two Adler-32 checksums into one. For two binaries or iolists, + <c>Data1</c> and <c>Data2</c> with sizes of <c>Size1</c> and <c><anno>Size2</anno></c>, with Adler-32 checksums <c><anno>Adler1</anno></c> and <c><anno>Adler2</anno></c>. <c>adler32_combine/4</c> returns the <c><anno>Adler</anno></c> - checksum of <c><<Bin1/binary,Bin2/binary>></c>, requiring + checksum of <c>[Data1,Data2]</c>, requiring only <c><anno>Adler1</anno></c>, <c><anno>Adler2</anno></c>, and <c><anno>Size2</anno></c>. </p> </desc> </func> <func> <name name="compress" arity="1"/> - <fsummary>Compress a binary with standard zlib functionality</fsummary> + <fsummary>Compress data with standard zlib functionality</fsummary> <desc> - <p>Compress a binary (with zlib headers and checksum).</p> + <p>Compress data (with zlib headers and checksum).</p> </desc> </func> <func> <name name="uncompress" arity="1"/> - <fsummary>Uncompress a binary with standard zlib functionality</fsummary> + <fsummary>Uncompress data with standard zlib functionality</fsummary> <desc> - <p>Uncompress a binary (with zlib headers and checksum).</p> + <p>Uncompress data (with zlib headers and checksum).</p> </desc> </func> <func> <name name="zip" arity="1"/> - <fsummary>Compress a binary without the zlib headers</fsummary> + <fsummary>Compress data without the zlib headers</fsummary> <desc> - <p>Compress a binary (without zlib headers and checksum).</p> + <p>Compress data (without zlib headers and checksum).</p> </desc> </func> <func> <name name="unzip" arity="1"/> - <fsummary>Uncompress a binary without the zlib headers</fsummary> + <fsummary>Uncompress data without the zlib headers</fsummary> <desc> - <p>Uncompress a binary (without zlib headers and checksum).</p> + <p>Uncompress data (without zlib headers and checksum).</p> </desc> </func> <func> <name name="gzip" arity="1"/> - <fsummary>Compress a binary with gz header</fsummary> + <fsummary>Compress data with gz header</fsummary> <desc> - <p>Compress a binary (with gz headers and checksum).</p> + <p>Compress data (with gz headers and checksum).</p> </desc> </func> <func> <name name="gunzip" arity="1"/> - <fsummary>Uncompress a binary with gz header</fsummary> + <fsummary>Uncompress data with gz header</fsummary> <desc> - <p>Uncompress a binary (with gz headers and checksum).</p> + <p>Uncompress data (with gz headers and checksum).</p> </desc> </func> </funcs> diff --git a/erts/emulator/beam/beam_bif_load.c b/erts/emulator/beam/beam_bif_load.c index d76a7d8e9f..2561d7a630 100644 --- a/erts/emulator/beam/beam_bif_load.c +++ b/erts/emulator/beam/beam_bif_load.c @@ -162,6 +162,23 @@ BIF_RETTYPE code_make_stub_module_3(BIF_ALIST_3) return res; } +BIF_RETTYPE +check_old_code_1(BIF_ALIST_1) +{ + Module* modp; + + if (is_not_atom(BIF_ARG_1)) { + BIF_ERROR(BIF_P, BADARG); + } + modp = erts_get_module(BIF_ARG_1); + if (modp == NULL) { /* Doesn't exist. */ + BIF_RET(am_false); + } else if (modp->old_code == NULL) { /* No old code. */ + BIF_RET(am_false); + } + BIF_RET(am_true); +} + Eterm check_process_code_2(BIF_ALIST_2) { @@ -175,6 +192,13 @@ check_process_code_2(BIF_ALIST_2) Eterm res; if (internal_pid_index(BIF_ARG_1) >= erts_max_processes) goto error; + modp = erts_get_module(BIF_ARG_2); + if (modp == NULL) { /* Doesn't exist. */ + return am_false; + } else if (modp->old_code == NULL) { /* No old code. */ + return am_false; + } + #ifdef ERTS_SMP rp = erts_pid2proc_suspend(BIF_P, ERTS_PROC_LOCK_MAIN, BIF_ARG_1, ERTS_PROC_LOCK_MAIN); @@ -188,7 +212,6 @@ check_process_code_2(BIF_ALIST_2) ERTS_BIF_YIELD2(bif_export[BIF_check_process_code_2], BIF_P, BIF_ARG_1, BIF_ARG_2); } - modp = erts_get_module(BIF_ARG_2); res = check_process_code(rp, modp); #ifdef ERTS_SMP if (BIF_P != rp) { @@ -412,11 +435,6 @@ check_process_code(Process* rp, Module* modp) #endif #define INSIDE(a) (start <= (a) && (a) < end) - if (modp == NULL) { /* Doesn't exist. */ - return am_false; - } else if (modp->old_code == NULL) { /* No old code. */ - return am_false; - } /* * Pick up limits for the module. diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab index d9dd80fa8b..831c0b1ce6 100644 --- a/erts/emulator/beam/bif.tab +++ b/erts/emulator/beam/bif.tab @@ -87,6 +87,8 @@ bif erlang:exit/2 bif 'erl.lang.proc':signal/2 ebif_signal_2 exit_2 bif erlang:external_size/1 bif 'erl.lang.term':external_size/1 ebif_external_size_1 +bif erlang:external_size/2 +bif 'erl.lang.term':external_size/2 ebif_external_size_2 ubif erlang:float/1 ubif 'erl.lang.number':to_float/1 ebif_to_float_1 float_1 bif erlang:float_to_list/1 @@ -802,6 +804,12 @@ bif prim_file:internal_name2native/1 bif prim_file:internal_native2name/1 bif prim_file:internal_normalize_utf8/1 bif file:native_name_encoding/0 + +# +# New in R14B04. +# +bif erlang:check_old_code/1 + # # Obsolete # diff --git a/erts/emulator/beam/erl_db.c b/erts/emulator/beam/erl_db.c index eb50f56502..e9bdeb35ef 100644 --- a/erts/emulator/beam/erl_db.c +++ b/erts/emulator/beam/erl_db.c @@ -3658,9 +3658,6 @@ static Eterm table_info(Process* p, DbTable* tb, Eterm What) ret = am_true; else ret = am_false; - } else if (What == am_atom_put("kept_objects",12)) { - ret = make_small(IS_HASH_TABLE(tb->common.status) - ? db_kept_items_hash(&tb->hash) : 0); } else if (What == am_atom_put("safe_fixed",10)) { #ifdef ERTS_SMP erts_smp_mtx_lock(&tb->common.fixlock); @@ -3702,7 +3699,7 @@ static Eterm table_info(Process* p, DbTable* tb, Eterm What) Eterm* hp; db_calc_stats_hash(&tb->hash, &stats); - hp = HAlloc(p, 1 + 6 + FLOAT_SIZE_OBJECT*3); + hp = HAlloc(p, 1 + 7 + FLOAT_SIZE_OBJECT*3); f.fd = stats.avg_chain_len; avg = make_float(hp); PUT_DOUBLE(f, hp); @@ -3717,10 +3714,11 @@ static Eterm table_info(Process* p, DbTable* tb, Eterm What) std_dev_exp = make_float(hp); PUT_DOUBLE(f, hp); hp += FLOAT_SIZE_OBJECT; - ret = TUPLE6(hp, make_small(erts_smp_atomic_read(&tb->hash.nactive)), + ret = TUPLE7(hp, make_small(erts_smp_atomic_read(&tb->hash.nactive)), avg, std_dev_real, std_dev_exp, make_small(stats.min_chain_len), - make_small(stats.max_chain_len)); + make_small(stats.max_chain_len), + make_small(db_kept_items_hash(&tb->hash))); } else { ret = am_false; diff --git a/erts/emulator/beam/erl_init.c b/erts/emulator/beam/erl_init.c index 0a57eb6d88..0173fd40f6 100644 --- a/erts/emulator/beam/erl_init.c +++ b/erts/emulator/beam/erl_init.c @@ -803,10 +803,12 @@ early_init(int *argc, char **argv) /* #if defined(HIPE) hipe_signal_init(); /* must be done very early */ #endif - erl_sys_init(); erl_sys_args(argc, argv); + /* Creates threads on Windows that depend on the arguments, so has to be after erl_sys_args */ + erl_sys_init(); + erts_ets_realloc_always_moves = 0; erts_ets_always_compress = 0; erts_dist_buf_busy_limit = ERTS_DE_BUSY_LIMIT; diff --git a/erts/emulator/beam/erl_nif.c b/erts/emulator/beam/erl_nif.c index d9b1a8e89d..6e7ac43676 100644 --- a/erts/emulator/beam/erl_nif.c +++ b/erts/emulator/beam/erl_nif.c @@ -578,7 +578,15 @@ int enif_is_identical(Eterm lhs, Eterm rhs) int enif_compare(Eterm lhs, Eterm rhs) { - return CMP(lhs,rhs); + Sint result = CMP(lhs,rhs); + + if (result < 0) { + return -1; + } else if (result > 0) { + return 1; + } + + return result; } int enif_get_tuple(ErlNifEnv* env, Eterm tpl, int* arity, const Eterm** array) diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index 2704359a8f..d8aed63544 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -5782,10 +5782,13 @@ erts_sched_stat_term(Process *p, int total) void erts_schedule_misc_op(void (*func)(void *), void *arg) { - ErtsRunQueue *rq = erts_get_runq_current(NULL); + ErtsRunQueue *rq; ErtsMiscOpList *molp = misc_op_list_alloc(); + ErtsSchedulerData *esdp = erts_get_scheduler_data(); - if (!rq) { + if (esdp) { + rq = esdp->run_queue; + } else { /* * This can only happen when the sys msg dispatcher * thread schedules misc ops (this happens *very* diff --git a/erts/emulator/beam/erl_threads.h b/erts/emulator/beam/erl_threads.h index 8c9cace0c5..a0eda61ba5 100644 --- a/erts/emulator/beam/erl_threads.h +++ b/erts/emulator/beam/erl_threads.h @@ -571,8 +571,9 @@ erts_mtx_destroy(erts_mtx_t *mtx) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy mutex"); + erts_thr_fatal_error(res, "destroy mutex"); } #endif } @@ -675,8 +676,9 @@ erts_cnd_destroy(erts_cnd_t *cnd) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy condition variable"); + erts_thr_fatal_error(res, "destroy condition variable"); } #endif } @@ -810,8 +812,9 @@ erts_rwmtx_destroy(erts_rwmtx_t *rwmtx) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy rwmutex"); + erts_thr_fatal_error(res, "destroy rwmutex"); } #endif } @@ -1496,8 +1499,9 @@ erts_spinlock_destroy(erts_spinlock_t *lock) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy rwlock"); + erts_thr_fatal_error(res, "destroy rwlock"); } #else (void)lock; @@ -1614,8 +1618,9 @@ erts_rwlock_destroy(erts_rwlock_t *lock) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy rwlock"); + erts_thr_fatal_error(res, "destroy rwlock"); } #else (void)lock; diff --git a/erts/emulator/beam/external.c b/erts/emulator/beam/external.c index 1a102f7187..6953e7fe7d 100644 --- a/erts/emulator/beam/external.c +++ b/erts/emulator/beam/external.c @@ -459,6 +459,12 @@ Uint erts_encode_ext_size(Eterm term) + 1 /* VERSION_MAGIC */; } +Uint erts_encode_ext_size_2(Eterm term, unsigned dflags) +{ + return encode_size_struct2(NULL, term, TERM_TO_BINARY_DFLAGS|dflags) + + 1 /* VERSION_MAGIC */; +} + Uint erts_encode_ext_size_ets(Eterm term) { return encode_size_struct2(NULL, term, TERM_TO_BINARY_DFLAGS|DFLAGS_INTERNAL_TAGS); @@ -1262,6 +1268,49 @@ external_size_1(Process* p, Eterm Term) } Eterm +external_size_2(Process* p, Eterm Term, Eterm Flags) +{ + Uint size; + Uint flags = TERM_TO_BINARY_DFLAGS; + + while (is_list(Flags)) { + Eterm arg = CAR(list_val(Flags)); + Eterm* tp; + + if (is_tuple(arg) && *(tp = tuple_val(arg)) == make_arityval(2)) { + if (tp[1] == am_minor_version && is_small(tp[2])) { + switch (signed_val(tp[2])) { + case 0: + break; + case 1: + flags |= DFLAG_NEW_FLOATS; + break; + default: + goto error; + } + } else { + goto error; + } + } else { + error: + BIF_ERROR(p, BADARG); + } + Flags = CDR(list_val(Flags)); + } + if (is_not_nil(Flags)) { + goto error; + } + + size = erts_encode_ext_size_2(Term, flags); + if (IS_USMALL(0, size)) { + BIF_RET(make_small(size)); + } else { + Eterm* hp = HAlloc(p, BIG_UINT_HEAP_SIZE); + BIF_RET(uint_to_big(size, hp)); + } +} + +Eterm erts_term_to_binary(Process* p, Eterm Term, int level, Uint flags) { Uint size; diff --git a/erts/emulator/beam/external.h b/erts/emulator/beam/external.h index d8287b96a4..72fe74baf2 100644 --- a/erts/emulator/beam/external.h +++ b/erts/emulator/beam/external.h @@ -160,6 +160,7 @@ Uint erts_encode_dist_ext_size(Eterm, Uint32, ErtsAtomCacheMap *); void erts_encode_dist_ext(Eterm, byte **, Uint32, ErtsAtomCacheMap *); Uint erts_encode_ext_size(Eterm); +Uint erts_encode_ext_size_2(Eterm, unsigned); Uint erts_encode_ext_size_ets(Eterm); void erts_encode_ext(Eterm, byte **); byte* erts_encode_ext_ets(Eterm, byte *, struct erl_off_heap_header** ext_off_heap); diff --git a/erts/emulator/drivers/win32/win_efile.c b/erts/emulator/drivers/win32/win_efile.c index 3d59564f7b..931bb196f1 100755 --- a/erts/emulator/drivers/win32/win_efile.c +++ b/erts/emulator/drivers/win32/win_efile.c @@ -127,6 +127,8 @@ static int errno_map(DWORD last_error) { return EBUSY; case ERROR_NO_PROC_SLOTS: return EAGAIN; + case ERROR_CANT_RESOLVE_FILENAME: + return EMLINK; case ERROR_ARENA_TRASHED: case ERROR_INVALID_BLOCK: case ERROR_BAD_ENVIRONMENT: @@ -1405,7 +1407,7 @@ efile_readlink(Efile_error* errInfo, char* name, char* buffer, size_t size) DWORD fileAttributes = GetFileAttributesW(wname); if ((fileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) { BOOLEAN success = 0; - HANDLE h = CreateFileW(wname, GENERIC_READ, 0,NULL, OPEN_EXISTING, 0, NULL); + HANDLE h = CreateFileW(wname, GENERIC_READ, 0,NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); int len; if(h != INVALID_HANDLE_VALUE) { success = pGetFinalPathNameByHandle(h, wbuffer, size,0); @@ -1421,7 +1423,7 @@ efile_readlink(Efile_error* errInfo, char* name, char* buffer, size_t size) if (*wbuffer == L'\\') *wbuffer = L'/'; CloseHandle(h); - } + } FreeLibrary(hModule); if (success) { return 1; diff --git a/erts/emulator/sys/unix/sys.c b/erts/emulator/sys/unix/sys.c index bafbbb0f6c..e5ee0df7fa 100644 --- a/erts/emulator/sys/unix/sys.c +++ b/erts/emulator/sys/unix/sys.c @@ -527,7 +527,6 @@ erts_sys_pre_init(void) void erl_sys_init(void) { - erts_smp_rwmtx_init(&environ_rwmtx, "environ"); #if !DISABLE_VFORK { int res; @@ -3090,6 +3089,8 @@ erl_sys_args(int* argc, char** argv) { int i, j; + erts_smp_rwmtx_init(&environ_rwmtx, "environ"); + i = 1; ASSERT(argc && argv); @@ -3151,4 +3152,5 @@ erl_sys_args(int* argc, char** argv) argv[j++] = argv[i]; } *argc = j; + } diff --git a/erts/emulator/sys/win32/sys.c b/erts/emulator/sys/win32/sys.c index a2159d063c..76db355a9c 100644 --- a/erts/emulator/sys/win32/sys.c +++ b/erts/emulator/sys/win32/sys.c @@ -3282,6 +3282,7 @@ erts_sys_pre_init(void) } #endif erts_smp_atomic_init(&sys_misc_mem_sz, 0); + erts_sys_env_init(); } void noinherit_std_handle(DWORD type) @@ -3297,8 +3298,6 @@ void erl_sys_init(void) { HANDLE handle; - erts_sys_env_init(); - noinherit_std_handle(STD_OUTPUT_HANDLE); noinherit_std_handle(STD_INPUT_HANDLE); noinherit_std_handle(STD_ERROR_HANDLE); diff --git a/erts/emulator/test/binary_SUITE.erl b/erts/emulator/test/binary_SUITE.erl index 4e82381fba..fed5854112 100644 --- a/erts/emulator/test/binary_SUITE.erl +++ b/erts/emulator/test/binary_SUITE.erl @@ -478,6 +478,11 @@ terms(Config) when is_list(Config) -> Sz when is_integer(Sz), size(Bin) =< Sz -> ok end, + Bin1 = term_to_binary(Term, [{minor_version, 1}]), + case erlang:external_size(Bin1, [{minor_version, 1}]) of + Sz1 when is_integer(Sz1), size(Bin1) =< Sz1 -> + ok + end, Term = binary_to_term(Bin), Term = binary_to_term(Bin, [safe]), Unaligned = make_unaligned_sub_binary(Bin), @@ -510,7 +515,12 @@ terms_float(Config) when is_list(Config) -> Term = binary_to_term(Bin0), Bin1 = term_to_binary(Term, [{minor_version,1}]), Term = binary_to_term(Bin1), - true = size(Bin1) < size(Bin0) + true = size(Bin1) < size(Bin0), + Size0 = erlang:external_size(Term), + Size00 = erlang:external_size(Term, [{minor_version, 0}]), + Size1 = erlang:external_size(Term, [{minor_version, 1}]), + true = (Size0 =:= Size00), + true = Size1 < Size0 end). external_size(Config) when is_list(Config) -> @@ -526,7 +536,9 @@ external_size(Config) when is_list(Config) -> io:format(" Aligned size: ~p\n", [Sz1]), io:format("Unaligned size: ~p\n", [Sz2]), ?line ?t:fail() - end. + end, + ?line erlang:external_size(Bin) =:= erlang:external_size(Bin, [{minor_version, 1}]), + ?line erlang:external_size(Unaligned) =:= erlang:external_size(Unaligned, [{minor_version, 1}]). external_size_1(Term, Size0, Limit) when Size0 < Limit -> case erlang:external_size(Term) of diff --git a/erts/emulator/test/code_SUITE.erl b/erts/emulator/test/code_SUITE.erl index a062cea117..29cbdedd17 100644 --- a/erts/emulator/test/code_SUITE.erl +++ b/erts/emulator/test/code_SUITE.erl @@ -20,7 +20,9 @@ -module(code_SUITE). -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, init_per_group/2,end_per_group/2, - new_binary_types/1,t_check_process_code/1,t_check_process_code_ets/1, + new_binary_types/1, + t_check_process_code/1,t_check_old_code/1, + t_check_process_code_ets/1, external_fun/1,get_chunk/1,module_md5/1,make_stub/1, make_stub_many_funs/1,constant_pools/1, false_dependency/1,coverage/1]). @@ -31,7 +33,7 @@ suite() -> [{ct_hooks,[ts_install_cth]}]. all() -> [new_binary_types, t_check_process_code, - t_check_process_code_ets, external_fun, get_chunk, + t_check_process_code_ets, t_check_old_code, external_fun, get_chunk, module_md5, make_stub, make_stub_many_funs, constant_pools, false_dependency, coverage]. @@ -248,6 +250,32 @@ fun_refc(F) -> Count. +%% Test the erlang:check_old_code/1 BIF. +t_check_old_code(Config) when is_list(Config) -> + ?line Data = ?config(data_dir, Config), + ?line File = filename:join(Data, "my_code_test"), + + ?line erlang:purge_module(my_code_test), + ?line erlang:delete_module(my_code_test), + ?line catch erlang:purge_module(my_code_test), + + ?line false = erlang:check_old_code(my_code_test), + + ?line {ok,my_code_test,Code} = compile:file(File, [binary]), + ?line {module,my_code_test} = code:load_binary(my_code_test, File, Code), + + ?line false = erlang:check_old_code(my_code_test), + ?line {module,my_code_test} = code:load_binary(my_code_test, File, Code), + ?line true = erlang:check_old_code(my_code_test), + + ?line true = erlang:purge_module(my_code_test), + ?line true = erlang:delete_module(my_code_test), + ?line true = erlang:purge_module(my_code_test), + + ?line {'EXIT',_} = (catch erlang:check_old_code([])), + + ok. + external_fun(Config) when is_list(Config) -> ?line false = erlang:function_exported(another_code_test, x, 1), ?line ExtFun = erlang:make_fun(id(another_code_test), x, 1), diff --git a/erts/emulator/test/nif_SUITE.erl b/erts/emulator/test/nif_SUITE.erl index 2867e8e2e4..f6344791f1 100644 --- a/erts/emulator/test/nif_SUITE.erl +++ b/erts/emulator/test/nif_SUITE.erl @@ -281,6 +281,12 @@ types(Config) when is_list(Config) -> end, int_list()), ?line verify_tmpmem(TmpMem), + ?line true = (compare(-1294536544000, -1178704800000) < 0), + ?line true = (compare(-1178704800000, -1294536544000) > 0), + ?line true = (compare(-295147905179352825856, -36893488147419103232) < 0), + ?line true = (compare(-36893488147419103232, -295147905179352825856) > 0), + ?line true = (compare(-29514790517935282585612345678, -36893488147419103232) < 0), + ?line true = (compare(-36893488147419103232, -29514790517935282585612345678) > 0), ok. int_list() -> diff --git a/erts/epmd/src/epmd.c b/erts/epmd/src/epmd.c index 08576d923f..2267f9b12b 100644 --- a/erts/epmd/src/epmd.c +++ b/erts/epmd/src/epmd.c @@ -324,7 +324,11 @@ static void run_daemon(EpmdVars *g) } /* move cwd to root to make sure we are not on a mounted filesystem */ - chdir("/"); + if (chdir("/") < 0) + { + dbg_perror(g,"epmd: chdir() failed"); + epmd_cleanup_exit(g,1); + } umask(0); diff --git a/erts/epmd/src/epmd_cli.c b/erts/epmd/src/epmd_cli.c index ac55ba6bb6..2377c0dfe7 100644 --- a/erts/epmd/src/epmd_cli.c +++ b/erts/epmd/src/epmd_cli.c @@ -104,7 +104,10 @@ void epmd_call(EpmdVars *g,int what) fd = conn_to_epmd(g); put_int16(1,buf); buf[2] = what; - write(fd,buf,3); + if (write(fd, buf, 3) != 3) { + printf("epmd: Can't write to epmd\n"); + epmd_cleanup_exit(g,1); + } if (read(fd,(char *)&i,4) != 4) { if (!g->silent) printf("epmd: no response from local epmd\n"); diff --git a/erts/epmd/src/epmd_srv.c b/erts/epmd/src/epmd_srv.c index 5debae26b6..da575affa1 100644 --- a/erts/epmd/src/epmd_srv.c +++ b/erts/epmd/src/epmd_srv.c @@ -102,7 +102,8 @@ void run(EpmdVars *g) dbg_printf(g,2,"try to initiate listening port %d", g->port); - if (g->addresses != NULL) + if (g->addresses != NULL && /* String contains non-separator characters if: */ + g->addresses[strspn(g->addresses," ,")] != '\000') { char *tmp; char *token; diff --git a/erts/etc/win32/erlsrv/erlsrv_interactive.c b/erts/etc/win32/erlsrv/erlsrv_interactive.c index 13e029b364..4c990a694d 100644 --- a/erts/etc/win32/erlsrv/erlsrv_interactive.c +++ b/erts/etc/win32/erlsrv/erlsrv_interactive.c @@ -135,7 +135,12 @@ void print_last_error(void){ fprintf(stderr,"Error: %s",mes); LocalFree(mes); } - + +static int get_last_error(void) +{ + return (last_error) ? last_error : GetLastError(); +} + static BOOL install_service(void){ SC_HANDLE scm; SC_HANDLE service; @@ -508,7 +513,7 @@ int do_usage(char *arg0){ "\t[{-sn[ame] | -n[ame]} [<nodename>]]\n" "\t[-d[ebugtype] [{new|reuse|console}]]\n" "\t[-ar[gs] [<limited erl arguments>]]\n\n" - "%s {start | stop | disable | enable} <servicename>\n\n" + "%s {start | start_disabled | stop | disable | enable} <servicename>\n\n" "%s remove <servicename>\n\n" "%s rename <servicename> <servicename>\n\n" "%s list [<servicename>]\n\n" @@ -561,6 +566,45 @@ int do_manage(int argc,char **argv){ return 0; } } + if(!_stricmp(action,"start_disabled")){ + if(!enable_service()){ + fprintf(stderr,"%s: Failed to enable service %s.\n", + argv[0],service_name); + print_last_error(); + return 1; + } + if(!start_service() && get_last_error() != ERROR_SERVICE_ALREADY_RUNNING){ + fprintf(stderr,"%s: Failed to start service %s.\n", + argv[0],service_name); + print_last_error(); + goto failure_starting; + } + + if(!wait_service_trans(SERVICE_STOPPED, SERVICE_START_PENDING, + SERVICE_RUNNING, 60)){ + fprintf(stderr,"%s: Failed to start service %s.\n", + argv[0],service_name); + print_last_error(); + goto failure_starting; + } + + if(!disable_service()){ + fprintf(stderr,"%s: Failed to disable service %s.\n", + argv[0],service_name); + print_last_error(); + return 1; + } + printf("%s: Service %s started.\n", + argv[0],service_name); + return 0; + failure_starting: + if(!disable_service()){ + fprintf(stderr,"%s: Failed to disable service %s.\n", + argv[0],service_name); + print_last_error(); + } + return 1; + } if(!_stricmp(action,"stop")){ if(!stop_service()){ fprintf(stderr,"%s: Failed to stop service %s.\n", @@ -841,6 +885,7 @@ int do_add_or_set(int argc, char **argv){ argv[0], service_name); return 0; } + int do_rename(int argc, char **argv){ RegEntry *current = empty_reg_tab(); RegEntry *dummy = empty_reg_tab(); @@ -1129,35 +1174,131 @@ void read_arguments(int *pargc, char ***pargv){ *pargc = argc; *pargv = argv; } + +/* Create a free-for-all ACL to set on the semaphore */ +PACL get_acl(PSECURITY_DESCRIPTOR secdescp) +{ + DWORD acl_length = 0; + PSID auth_users_sidp = NULL; + PACL aclp = NULL; + SID_IDENTIFIER_AUTHORITY ntauth = SECURITY_NT_AUTHORITY; + + if(!InitializeSecurityDescriptor(secdescp, SECURITY_DESCRIPTOR_REVISION)) { + return NULL; + } + + if(!AllocateAndInitializeSid(&ntauth, + 1, + SECURITY_AUTHENTICATED_USER_RID, + 0, 0, 0, 0, 0, 0, 0, + &auth_users_sidp)) { + return NULL; + } + + acl_length = sizeof(ACL) + + sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD) + + GetLengthSid(auth_users_sidp); + + if((aclp = (PACL) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, acl_length)) == NULL) { + FreeSid(auth_users_sidp); + return NULL; + } + + if(!InitializeAcl(aclp, acl_length, ACL_REVISION)) { + FreeSid(auth_users_sidp); + HeapFree(GetProcessHeap(), 0, aclp); + return NULL; + } + + if(!AddAccessAllowedAce(aclp, ACL_REVISION, SEMAPHORE_ALL_ACCESS, auth_users_sidp)) { + FreeSid(auth_users_sidp); + HeapFree(GetProcessHeap(), 0, aclp); + return NULL; + } + + if(!SetSecurityDescriptorDacl(secdescp, TRUE, aclp, FALSE)) { + FreeSid(auth_users_sidp); + HeapFree(GetProcessHeap(), 0, aclp); + return NULL; + } + return aclp; +} + +static HANDLE lock_semaphore = NULL; + +int take_lock(void) { + SECURITY_ATTRIBUTES attr; + PACL aclp; + SECURITY_DESCRIPTOR secdesc; + + if ((aclp = get_acl(&secdesc)) == NULL) { + return -1; + } + + memset(&attr,0,sizeof(attr)); + attr.nLength = sizeof(attr); + attr.lpSecurityDescriptor = &secdesc; + attr.bInheritHandle = FALSE; + + if ((lock_semaphore = CreateSemaphore(&attr, 1, 1, ERLSRV_INTERACTIVE_GLOBAL_SEMAPHORE)) == NULL) { + return -1; + } + + if (WaitForSingleObject(lock_semaphore,INFINITE) != WAIT_OBJECT_0) { + return -1; + } + + HeapFree(GetProcessHeap(), 0, aclp); + return 0; +} + +void release_lock(void) { + ReleaseSemaphore(lock_semaphore,1,NULL); +} + int interactive_main(int argc, char **argv){ char *action = argv[1]; - + int res; + + if (take_lock() != 0) { + fprintf(stderr,"%s: unable to acquire global lock (%s).\n",argv[0], + ERLSRV_INTERACTIVE_GLOBAL_SEMAPHORE); + return 1; + } + if(!_stricmp(action,"readargs")){ - read_arguments(&argc,&argv); - action = argv[1]; + read_arguments(&argc,&argv); + action = argv[1]; } if(!_stricmp(action,"set") || !_stricmp(action,"add")) - return do_add_or_set(argc,argv); - if(!_stricmp(action,"rename")) - return do_rename(argc,argv); - if(!_stricmp(action,"remove")) - return do_remove(argc,argv); - if(!_stricmp(action,"list")) - return do_list(argc,argv); - if(!_stricmp(action,"start") || - !_stricmp(action,"stop") || - !_stricmp(action,"enable") || - !_stricmp(action,"disable")) - return do_manage(argc,argv); - if(_stricmp(action,"?") && - _stricmp(action,"/?") && - _stricmp(action,"-?") && - *action != 'h' && - *action != 'H') + res = do_add_or_set(argc,argv); + else if(!_stricmp(action,"rename")) + res = do_rename(argc,argv); + else if(!_stricmp(action,"remove")) + res = do_remove(argc,argv); + else if(!_stricmp(action,"list")) + res = do_list(argc,argv); + else if(!_stricmp(action,"start") || + !_stricmp(action,"start_disabled") || + !_stricmp(action,"stop") || + !_stricmp(action,"enable") || + !_stricmp(action,"disable")) + res = do_manage(argc,argv); + else if(_stricmp(action,"?") && + _stricmp(action,"/?") && + _stricmp(action,"-?") && + *action != 'h' && + *action != 'H') { fprintf(stderr,"%s: action %s not implemented.\n",argv[0],action); - do_usage(argv[0]); - return 1; + do_usage(argv[0]); + res = 1; + } else { + do_usage(argv[0]); + res = 0; + } + release_lock(); + return res; } diff --git a/erts/etc/win32/erlsrv/erlsrv_interactive.h b/erts/etc/win32/erlsrv/erlsrv_interactive.h index deacf81899..602da24575 100644 --- a/erts/etc/win32/erlsrv/erlsrv_interactive.h +++ b/erts/etc/win32/erlsrv/erlsrv_interactive.h @@ -19,6 +19,8 @@ #ifndef _ERLSRV_INTERACTIVE_H #define _ERLSRV_INTERACTIVE_H +#define ERLSRV_INTERACTIVE_GLOBAL_SEMAPHORE "{468d6954-e355-415f-968f-d257cb0feef4}" + int interactive_main(int argc, char **argv); #endif /* _ERLSRV_INTERACTIVE_H */ diff --git a/erts/etc/win32/start_erl.c b/erts/etc/win32/start_erl.c index dcf8c8b281..6ca7dd9b99 100644 --- a/erts/etc/win32/start_erl.c +++ b/erts/etc/win32/start_erl.c @@ -44,6 +44,8 @@ char *progname; #endif #define RELEASE_SUBDIR "\\releases" +#define ERTS_SUBDIR_PREFIX "\\erts-" +#define BIN_SUBDIR "\\bin" #define REGISTRY_BASE "Software\\Ericsson\\Erlang\\" #define DEFAULT_DATAFILE "start_erl.data" @@ -101,7 +103,8 @@ void exit_help(char *err) printf("Usage:\n%s\n" " [<erlang options>] ++\n" " [-data <datafile>]\n" - " [-reldir <releasedir>]\n" + " {-rootdir <erlang root directory> | \n" + " -reldir <releasedir>}\n" " [-bootflags <bootflagsfile>]\n" " [-noconfig]\n", progname); @@ -177,8 +180,9 @@ void split_commandline(void) */ char * unquote_optionarg(char *str, char **strp) { - char *newstr = (char *)malloc(strlen(str)+1); /* This one is realloc:ed later */ - int i=0, inquote=0; + char *newstr = (char *)malloc(strlen(str)+1); /* This one is + realloc:ed later */ + int i = 0, inquote = 0; assert(newstr); assert(str); @@ -223,8 +227,8 @@ char * unquote_optionarg(char *str, char **strp) /* - * Parses MyCommandLine and tries to fill in all the required option variables - * (one way or another). + * Parses MyCommandLine and tries to fill in all the required option + * variables (in one way or another). */ void parse_commandline(void) { @@ -237,6 +241,11 @@ void parse_commandline(void) *cmdline++; if( strnicmp(cmdline, "data", 4) == 0) { DataFileName = unquote_optionarg(cmdline+4, &cmdline); + } else if( strnicmp(cmdline, "rootdir", 7) == 0) { + RootDir = unquote_optionarg(cmdline+7, &cmdline); +#ifdef _DEBUG + fprintf(stderr, "RootDir: '%s'\n", RootDir); +#endif } else if( strnicmp(cmdline, "reldir", 6) == 0) { RelDir = unquote_optionarg(cmdline+6, &cmdline); #ifdef _DEBUG @@ -266,8 +275,8 @@ void parse_commandline(void) * Read the data file specified and get the version and release number * from it. * - * This function also construct the correct RegistryKey from the version information - * retrieved. + * This function also construct the correct RegistryKey from the version + * information retrieved. */ void read_datafile(void) { @@ -325,88 +334,6 @@ void read_datafile(void) /* - * Read the registry keys we need - */ -void read_registry_keys(void) -{ - HKEY hReg; - ULONG lLen; - - /* Create the RegistryKey name */ - RegistryKey = (char *) malloc(strlen(REGISTRY_BASE) + - strlen(Version) + 1); - assert(RegistryKey); - sprintf(RegistryKey, REGISTRY_BASE "%s", Version); - - /* We always need to find BinDir */ - if( (RegOpenKeyEx(HKEY_LOCAL_MACHINE, - RegistryKey, - 0, - KEY_READ, - &hReg)) != ERROR_SUCCESS ) { - exit_help("Could not open registry key."); - } - - /* First query size of data */ - if( (RegQueryValueEx(hReg, - "Bindir", - NULL, - NULL, - NULL, - &lLen)) != ERROR_SUCCESS) { - exit_help("Failed to query BinDir of release.\n"); - } - - /* Allocate enough space */ - BinDir = (char *)malloc(lLen+1); - assert(BinDir); - /* Retrieve the value */ - if( (RegQueryValueEx(hReg, - "Bindir", - NULL, - NULL, - (unsigned char *) BinDir, - &lLen)) != ERROR_SUCCESS) { - exit_help("Failed to query BinDir of release (2).\n"); - } - -#ifdef _DEBUG - fprintf(stderr, "Bindir: '%s'\n", BinDir); -#endif - - /* We also need the rootdir, in case we need to build RelDir later */ - - /* First query size of data */ - if( (RegQueryValueEx(hReg, - "Rootdir", - NULL, - NULL, - NULL, - &lLen)) != ERROR_SUCCESS) { - exit_help("Failed to query RootDir of release.\n"); - } - - /* Allocate enough space */ - RootDir = (char *) malloc(lLen+1); - assert(RootDir); - /* Retrieve the value */ - if( (RegQueryValueEx(hReg, - "Rootdir", - NULL, - NULL, - (unsigned char *) RootDir, - &lLen)) != ERROR_SUCCESS) { - exit_help("Failed to query RootDir of release (2).\n"); - } - -#ifdef _DEBUG - fprintf(stderr, "Rootdir: '%s'\n", RootDir); -#endif - - RegCloseKey(hReg); -} - -/* * Read the bootflags. This file contains extra command line options to erl.exe */ void read_bootflags(void) @@ -424,7 +351,8 @@ void read_bootflags(void) exit_help("Need -reldir when -bootflags " "filename has relative path."); } else { - newname = (char *)malloc(strlen(BootFlagsFile)+strlen(RelDir)+strlen(Release)+3); + newname = (char *)malloc(strlen(BootFlagsFile)+ + strlen(RelDir)+strlen(Release)+3); assert(newname); sprintf(newname, "%s\\%s\\%s", RelDir, Release, BootFlagsFile); free(BootFlagsFile); @@ -436,8 +364,6 @@ void read_bootflags(void) fprintf(stderr, "BootFlagsFile: '%s'\n", BootFlagsFile); #endif - - if( (fp=fopen(BootFlagsFile, "rb")) == NULL) { exit_help("Could not open BootFlags file."); } @@ -605,32 +531,49 @@ void complete_options(void) sz = nsz; } if (RelDir == NULL) { - if(DataFileName){ - /* Needs to be absolute for this to work, but we - can try... */ - read_datafile(); - read_registry_keys(); - } else { - /* Impossible to find all data... */ - exit_help("Need either Release directory or an absolute " - "datafile name."); - } - /* Ok, construct our own RelDir from RootDir */ - RelDir = (char *) malloc(strlen(RootDir)+strlen(RELEASE_SUBDIR)+1); - assert(RelDir); - sprintf(RelDir, "%s" RELEASE_SUBDIR, RootDir); + if (!RootDir) { + /* Impossible to find all data... */ + exit_help("Need either Root directory nor Release directory."); + } + /* Ok, construct our own RelDir from RootDir */ + RelDir = (char *) malloc(strlen(RootDir)+strlen(RELEASE_SUBDIR)+1); + assert(RelDir); + sprintf(RelDir, "%s" RELEASE_SUBDIR, RootDir); + read_datafile(); } else { read_datafile(); - read_registry_keys(); } } else { read_datafile(); - read_registry_keys(); } + if( !RootDir ) { + /* Try to construct RootDir from RelDir */ + char *p; + RootDir = malloc(strlen(RelDir)+1); + strcpy(RootDir,RelDir); + p = RootDir+strlen(RootDir)-1; + if (p >= RootDir && (*p == '/' || *p == '\\')) + --p; + while (p >= RootDir && *p != '/' && *p != '\\') + --p; + if (p <= RootDir) { /* Empty RootDir is also an error */ + exit_help("Cannot determine Root directory from " + "Release directory."); + } + *p = '\0'; + } + + + BinDir = (char *) malloc(strlen(RootDir)+strlen(ERTS_SUBDIR_PREFIX)+ + strlen(Version)+strlen(BIN_SUBDIR)+1); + assert(BinDir); + sprintf(BinDir, "%s" ERTS_SUBDIR_PREFIX "%s" BIN_SUBDIR, RootDir, Version); + read_bootflags(); #ifdef _DEBUG fprintf(stderr, "RelDir: '%s'\n", RelDir); + fprintf(stderr, "BinDir: '%s'\n", BinDir); #endif } diff --git a/erts/lib_src/common/erl_misc_utils.c b/erts/lib_src/common/erl_misc_utils.c index 35b148990a..5e94ff19db 100644 --- a/erts/lib_src/common/erl_misc_utils.c +++ b/erts/lib_src/common/erl_misc_utils.c @@ -55,6 +55,12 @@ # ifdef HAVE_UNISTD_H # include <unistd.h> # endif +# if defined(_SC_NPROC_CONF) && !defined(_SC_NPROCESSORS_CONF) +# define _SC_NPROCESSORS_CONF _SC_NPROC_CONF +# endif +# if defined(_SC_NPROC_ONLN) && !defined(_SC_NPROCESSORS_ONLN) +# define _SC_NPROCESSORS_ONLN _SC_NPROC_ONLN +# endif # if (defined(NO_SYSCONF) || !defined(_SC_NPROCESSORS_CONF)) # ifdef HAVE_SYS_SYSCTL_H # include <sys/sysctl.h> diff --git a/erts/lib_src/common/erl_printf.c b/erts/lib_src/common/erl_printf.c index 72d18ab6f1..6aa4569d44 100644 --- a/erts/lib_src/common/erl_printf.c +++ b/erts/lib_src/common/erl_printf.c @@ -108,7 +108,7 @@ write_f_add_cr(void *vfp, char* buf, size_t len) if (PUTC(buf[i], (FILE *) vfp) == EOF) return get_error_result(); } - return 0; + return len; } static int @@ -126,13 +126,14 @@ write_f(void *vfp, char* buf, size_t len) #endif if (FWRITE((void *) buf, sizeof(char), len, (FILE *) vfp) != len) return get_error_result(); - return 0; + return len; } static int write_fd(void *vfdp, char* buf, size_t len) { ssize_t size; + size_t res = len; ASSERT(vfdp); while (len) { @@ -149,7 +150,7 @@ write_fd(void *vfdp, char* buf, size_t len) len -= size; } - return 0; + return res; } static int @@ -160,7 +161,7 @@ write_s(void *vwbufpp, char* bufp, size_t len) ASSERT(len > 0); memcpy((void *) *wbufpp, (void *) bufp, len); *wbufpp += len; - return 0; + return len; } @@ -182,6 +183,7 @@ write_sn(void *vwsnap, char* buf, size_t len) memcpy((void *) wsnap->buf, (void *) buf, sz); wsnap->buf += sz; wsnap->len -= sz; + return sz; } return 0; } @@ -201,7 +203,7 @@ write_ds(void *vdsbufp, char* buf, size_t len) } memcpy((void *) (dsbufp->str + dsbufp->str_len), (void *) buf, len); dsbufp->str_len += len; - return 0; + return len; } int diff --git a/erts/preloaded/ebin/zlib.beam b/erts/preloaded/ebin/zlib.beam Binary files differindex d400269ed0..cda53f7692 100644 --- a/erts/preloaded/ebin/zlib.beam +++ b/erts/preloaded/ebin/zlib.beam diff --git a/erts/preloaded/src/zlib.erl b/erts/preloaded/src/zlib.erl index 6cc7b27114..210532edac 100644 --- a/erts/preloaded/src/zlib.erl +++ b/erts/preloaded/src/zlib.erl @@ -173,7 +173,7 @@ deflateInit(Z, Level, Method, WindowBits, MemLevel, Strategy) -> -spec deflateSetDictionary(Z, Dictionary) -> Adler32 when Z :: zstream(), - Dictionary :: binary(), + Dictionary :: iodata(), Adler32 :: integer(). deflateSetDictionary(Z, Dictionary) -> call(Z, ?DEFLATE_SETDICT, Dictionary). @@ -232,7 +232,7 @@ inflateInit(Z, WindowBits) -> -spec inflateSetDictionary(Z, Dictionary) -> 'ok' when Z :: zstream(), - Dictionary :: binary(). + Dictionary :: iodata(). inflateSetDictionary(Z, Dictionary) -> call(Z, ?INFLATE_SETDICT, Dictionary). @@ -283,38 +283,36 @@ getBufSize(Z) -> crc32(Z) -> call(Z, ?CRC32_0, []). --spec crc32(Z, Binary) -> CRC when +-spec crc32(Z, Data) -> CRC when Z :: zstream(), - Binary :: binary(), + Data :: iodata(), CRC :: integer(). -crc32(Z, Binary) -> - call(Z, ?CRC32_1, Binary). +crc32(Z, Data) -> + call(Z, ?CRC32_1, Data). --spec crc32(Z, PrevCRC, Binary) -> CRC when +-spec crc32(Z, PrevCRC, Data) -> CRC when Z :: zstream(), PrevCRC :: integer(), - Binary :: binary(), + Data :: iodata(), CRC :: integer(). -crc32(Z, CRC, Binary) when is_binary(Binary), is_integer(CRC) -> - call(Z, ?CRC32_2, <<CRC:32, Binary/binary>>); -crc32(_Z, _CRC, _Binary) -> - erlang:error(badarg). +crc32(Z, CRC, Data) -> + call(Z, ?CRC32_2, [<<CRC:32>>, Data]). --spec adler32(Z, Binary) -> CheckSum when +-spec adler32(Z, Data) -> CheckSum when Z :: zstream(), - Binary :: binary(), + Data :: iodata(), CheckSum :: integer(). -adler32(Z, Binary) -> - call(Z, ?ADLER32_1, Binary). +adler32(Z, Data) -> + call(Z, ?ADLER32_1, Data). --spec adler32(Z, PrevAdler, Binary) -> CheckSum when +-spec adler32(Z, PrevAdler, Data) -> CheckSum when Z :: zstream(), PrevAdler :: integer(), - Binary :: binary(), + Data :: iodata(), CheckSum :: integer(). -adler32(Z, Adler, Binary) when is_binary(Binary), is_integer(Adler) -> - call(Z, ?ADLER32_2, <<Adler:32, Binary/binary>>); -adler32(_Z, _Adler, _Binary) -> +adler32(Z, Adler, Data) when is_integer(Adler) -> + call(Z, ?ADLER32_2, [<<Adler:32>>, Data]); +adler32(_Z, _Adler, _Data) -> erlang:error(badarg). -spec crc32_combine(Z, CRC1, CRC2, Size2) -> CRC when @@ -346,76 +344,83 @@ getQSize(Z) -> call(Z, ?GET_QSIZE, []). %% compress/uncompress zlib with header --spec compress(Binary) -> Compressed when - Binary :: binary(), +-spec compress(Data) -> Compressed when + Data :: iodata(), Compressed :: binary(). -compress(Binary) -> +compress(Data) -> Z = open(), deflateInit(Z, default), - Bs = deflate(Z, Binary,finish), + Bs = deflate(Z, Data, finish), deflateEnd(Z), close(Z), - list_to_binary(Bs). + iolist_to_binary(Bs). --spec uncompress(Binary) -> Decompressed when - Binary :: binary(), +-spec uncompress(Data) -> Decompressed when + Data :: iodata(), Decompressed :: binary(). -uncompress(Binary) when byte_size(Binary) >= 8 -> - Z = open(), - inflateInit(Z), - Bs = inflate(Z, Binary), - inflateEnd(Z), - close(Z), - list_to_binary(Bs); -uncompress(Binary) when is_binary(Binary) -> erlang:error(data_error); -uncompress(_) -> erlang:error(badarg). +uncompress(Data) -> + try iolist_size(Data) of + Size -> + if + Size >= 8 -> + Z = open(), + inflateInit(Z), + Bs = inflate(Z, Data), + inflateEnd(Z), + close(Z), + iolist_to_binary(Bs); + true -> + erlang:error(data_error) + end + catch + _:_ -> + erlang:error(badarg) + end. %% unzip/zip zlib without header (zip members) --spec zip(Binary) -> Compressed when - Binary :: binary(), +-spec zip(Data) -> Compressed when + Data :: iodata(), Compressed :: binary(). -zip(Binary) -> +zip(Data) -> Z = open(), deflateInit(Z, default, deflated, -?MAX_WBITS, 8, default), - Bs = deflate(Z, Binary, finish), + Bs = deflate(Z, Data, finish), deflateEnd(Z), close(Z), - list_to_binary(Bs). + iolist_to_binary(Bs). --spec unzip(Binary) -> Decompressed when - Binary :: binary(), +-spec unzip(Data) -> Decompressed when + Data :: iodata(), Decompressed :: binary(). -unzip(Binary) -> +unzip(Data) -> Z = open(), inflateInit(Z, -?MAX_WBITS), - Bs = inflate(Z, Binary), + Bs = inflate(Z, Data), inflateEnd(Z), close(Z), - list_to_binary(Bs). + iolist_to_binary(Bs). -spec gzip(Data) -> Compressed when Data :: iodata(), Compressed :: binary(). -gzip(Data) when is_binary(Data); is_list(Data) -> +gzip(Data) -> Z = open(), deflateInit(Z, default, deflated, 16+?MAX_WBITS, 8, default), Bs = deflate(Z, Data, finish), deflateEnd(Z), close(Z), - iolist_to_binary(Bs); -gzip(_) -> erlang:error(badarg). + iolist_to_binary(Bs). --spec gunzip(Binary) -> Decompressed when - Binary :: binary(), +-spec gunzip(Data) -> Decompressed when + Data :: iodata(), Decompressed :: binary(). -gunzip(Data) when is_binary(Data); is_list(Data) -> +gunzip(Data) -> Z = open(), inflateInit(Z, 16+?MAX_WBITS), Bs = inflate(Z, Data), inflateEnd(Z), close(Z), - iolist_to_binary(Bs); -gunzip(_) -> erlang:error(badarg). + iolist_to_binary(Bs). -spec collect(zstream()) -> iolist(). collect(Z) -> diff --git a/erts/test/autoimport_SUITE.erl b/erts/test/autoimport_SUITE.erl index 0e4708e046..71ed5204b1 100644 --- a/erts/test/autoimport_SUITE.erl +++ b/erts/test/autoimport_SUITE.erl @@ -87,10 +87,21 @@ autoimports(Config) when is_list(Config) -> xml(XMLFile) -> {ok,File} = file:open(XMLFile,[read]), + xskip_to_funcs(file:read_line(File),File), DocData = xloop(file:read_line(File),File), + true = DocData =/= [], file:close(File), analyze(DocData). +%% Skip lines up to and including the <funcs> tag. +xskip_to_funcs({ok,Line},File) -> + case re:run(Line,"\\<funcs\\>",[{capture,none}]) of + nomatch -> + xskip_to_funcs(file:read_line(File),File); + match -> + ok + end. + xloop({ok,Line},File) -> case re:run(Line,"\\<name\\>",[{capture,none}]) of nomatch -> diff --git a/erts/test/erlc_SUITE.erl b/erts/test/erlc_SUITE.erl index 62e0e6813d..a9e28672e3 100644 --- a/erts/test/erlc_SUITE.erl +++ b/erts/test/erlc_SUITE.erl @@ -79,7 +79,7 @@ compile_erl(Config) when is_list(Config) -> ?line run(Config, Cmd, FileName, "-Werror", ["compile: warnings being treated as errors\$", - "Warning: function foo/0 is unused\$", + "function foo/0 is unused\$", "_ERROR_"]), %% Check a bad file. @@ -213,13 +213,34 @@ deep_cwd_1(PrivDir) -> arg_overflow(Config) when is_list(Config) -> ?line {SrcDir, _OutDir, Cmd} = get_cmd(Config), ?line FileName = filename:join(SrcDir, "erl_test_ok.erl"), - ?line Args = lists:flatten([ ["-D", integer_to_list(N), "=1 "] || - N <- lists:seq(1,10000) ]), + %% Each -D option will be expanded to three arguments when + %% invoking 'erl'. + ?line NumDOptions = num_d_options(), + ?line Args = lists:flatten([ ["-D", integer_to_list(N, 36), "=1 "] || + N <- lists:seq(1, NumDOptions) ]), ?line run(Config, Cmd, FileName, Args, ["Warning: function foo/0 is unused\$", "_OK_"]), ok. +num_d_options() -> + case {os:type(),os:version()} of + {{win32,_},_} -> + %% The maximum size of a command line in the command + %% shell on Windows is 8191 characters. + %% Each -D option is expanded to "@dv NN 1", i.e. + %% 8 characters. (Numbers up to 1295 can be expressed + %% as two 36-base digits.) + 1000; + {{unix,linux},Version} when Version < {2,6,23} -> + %% On some older 64-bit versions of Linux, the maximum number + %% of arguments is 16383. + %% See: http://www.in-ulm.de/~mascheck/various/argmax/ + 5440; + {_,_} -> + 12000 + end. + erlc() -> case os:find_executable("erlc") of false -> diff --git a/lib/Makefile b/lib/Makefile index 7f4c309da9..98d746925f 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -83,19 +83,15 @@ endif ifdef BOOTSTRAP SUB_DIRECTORIES = \ - kernel stdlib compiler orber/include + kernel stdlib compiler else ifdef SECONDARY_BOOTSTRAP SUB_DIRECTORIES = hipe parsetools asn1/src else ifdef TERTIARY_BOOTSTRAP - SUB_DIRECTORIES = snmp - else - ifdef FOURTH_BOOTSTRAP - SUB_DIRECTORIES = sasl jinterface ic syntax_tools - else # Not bootstrap build - SUB_DIRECTORIES = $(ERTS_SUB_DIRECTORIES) $(OTHER_SUB_DIRECTORIES) - endif + SUB_DIRECTORIES = snmp sasl jinterface ic syntax_tools + else # Not bootstrap build + SUB_DIRECTORIES = $(ERTS_SUB_DIRECTORIES) $(OTHER_SUB_DIRECTORIES) endif endif endif diff --git a/lib/asn1/doc/src/asn1ct.xml b/lib/asn1/doc/src/asn1ct.xml index 265f8735c2..50458b4a9a 100644 --- a/lib/asn1/doc/src/asn1ct.xml +++ b/lib/asn1/doc/src/asn1ct.xml @@ -53,7 +53,7 @@ <v>Option = ber_bin | per_bin | uper_bin | der | compact_bit_string | noobj | {n2n,EnumTypeName} |{outdir,Dir} | {i,IncludeDir} | optimize | driver | asn1config | undec_rest | {inline,OutputName} | inline | - {macro_name_prefix, Prefix} | {record_name_prefix, Prefix} | verbose</v> + {macro_name_prefix, Prefix} | {record_name_prefix, Prefix} | verbose | warnings_as_errors</v> <v>OldOption = ber | per</v> <v>Reason = term()</v> <v>Prefix = string()</v> @@ -289,6 +289,10 @@ Binary = binary() <p>Causes more verbose information from the compiler describing what it is doing.</p> </item> + <tag><c>warnings_as_errors</c></tag> + <item> + <p>Causes warnings to be treated as errors.</p> + </item> </taglist> <p>Any additional option that is applied will be passed to the final step when the generated .erl file is compiled. diff --git a/lib/asn1/src/asn1ct.erl b/lib/asn1/src/asn1ct.erl index a167d27f82..e26fadd160 100644 --- a/lib/asn1/src/asn1ct.erl +++ b/lib/asn1/src/asn1ct.erl @@ -39,7 +39,7 @@ add_tobe_refed_func/1,add_generated_refed_func/1, maybe_rename_function/3,latest_sindex/0,current_sindex/0, set_current_sindex/1,next_sindex/0,maybe_saved_sindex/2, - parse_and_save/2,verbose/3,warning/3,error/3]). + parse_and_save/2,verbose/3,warning/3,warning/4,error/3]). -include("asn1_records.hrl"). -include_lib("stdlib/include/erl_compile.hrl"). @@ -825,10 +825,13 @@ generate({true,{M,_Module,GenTOrV}},OutFile,EncodingRule,Options) -> case catch specialized_decode_prepare(EncodingRule,M,GenTOrV,Options) of {error, enoent} -> ok; {error, Reason} -> warning("Error in configuration " - "file: ~n~p~n",[Reason],Options); + "file: ~n~p~n",[Reason],Options, + "Error in configuration file"); {'EXIT',Reason} -> warning("Internal error when " "analyzing configuration " - "file: ~n~p~n",[Reason],Options); + "file: ~n~p~n",[Reason],Options, + "Internal error when " + "analyzing configuration"); _ -> ok end, @@ -2524,14 +2527,14 @@ type_check(#'Externaltypereference'{}) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Report functions. %% -%% Errors messages are controlled with the 'errors' compiler option +%% Error messages are controlled with the 'errors' compiler option %% Warning messages are controlled with the 'warnings' compiler option %% Verbose messages are controlled with the 'verbose' compiler option error(Format, Args, S) -> case is_error(S) of true -> - io:format("Error: " ++ Format, Args); + io:format(Format, Args); false -> ok end. @@ -2544,6 +2547,17 @@ warning(Format, Args, S) -> ok end. +warning(Format, Args, S, Reason) -> + case {is_werr(S), is_error(S), is_warning(S)} of + {true, true, _} -> + io:format(Format, Args), + throw({error, Reason}); + {false, _, true} -> + io:format(Format, Args); + _ -> + ok + end. + verbose(Format, Args, S) -> case is_verbose(S) of true -> @@ -2566,3 +2580,8 @@ is_verbose(S) when is_record(S, state) -> is_verbose(S#state.options); is_verbose(O) -> lists:member(verbose, O). + +is_werr(S) when is_record(S, state) -> + is_werr(S#state.options); +is_werr(O) -> + lists:member(warnings_as_errors, O). diff --git a/lib/asn1/src/asn1ct_check.erl b/lib/asn1/src/asn1ct_check.erl index efd731f052..e318477234 100644 --- a/lib/asn1/src/asn1ct_check.erl +++ b/lib/asn1/src/asn1ct_check.erl @@ -2031,7 +2031,7 @@ get_objectset_def2(_S,T = #typedef{typespec=#'ObjectSet'{}},_CField) -> T; get_objectset_def2(S,T,_CField) -> asn1ct:warning("get_objectset_def2: uncontrolled object set structure:~n~p~n", - [T],S). + [T],S,"get_objectset_def2: uncontrolled object set structure"). type_name(S,#type{def=Def}) -> CurrMod = S#state.mname, @@ -2705,7 +2705,7 @@ normalize_value(S,Type,{'DEFAULT',Value},NameList) -> normalize_objectclassfieldvalue(S,Value,NL); Err -> asn1ct:warning("could not check default value ~p~nType:~n~p~nNameList:~n~p~n", - [Value,Type,Err],S), + [Value,Type,Err],S,"could not check default value"), Value end; normalize_value(S,Type,Val,NameList) -> @@ -2791,22 +2791,27 @@ normalize_bitstring(S,Value,Type)-> case catch lists:map(F,RecList) of {error,Reason} -> asn1ct:warning("default value not " - "compatible with type definition ~p~n", - [Reason],S), + "compatible with type definition ~p~n", + [Reason],S, + "default value not " + "compatible with type definition"), Value; NewList -> NewList end; _ -> asn1ct:warning("default value not " - "compatible with type definition ~p~n", - [RecList],S), + "compatible with type definition ~p~n", + [RecList],S, + "default value not " + "compatible with type definition"), Value end; {Name,String} when is_atom(Name) -> normalize_bitstring(S,String,Type); Other -> - asn1ct:warning("illegal default value ~p~n",[Other],S), + asn1ct:warning("illegal default value ~p~n",[Other],S, + "illegal default value"), Value end. @@ -2846,12 +2851,14 @@ normalize_octetstring(S,Value,CType) -> lists:map(fun([])-> ok; (H)when H > 255-> asn1ct:warning("not legal octet value ~p in OCTET STRING, ~p~n", - [H,List],S); + [H,List],S, + "not legal octet value ~p in OCTET STRING"); (_)-> ok end, List), List; Other -> - asn1ct:warning("unknown default value ~p~n",[Other],S), + asn1ct:warning("unknown default value ~p~n",[Other],S, + "unknown default value"), Value end. @@ -2908,13 +2915,15 @@ normalize_enumerated(S,{Name,EnumV},CType) when is_atom(Name) -> normalize_enumerated(S,Value,{CType1,CType2}) when is_list(CType1), is_list(CType2)-> normalize_enumerated(S,Value,CType1++CType2); normalize_enumerated(S,V,CType) -> - asn1ct:warning("Enumerated unknown type ~p~n",[CType],S), + asn1ct:warning("Enumerated unknown type ~p~n",[CType],S, + "Enumerated unknown type"), V. normalize_enumerated2(S,V,Enum) -> case lists:keysearch(V,1,Enum) of {value,{Val,_}} -> Val; _ -> - asn1ct:warning("Enumerated value is not correct ~p~n",[V],S), + asn1ct:warning("enumerated value is not correct ~p~n",[V],S, + "enumerated value is not correct"), V end. @@ -2925,7 +2934,8 @@ normalize_choice(S,{'CHOICE',{C,V}},CType,NameList) when is_atom(C) -> {C,normalize_value(S,CT,{'DEFAULT',V}, [Name|NameList])}; Other -> - asn1ct:warning("Wrong format of type/value ~p/~p~n",[Other,V],S), + asn1ct:warning("Wrong format of type/value ~p/~p~n",[Other,V],S, + "Wrong format of type/value"), {C,V} end; normalize_choice(S,{'DEFAULT',ValueList},CType,NameList) when is_list(ValueList) -> @@ -3101,7 +3111,8 @@ normalize_s_of(SorS,S,Value,Type,NameList) when is_list(Value) -> List when is_list(List) -> List; _ -> - asn1ct:warning("~p could not handle value ~p~n",[SorS,Value],S), + asn1ct:warning("~p could not handle value ~p~n",[SorS,Value],S, + "could not handle value"), Value end; normalize_s_of(SorS,S,Value,Type,NameList) @@ -3159,7 +3170,8 @@ get_normalized_value(S,Val,Type,Func,AddArg) -> V2 = sort_val_if_set(AddArg,NewVal,Type), call_Func(update_state(S,ExtM),V2,Type,Func,AddArg); _ -> - asn1ct:warning("default value not comparable ~p~n",[Val],S), + asn1ct:warning("default value not comparable ~p~n",[Val],S, + "default value not comparable"), Val end. @@ -5756,7 +5768,8 @@ ascending_order_check1(S,TypeName, [C1 = #'ComponentType'{tags=[{_,T}|_]}, C2 = #'ComponentType'{tags=[{_,T}|_]}|Rest]) -> asn1ct:warning("Indistinct tag ~p in SET ~p, components ~p and ~p~n", - [T,TypeName,C1#'ComponentType'.name,C2#'ComponentType'.name],S), + [T,TypeName,C1#'ComponentType'.name,C2#'ComponentType'.name],S, + "Indistinct tag in SET"), ascending_order_check1(S,TypeName,[C2|Rest]); ascending_order_check1(S,TypeName, [C1 = #'ComponentType'{tags=[{'UNIVERSAL',T1}|_]}, @@ -5764,9 +5777,10 @@ ascending_order_check1(S,TypeName, case (decode_type(T1) == decode_type(T2)) of true -> asn1ct:warning("Indistinct tags ~p and ~p in" - " SET ~p, components ~p and ~p~n", - [T1,T2,TypeName,C1#'ComponentType'.name, - C2#'ComponentType'.name],S), + " SET ~p, components ~p and ~p~n", + [T1,T2,TypeName,C1#'ComponentType'.name, + C2#'ComponentType'.name],S, + "Indistinct tags and in SET"), ascending_order_check1(S,TypeName,[C2|Rest]); _ -> ascending_order_check1(S,TypeName,[C2|Rest]) diff --git a/lib/asn1/test/asn1_SUITE.erl.src b/lib/asn1/test/asn1_SUITE.erl.src index 582ccd877c..e7f93a4053 100644 --- a/lib/asn1/test/asn1_SUITE.erl.src +++ b/lib/asn1/test/asn1_SUITE.erl.src @@ -2236,8 +2236,10 @@ test_compile_options(Config) -> ?line ok = test_compile_options:path(Config), ?line ok = test_compile_options:noobj(Config), ?line ok = test_compile_options:record_name_prefix(Config), - ?line ok = test_compile_options:verbose(Config) + ?line ok = test_compile_options:verbose(Config), + ?line ok = test_compile_options:warnings_as_errors(Config) end. + testDoubleEllipses(suite) -> []; testDoubleEllipses(Config) -> ?line testDoubleEllipses:compile(Config,?BER,[]), diff --git a/lib/asn1/test/test_compile_options.erl b/lib/asn1/test/test_compile_options.erl index 5e027cdedb..5cb212eddf 100644 --- a/lib/asn1/test/test_compile_options.erl +++ b/lib/asn1/test/test_compile_options.erl @@ -24,7 +24,7 @@ -export([wrong_path/1,comp/2,path/1,ticket_6143/1,noobj/1, - record_name_prefix/1,verbose/1]). + record_name_prefix/1,verbose/1,warnings_as_errors/1]). %% OTP-5689 wrong_path(Config) -> @@ -141,6 +141,43 @@ verbose(Config) when is_list(Config) -> ?line [] = test_server:capture_get(), ok. +warnings_as_errors(Config) when is_list(Config) -> + PrivDir = ?config(priv_dir,Config), + Asn1File = filename:join([PrivDir,"WERROR.asn1"]), + OutFile = filename:join([PrivDir,"WERROR.erl"]), + Opts = [{outdir,PrivDir},noobj,verbose], + + %% Generate WERR.asn to emit warning + %% Warning: Wrong format of type/value + %% false/{'Externalvaluereference',_,'WERR',noInvokeId} + Warn = <<"WERROR DEFINITIONS IMPLICIT TAGS ::=\n" + "\n" + "BEGIN\n" + "\n" + "InvokeId ::= CHOICE\n" + "{\n" + " present INTEGER,\n" + " absent NULL\n" + "}\n" + "\n" + "noInvokeId InvokeId ::= absent:NULL\n" + "\n" + "NoInvokeId InvokeId ::= {noInvokeId}\n" + "\n" + "END -- end of useful definitions.\n">>, + ?line ok = file:write_file(Asn1File, Warn), + + %% Test warnings_as_errors compile + ?line false = filelib:is_regular(OutFile), + ?line {error, _} = asn1ct:compile(Asn1File, [warnings_as_errors|Opts]), + ?line false = filelib:is_regular(OutFile), + + %% Test normal compile + ?line ok = asn1ct:compile(Asn1File, Opts), + ?line true = filelib:is_regular(OutFile), + ?line ok = file:delete(OutFile), + ok. + outfiles_check(OutDir) -> outfiles_check(OutDir,outfiles1()). diff --git a/lib/common_test/doc/src/common_test_app.xml b/lib/common_test/doc/src/common_test_app.xml index c92566de37..57b032b3fd 100644 --- a/lib/common_test/doc/src/common_test_app.xml +++ b/lib/common_test/doc/src/common_test_app.xml @@ -144,7 +144,7 @@ <v> UserData = term()</v> <v> Conns = [atom()]</v> <v> CSSFile = string()</v> - <v> CTHs = [CTHModule | {CTHModule, CTHInitArgs}]</v> + <v> CTHs = [CTHModule | {CTHModule, CTHInitArgs} | {CTHModule, CTHInitArgs, CTHPriority}]</v> <v> CTHModule = atom()</v> <v> CTHInitArgs = term()</v> </type> diff --git a/lib/common_test/doc/src/ct_hooks.xml b/lib/common_test/doc/src/ct_hooks.xml index 7d5c9f4750..0ece3199bb 100644 --- a/lib/common_test/doc/src/ct_hooks.xml +++ b/lib/common_test/doc/src/ct_hooks.xml @@ -81,12 +81,14 @@ <funcs> <func> - <name>Module:init(Id, Opts) -> State</name> + <name>Module:init(Id, Opts) -> {ok, State} | + {ok, State, Priority}</name> <fsummary>Initiates the Common Test Hook</fsummary> <type> <v>Id = reference() | term()</v> <v>Opts = term()</v> <v>State = term()</v> + <v>Priority = integer()</v> </type> <desc> @@ -103,6 +105,10 @@ if <seealso marker="#Module:id-1">id/1</seealso> is not implemented. </p> + <p><c>Priority</c> is the relative priority of this hook. Hooks with a + lower priority will be executed first. If no priority is given, + it will be set to 0. </p> + <p>For details about when init is called see <seealso marker="ct_hooks_chapter#scope">scope</seealso> in the User's Guide.</p> diff --git a/lib/common_test/doc/src/ct_hooks_chapter.xml b/lib/common_test/doc/src/ct_hooks_chapter.xml index fc5ab48e1b..dbb4310040 100644 --- a/lib/common_test/doc/src/ct_hooks_chapter.xml +++ b/lib/common_test/doc/src/ct_hooks_chapter.xml @@ -94,9 +94,11 @@ <seealso marker="common_test#Module:init_per_group-2"> init_per_group/2</seealso>. <c>CTH</c> in this case can be either only the module name of the CTH or a tuple with the module name and the - initial arguments to the CTH. Eg: + initial arguments and optionally the hook priority of the CTH. Eg: <c>{ct_hooks,[my_cth_module]}</c> or - <c>{ct_hooks,[{my_cth_module,[{debug,true}]}]}</c></p> + <c>{ct_hooks,[{my_cth_module,[{debug,true}]}]}</c> or + <c>{ct_hooks,[{my_cth_module,[{debug,true}],500}]}</c> + </p> <section> <title>Overriding CTHs</title> @@ -109,7 +111,16 @@ <c>id</c> in both places, Common Test knows that this CTH has already been installed and will not try to install it again.</p> </section> - + + <section> + <title>CTH Priority</title> + <p>By default each CTH installed will be executed in the order which + they are installed. This is not always wanted so common_test allows + the user to specify a priority for each hook. The priority can either + be specified in the CTH <seealso marker="ct_hooks#Module:init-2">init/2 + </seealso> function or when installing the hook. The priority given at + installation will override the priority returned by the CTH. </p> + </section> </section> <marker id="scope"/> @@ -331,7 +342,7 @@ id(Opts) -> %% any common state. init(Id, Opts) -> {ok,D} = file:open(Id,[write]), - #state{ file_handle = D, total = 0, data = [] }. + {ok, #state{ file_handle = D, total = 0, data = [] }}. %% @doc Called before init_per_suite is called. pre_init_per_suite(Suite,Config,State) -> diff --git a/lib/common_test/doc/src/run_test_chapter.xml b/lib/common_test/doc/src/run_test_chapter.xml index e6fb85634f..e668568795 100644 --- a/lib/common_test/doc/src/run_test_chapter.xml +++ b/lib/common_test/doc/src/run_test_chapter.xml @@ -488,7 +488,7 @@ LogDir = string() EventHandlers = atom() | [atom()] InitArgs = [term()] - CTHModules = [CTHModule | {CTHModule, CTHInitArgs}] + CTHModules = [CTHModule | {CTHModule, CTHInitArgs} | {CTHModule, CTHInitArgs, CTHPriority}] CTHModule = atom() CTHInitArgs = term() DirRef = DirAlias | Dir diff --git a/lib/common_test/src/ct_framework.erl b/lib/common_test/src/ct_framework.erl index 809616d8e3..9e597edf38 100644 --- a/lib/common_test/src/ct_framework.erl +++ b/lib/common_test/src/ct_framework.erl @@ -240,7 +240,8 @@ add_defaults(Mod,Func,FuncInfo,DoInit) -> case (catch Mod:suite()) of {'EXIT',{undef,_}} -> SuiteInfo = merge_with_suite_defaults(Mod,[]), - case add_defaults1(Mod,Func,FuncInfo,SuiteInfo,DoInit) of + SuiteInfoNoCTH = [I || I <- SuiteInfo, element(1,I) =/= ct_hooks], + case add_defaults1(Mod,Func,FuncInfo,SuiteInfoNoCTH,DoInit) of Error = {error,_} -> {SuiteInfo,Error}; MergedInfo -> {SuiteInfo,MergedInfo} end; @@ -251,10 +252,11 @@ add_defaults(Mod,Func,FuncInfo,DoInit) -> (_) -> false end, SuiteInfo) of true -> - SuiteInfoNoCTH = - lists:keydelete(ct_hooks,1,SuiteInfo), - SuiteInfo1 = merge_with_suite_defaults(Mod,SuiteInfoNoCTH), - case add_defaults1(Mod,Func,FuncInfo,SuiteInfo1,DoInit) of + SuiteInfo1 = merge_with_suite_defaults(Mod,SuiteInfo), + SuiteInfoNoCTH = [I || I <- SuiteInfo1, + element(1,I) =/= ct_hooks], + case add_defaults1(Mod,Func,FuncInfo, + SuiteInfoNoCTH,DoInit) of Error = {error,_} -> {SuiteInfo1,Error}; MergedInfo -> {SuiteInfo1,MergedInfo} end; diff --git a/lib/common_test/src/ct_hooks.erl b/lib/common_test/src/ct_hooks.erl index 984e04b90f..f243b87f54 100644 --- a/lib/common_test/src/ct_hooks.erl +++ b/lib/common_test/src/ct_hooks.erl @@ -31,11 +31,11 @@ -export([on_tc_skip/2]). -export([on_tc_fail/2]). --type proplist() :: [{atom(),term()}]. - %% If you change this, remember to update ct_util:look -> stop clause as well. -define(config_name, ct_hooks). +-record(ct_hook_config, {id, module, prio, scope, opts = [], state = []}). + %% ------------------------------------------------------------------------- %% API Functions %% ------------------------------------------------------------------------- @@ -44,22 +44,22 @@ -spec init(State :: term()) -> ok | {error, Reason :: term()}. init(Opts) -> - call([{Hook, call_id, undefined} || Hook <- get_new_hooks(Opts)], - ok, init, []). + call(get_new_hooks(Opts, undefined), ok, init, []). %% @doc Called after all suites are done. -spec terminate(Hooks :: term()) -> ok. terminate(Hooks) -> - call([{HookId, fun call_terminate/3} || {HookId,_,_} <- Hooks], + call([{HookId, fun call_terminate/3} + || #ct_hook_config{id = HookId} <- Hooks], ct_hooks_terminate_dummy, terminate, Hooks), ok. %% @doc Called as each test case is started. This includes all configuration %% tests. -spec init_tc(Mod :: atom(), Func :: atom(), Args :: list()) -> - NewConfig :: proplist() | + NewConfig :: proplists:proplist() | {skip, Reason :: term()} | {auto_skip, Reason :: term()} | {fail, Reason :: term()}. @@ -68,11 +68,11 @@ init_tc(ct_framework, _Func, Args) -> init_tc(Mod, init_per_suite, Config) -> Info = try proplists:get_value(ct_hooks, Mod:suite(),[]) of List when is_list(List) -> - [{ct_hooks,List}]; + [{?config_name,List}]; CTHook when is_atom(CTHook) -> - [{ct_hooks,[CTHook]}] + [{?config_name,[CTHook]}] catch error:undef -> - [{ct_hooks,[]}] + [{?config_name,[]}] end, call(fun call_generic/3, Config ++ Info, [pre_init_per_suite, Mod]); init_tc(Mod, end_per_suite, Config) -> @@ -92,7 +92,7 @@ init_tc(_Mod, TC, Config) -> Args :: list(), Result :: term(), Resturn :: term()) -> - NewConfig :: proplist() | + NewConfig :: proplists:proplist() | {skip, Reason :: term()} | {auto_skip, Reason :: term()} | {fail, Reason :: term()} | @@ -131,36 +131,48 @@ on_tc_fail(_How, {Suite, Case, Reason}) -> %% ------------------------------------------------------------------------- %% Internal Functions %% ------------------------------------------------------------------------- -call_id(Mod, Config, Meta) when is_atom(Mod) -> - call_id({Mod, []}, Config, Meta); -call_id({Mod, Opts}, Config, Scope) -> +call_id(#ct_hook_config{ module = Mod, opts = Opts} = Hook, Config, Scope) -> Id = catch_apply(Mod,id,[Opts], make_ref()), - {Config, {Id, scope(Scope), {Mod, {Id,Opts}}}}. + {Config, Hook#ct_hook_config{ id = Id, scope = scope(Scope)}}. -call_init({Mod,{Id,Opts}},Config,_Meta) -> - NewState = Mod:init(Id, Opts), - {Config, {Mod, NewState}}. - -call_terminate({Mod, State}, _, _) -> +call_init(#ct_hook_config{ module = Mod, opts = Opts, id = Id, prio = P} = Hook, + Config,_Meta) -> + case Mod:init(Id, Opts) of + {ok, NewState} when P =:= undefined -> + {Config, Hook#ct_hook_config{ state = NewState, prio = 0 } }; + {ok, NewState} -> + {Config, Hook#ct_hook_config{ state = NewState } }; + {ok, NewState, Prio} when P =:= undefined -> + %% Only set prio if not already set when installing hook + {Config, Hook#ct_hook_config{ state = NewState, prio = Prio } }; + {ok, NewState, _} -> + {Config, Hook#ct_hook_config{ state = NewState } }; + NewState -> %% Keep for backward compatability reasons + {Config, Hook#ct_hook_config{ state = NewState } } + end. + +call_terminate(#ct_hook_config{ module = Mod, state = State} = Hook, _, _) -> catch_apply(Mod,terminate,[State], ok), - {[],{Mod,State}}. + {[],Hook}. -call_cleanup({Mod, State}, Reason, [Function, _Suite | Args]) -> +call_cleanup(#ct_hook_config{ module = Mod, state = State} = Hook, + Reason, [Function, _Suite | Args]) -> NewState = catch_apply(Mod,Function, Args ++ [Reason, State], State), - {Reason, {Mod, NewState}}. + {Reason, Hook#ct_hook_config{ state = NewState } }. -call_generic({Mod, State}, Value, [Function | Args]) -> +call_generic(#ct_hook_config{ module = Mod, state = State} = Hook, + Value, [Function | Args]) -> {NewValue, NewState} = catch_apply(Mod, Function, Args ++ [Value, State], {Value,State}), - {NewValue, {Mod, NewState}}. + {NewValue, Hook#ct_hook_config{ state = NewState } }. %% Generic call function call(Fun, Config, Meta) -> maybe_lock(), Hooks = get_hooks(), - Res = call([{HookId,Fun} || {HookId,_, _} <- Hooks] ++ - get_new_hooks(Config, Fun), + Res = call(get_new_hooks(Config, Fun) ++ + [{HookId,Fun} || #ct_hook_config{id = HookId} <- Hooks], remove(?config_name,Config), Meta, Hooks), maybe_unlock(), Res. @@ -173,19 +185,20 @@ call(Fun, Config, Meta, NoChangeRet) when is_function(Fun) -> call([{Hook, call_id, NextFun} | Rest], Config, Meta, Hooks) -> try - {Config, {NewId, _, _} = NewHook} = call_id(Hook, Config, Meta), + {Config, #ct_hook_config{ id = NewId } = NewHook} = + call_id(Hook, Config, Meta), {NewHooks, NewRest} = - case lists:keyfind(NewId, 1, Hooks) of + case lists:keyfind(NewId, #ct_hook_config.id, Hooks) of false when NextFun =:= undefined -> {Hooks ++ [NewHook], - [{NewId, fun call_init/3} | Rest]}; + [{NewId, call_init} | Rest]}; ExistingHook when is_tuple(ExistingHook) -> {Hooks, Rest}; _ -> {Hooks ++ [NewHook], - [{NewId, fun call_init/3},{NewId,NextFun} | Rest]} + [{NewId, call_init}, {NewId,NextFun} | Rest]} end, - call(NewRest, Config, Meta, NewHooks) + call(resort(NewRest,NewHooks), Config, Meta, NewHooks) catch Error:Reason -> Trace = erlang:get_stacktrace(), ct_logs:log("Suite Hook","Failed to start a CTH: ~p:~p", @@ -193,13 +206,16 @@ call([{Hook, call_id, NextFun} | Rest], Config, Meta, Hooks) -> call([], {fail,"Failed to start CTH" ", see the CT Log for details"}, Meta, Hooks) end; +call([{HookId, call_init} | Rest], Config, Meta, Hooks) -> + call([{HookId, fun call_init/3} | Rest], Config, Meta, Hooks); call([{HookId, Fun} | Rest], Config, Meta, Hooks) -> try - {_,Scope,ModState} = lists:keyfind(HookId, 1, Hooks), - {NewConf, NewHookInfo} = Fun(ModState, Config, Meta), + Hook = lists:keyfind(HookId, #ct_hook_config.id, Hooks), + {NewConf, NewHook} = Fun(Hook, Config, Meta), NewCalls = get_new_hooks(NewConf, Fun), - NewHooks = lists:keyreplace(HookId, 1, Hooks, {HookId, Scope, NewHookInfo}), - call(NewCalls ++ Rest, remove(?config_name, NewConf), Meta, + NewHooks = lists:keyreplace(HookId, #ct_hook_config.id, Hooks, NewHook), + call(resort(NewCalls ++ Rest,NewHooks), %% Resort if call_init changed prio + remove(?config_name, NewConf), Meta, terminate_if_scope_ends(HookId, Meta, NewHooks)) catch throw:{error_in_cth_call,Reason} -> call(Rest, {fail, Reason}, Meta, @@ -237,19 +253,26 @@ terminate_if_scope_ends(HookId, [on_tc_skip,Suite,end_per_suite], Hooks) -> terminate_if_scope_ends(HookId, [Function,Tag|T], Hooks) when T =/= [] -> terminate_if_scope_ends(HookId,[Function,Tag],Hooks); terminate_if_scope_ends(HookId, Function, Hooks) -> - case lists:keyfind(HookId, 1, Hooks) of - {HookId, Function, _ModState} = Hook -> + case lists:keyfind(HookId, #ct_hook_config.id, Hooks) of + #ct_hook_config{ id = HookId, scope = Function} = Hook -> terminate([Hook]), - lists:keydelete(HookId, 1, Hooks); + lists:keydelete(HookId, #ct_hook_config.id, Hooks); _ -> Hooks end. %% Fetch hook functions get_new_hooks(Config, Fun) -> - lists:foldl(fun(NewHook, Acc) -> - [{NewHook, call_id, Fun} | Acc] - end, [], get_new_hooks(Config)). + lists:map(fun(NewHook) when is_atom(NewHook) -> + {#ct_hook_config{ module = NewHook }, call_id, Fun}; + ({NewHook,Opts}) -> + {#ct_hook_config{ module = NewHook, + opts = Opts}, call_id, Fun}; + ({NewHook,Opts,Prio}) -> + {#ct_hook_config{ module = NewHook, + opts = Opts, + prio = Prio }, call_id, Fun} + end, get_new_hooks(Config)). get_new_hooks(Config) when is_list(Config) -> lists:flatmap(fun({?config_name, HookConfigs}) -> @@ -264,7 +287,43 @@ save_suite_data_async(Hooks) -> ct_util:save_suite_data_async(?config_name, Hooks). get_hooks() -> - ct_util:read_suite_data(?config_name). + lists:keysort(#ct_hook_config.prio,ct_util:read_suite_data(?config_name)). + +%% Sort all calls in this order: +%% call_id < call_init < Hook Priority 1 < .. < Hook Priority N +%% If Hook Priority is equal, check when it has been installed and +%% sort on that instead. +resort(Calls, Hooks) -> + lists:sort( + fun({_,_,_},_) -> + true; + (_,{_,_,_}) -> + false; + ({_,call_init},_) -> + true; + (_,{_,call_init}) -> + false; + ({Id1,_},{Id2,_}) -> + P1 = (lists:keyfind(Id1, #ct_hook_config.id, Hooks))#ct_hook_config.prio, + P2 = (lists:keyfind(Id2, #ct_hook_config.id, Hooks))#ct_hook_config.prio, + if + P1 == P2 -> + %% If priorities are equal, we check the position in the + %% hooks list + pos(Id1,Hooks) < pos(Id2,Hooks); + true -> + P1 < P2 + end + end,Calls). + +pos(Id,Hooks) -> + pos(Id,Hooks,0). +pos(Id,[#ct_hook_config{ id = Id}|_],Num) -> + Num; +pos(Id,[_|Rest],Num) -> + pos(Id,Rest,Num+1). + + catch_apply(M,F,A, Default) -> try diff --git a/lib/common_test/src/ct_run.erl b/lib/common_test/src/ct_run.erl index c01e97b358..877ec9c7dd 100644 --- a/lib/common_test/src/ct_run.erl +++ b/lib/common_test/src/ct_run.erl @@ -521,8 +521,8 @@ script_usage() -> "\n\t[-silent_connections [ConnType1 ConnType2 .. ConnTypeN]]" "\n\t[-stylesheet CSSFile]" "\n\t[-cover CoverCfgFile]" - "\n\t[-event_handler EvHandler1 EvHandler2 .. EvHandlerN]" - "\n\t[-ct_hooks CTHook1 CTHook2 .. CTHookN]" + "\n\t[-event_handler EvHandler1 and EvHandler2 .. EvHandlerN]" + "\n\t[-ct_hooks CTHook1 and CTHook2 .. CTHookN]" "\n\t[-include InclDir1 InclDir2 .. InclDirN]" "\n\t[-no_auto_compile]" "\n\t[-multiply_timetraps N]" @@ -540,8 +540,8 @@ script_usage() -> "\n\t[-silent_connections [ConnType1 ConnType2 .. ConnTypeN]]" "\n\t[-stylesheet CSSFile]" "\n\t[-cover CoverCfgFile]" - "\n\t[-event_handler EvHandler1 EvHandler2 .. EvHandlerN]" - "\n\t[-ct_hooks CTHook1 CTHook2 .. CTHookN]" + "\n\t[-event_handler EvHandler1 and EvHandler2 .. EvHandlerN]" + "\n\t[-ct_hooks CTHook1 and CTHook2 .. CTHookN]" "\n\t[-include InclDir1 InclDir2 .. InclDirN]" "\n\t[-no_auto_compile]" "\n\t[-multiply_timetraps N]" @@ -2070,15 +2070,21 @@ ct_hooks_args2opts(Args) -> ct_hooks_args2opts( proplists:get_value(ct_hooks, Args, []),[]). +ct_hooks_args2opts([CTH,Arg,Prio,"and"| Rest],Acc) -> + ct_hooks_args2opts(Rest,[{list_to_atom(CTH), + parse_cth_args(Arg), + parse_cth_args(Prio)}|Acc]); ct_hooks_args2opts([CTH,Arg,"and"| Rest],Acc) -> ct_hooks_args2opts(Rest,[{list_to_atom(CTH), - parse_cth_args(Arg)}|Acc]); + parse_cth_args(Arg)}|Acc]); ct_hooks_args2opts([CTH], Acc) -> ct_hooks_args2opts([CTH,"and"],Acc); ct_hooks_args2opts([CTH, "and" | Rest], Acc) -> ct_hooks_args2opts(Rest,[list_to_atom(CTH)|Acc]); ct_hooks_args2opts([CTH, Args], Acc) -> ct_hooks_args2opts([CTH, Args, "and"],Acc); +ct_hooks_args2opts([CTH, Args, Prio], Acc) -> + ct_hooks_args2opts([CTH, Args, Prio, "and"],Acc); ct_hooks_args2opts([],Acc) -> lists:reverse(Acc). @@ -2225,7 +2231,14 @@ opts2args(EnvStartOpts) -> ({ct_hooks,CTHs}) when is_list(CTHs) -> io:format(user,"ct_hooks: ~p",[CTHs]), Strs = lists:flatmap( - fun({CTH,Arg}) -> + fun({CTH,Arg,Prio}) -> + [atom_to_list(CTH), + lists:flatten( + io_lib:format("~p",[Arg])), + lists:flatten( + io_lib:format("~p",[Prio])), + "and"]; + ({CTH,Arg}) -> [atom_to_list(CTH), lists:flatten( io_lib:format("~p",[Arg])), diff --git a/lib/common_test/test/ct_hooks_SUITE.erl b/lib/common_test/test/ct_hooks_SUITE.erl index 8574d7aabc..5c99f0f9f7 100644 --- a/lib/common_test/test/ct_hooks_SUITE.erl +++ b/lib/common_test/test/ct_hooks_SUITE.erl @@ -83,7 +83,7 @@ all(suite) -> fail_post_suite_cth, skip_pre_suite_cth, skip_post_suite_cth, recover_post_suite_cth, update_config_cth, state_update_cth, options_cth, same_id_cth, - fail_n_skip_with_minimal_cth + fail_n_skip_with_minimal_cth, prio_cth ] ) . @@ -209,6 +209,11 @@ fail_n_skip_with_minimal_cth(Config) when is_list(Config) -> do_test(fail_n_skip_with_minimal_cth, "ct_cth_fail_one_skip_one_SUITE.erl", [minimal_terminate_cth],Config). +prio_cth(Config) when is_list(Config) -> + do_test(prio_cth, "ct_cth_prio_SUITE.erl", + [{empty_cth,[1000],1000},{empty_cth,[900],900}, + {prio_cth,[1100,100],100},{prio_cth,[1100]}],Config). + %%%----------------------------------------------------------------- %%% HELP FUNCTIONS %%%----------------------------------------------------------------- @@ -296,9 +301,9 @@ test_events(two_empty_cth) -> {?eh,start_logging,{'DEF','RUNDIR'}}, {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, {?eh,cth,{'_',id,[[]]}}, - {?eh,cth,{'_',init,['_',[]]}}, {?eh,cth,{'_',id,[[]]}}, {?eh,cth,{'_',init,['_',[]]}}, + {?eh,cth,{'_',init,['_',[]]}}, {?eh,tc_start,{ct_cth_empty_SUITE,init_per_suite}}, {?eh,cth,{'_',pre_init_per_suite,[ct_cth_empty_SUITE,'$proplist',[]]}}, {?eh,cth,{'_',pre_init_per_suite,[ct_cth_empty_SUITE,'$proplist',[]]}}, @@ -365,9 +370,9 @@ test_events(minimal_and_maximal_cth) -> [ {?eh,start_logging,{'DEF','RUNDIR'}}, {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,cth,{'_',id,[[]]}}, {negative,{?eh,cth,{'_',id,['_',[]]}}, {?eh,cth,{'_',init,['_',[]]}}}, - {?eh,cth,{'_',id,[[]]}}, {?eh,cth,{'_',init,['_',[]]}}, {?eh,tc_start,{ct_cth_empty_SUITE,init_per_suite}}, {?eh,cth,{'_',pre_init_per_suite,[ct_cth_empty_SUITE,'$proplist',[]]}}, @@ -954,8 +959,8 @@ test_events(same_id_cth) -> {?eh,start_logging,{'DEF','RUNDIR'}}, {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, {?eh,cth,{'_',id,[[]]}}, - {?eh,cth,{'_',init,[same_id_cth,[]]}}, {?eh,cth,{'_',id,[[]]}}, + {?eh,cth,{'_',init,[same_id_cth,[]]}}, {?eh,tc_start,{ct_cth_empty_SUITE,init_per_suite}}, {?eh,cth,{'_',pre_init_per_suite,[ct_cth_empty_SUITE,'$proplist',[]]}}, {negative, @@ -1001,6 +1006,73 @@ test_events(fail_n_skip_with_minimal_cth) -> {?eh,stop_logging,[]} ]; +test_events(prio_cth) -> + + GenPre = fun(Func,States) -> + [{?eh,cth,{'_',Func,['_','_',State]}} || + State <- States] + end, + + GenPost = fun(Func,States) -> + [{?eh,cth,{'_',Func,['_','_','_',State]}} || + State <- States] + end, + + [{?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}] ++ + + [{?eh,tc_start,{ct_cth_prio_SUITE,init_per_suite}}] ++ + GenPre(pre_init_per_suite, + [[1100,100],[800],[900],[1000],[1200,1050],[1100],[1200]]) ++ + GenPost(post_init_per_suite, + [[1100,100],[600,200],[600,600],[700],[800],[900],[1000], + [1200,1050],[1100],[1200]]) ++ + [{?eh,tc_done,{ct_cth_prio_SUITE,init_per_suite,ok}}, + + + [{?eh,tc_start,{ct_cth_prio_SUITE,{init_per_group,'_',[]}}}] ++ + GenPre(pre_init_per_group, + [[1100,100],[600,200],[600,600],[700],[800], + [900],[1000],[1200,1050],[1100],[1200]]) ++ + GenPost(post_init_per_group, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + [{?eh,tc_done,{ct_cth_prio_SUITE,{init_per_group,'_',[]},ok}}] ++ + + [{?eh,tc_start,{ct_cth_prio_SUITE,test_case}}] ++ + GenPre(pre_init_per_testcase, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + GenPost(post_end_per_testcase, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + [{?eh,tc_done,{ct_cth_prio_SUITE,test_case,ok}}, + + {?eh,tc_start,{ct_cth_prio_SUITE,{end_per_group,'_',[]}}}] ++ + GenPre(pre_end_per_group, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + GenPost(post_end_per_group, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + [{?eh,tc_done,{ct_cth_prio_SUITE,{end_per_group,'_',[]},ok}}], + + {?eh,tc_start,{ct_cth_prio_SUITE,end_per_suite}}] ++ + GenPre(pre_end_per_suite, + [[1100,100],[600,200],[600,600],[700],[800],[900],[1000], + [1200,1050],[1100],[1200]]) ++ + GenPost(post_end_per_suite, + [[1100,100],[600,200],[600,600],[700],[800],[900],[1000], + [1200,1050],[1100],[1200]]) ++ + [{?eh,tc_done,{ct_cth_prio_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}]; + test_events(ok) -> ok. diff --git a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/ct_cth_prio_SUITE.erl b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/ct_cth_prio_SUITE.erl new file mode 100644 index 0000000000..d564398cd0 --- /dev/null +++ b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/ct_cth_prio_SUITE.erl @@ -0,0 +1,62 @@ +%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2010-2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+-module(ct_cth_prio_SUITE).
+
+%% Note: This directive should only be used in test suites.
+-compile(export_all).
+
+-include("ct.hrl").
+
+suite() ->
+ ([{timetrap, {minutes, 10}},
+ {ct_hooks, [{empty_cth,[800],800},
+ {prio_cth,[1200]},{prio_cth,[1200,1050],1050}]}]).
+
+%% Test server callback functions
+init_per_suite(Config) ->
+ [{ct_hooks, [{empty_cth,[700],700},
+ {prio_cth,[600,600]},
+ {prio_cth,[600,200],200}]}|Config].
+
+end_per_suite(_Config) ->
+ ok.
+
+init_per_group(_G, Config) ->
+ [{ct_hooks, [{empty_cth,[600],600},
+ {prio_cth,[900,900]},{prio_cth,[500,900],900}]}|Config].
+
+end_per_group(_G, _Config) ->
+ ok.
+
+init_per_testcase(_TestCase, Config) ->
+ Config.
+
+end_per_testcase(_TestCase, _Config) ->
+ ok.
+
+all() ->
+ [{group,test_group}].
+
+groups() ->
+ [{test_group,[],[test_case]}].
+
+%% Test cases starts here.
+test_case(Config) when is_list(Config) ->
+ ok.
diff --git a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/empty_cth.erl b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/empty_cth.erl index ebebfd18a9..7befcfa57c 100644 --- a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/empty_cth.erl +++ b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/empty_cth.erl @@ -59,8 +59,7 @@ -include_lib("common_test/src/ct_util.hrl").
-include_lib("common_test/include/ct_event.hrl").
--type proplist() :: list({atom(),term()}).
--type config() :: proplist().
+-type config() :: proplists:proplist(). -type reason() :: term().
-type skip_or_fail() :: {skip, reason()} |
{auto_skip, reason()} |
@@ -71,17 +70,17 @@ %% @doc Always called before any other callback function. Use this to initiate
%% any common state. It should return an state for this CTH.
--spec init(Id :: term(), Opts :: proplist()) ->
- State :: #state{}.
+-spec init(Id :: term(), Opts :: proplists:proplist()) -> + {ok, State :: #state{}}.
init(Id, Opts) ->
gen_event:notify(?CT_EVMGR_REF, #event{ name = cth, node = node(),
data = {?MODULE, init, [Id, Opts]}}),
- Opts.
+ {ok,Opts}.
%% @doc The ID is used to uniquly identify an CTH instance, if two CTH's
%% return the same ID the seconds CTH is ignored. This function should NOT
%% have any side effects as it might be called multiple times by common test.
--spec id(Opts :: proplist()) ->
+-spec id(Opts :: proplists:proplist()) -> Id :: term().
id(Opts) ->
gen_event:notify(?CT_EVMGR_REF, #event{ name = cth, node = node(),
diff --git a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/prio_cth.erl b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/prio_cth.erl new file mode 100644 index 0000000000..82511ab0d3 --- /dev/null +++ b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/prio_cth.erl @@ -0,0 +1,74 @@ +%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2010-2011. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+
+-module(prio_cth).
+
+
+-include_lib("common_test/src/ct_util.hrl").
+
+
+%% CT Hooks
+-compile(export_all).
+
+id(Opts) ->
+ empty_cth:id(Opts).
+
+init(Id, Opts) ->
+ {ok, [Prio|_] = State} = empty_cth:init(Id, Opts),
+ {ok, State, Prio}.
+
+pre_init_per_suite(Suite, Config, State) ->
+ empty_cth:pre_init_per_suite(Suite,Config,State).
+
+post_init_per_suite(Suite,Config,Return,State) ->
+ empty_cth:post_init_per_suite(Suite,Config,Return,State).
+
+pre_end_per_suite(Suite,Config,State) ->
+ empty_cth:pre_end_per_suite(Suite,Config,State).
+
+post_end_per_suite(Suite,Config,Return,State) ->
+ empty_cth:post_end_per_suite(Suite,Config,Return,State).
+
+pre_init_per_group(Group,Config,State) ->
+ empty_cth:pre_init_per_group(Group,Config,State).
+
+post_init_per_group(Group,Config,Return,State) ->
+ empty_cth:post_init_per_group(Group,Config,Return,State).
+
+pre_end_per_group(Group,Config,State) ->
+ empty_cth:pre_end_per_group(Group,Config,State).
+
+post_end_per_group(Group,Config,Return,State) ->
+ empty_cth:post_end_per_group(Group,Config,Return,State).
+
+pre_init_per_testcase(TC,Config,State) ->
+ empty_cth:pre_init_per_testcase(TC,Config,State).
+
+post_end_per_testcase(TC,Config,Return,State) ->
+ empty_cth:post_end_per_testcase(TC,Config,Return,State).
+
+on_tc_fail(TC, Reason, State) ->
+ empty_cth:on_tc_fail(TC,Reason,State).
+
+on_tc_skip(TC, Reason, State) ->
+ empty_cth:on_tc_skip(TC,Reason,State).
+
+terminate(State) ->
+ empty_cth:terminate(State).
diff --git a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/state_update_cth.erl b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/state_update_cth.erl index 35c990c0be..9da48d3a4c 100644 --- a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/state_update_cth.erl +++ b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/state_update_cth.erl @@ -29,7 +29,7 @@ init(Id, Opts) ->
State = empty_cth:init(Id, Opts),
- [init|State].
+ {ok, [init|State]}.
pre_init_per_suite(Suite, Config, State) ->
empty_cth:pre_init_per_suite(Suite,Config,State),
diff --git a/lib/compiler/src/compile.erl b/lib/compiler/src/compile.erl index ce8a5bf864..e46c667e47 100644 --- a/lib/compiler/src/compile.erl +++ b/lib/compiler/src/compile.erl @@ -113,7 +113,7 @@ noenv_forms(Forms, Opt) when is_atom(Opt) -> noenv_output_generated(Opts) -> {_,Passes} = passes(file, expand_opts(Opts)), - any(fun ({save_binary,_F}) -> true; + any(fun ({save_binary,_T,_F}) -> true; (_Other) -> false end, Passes). @@ -122,6 +122,7 @@ noenv_output_generated(Opts) -> %% -define(pass(P), {P,fun P/1}). +-define(pass(P,T), {P,fun T/1,fun P/1}). env_default_opts() -> Key = "ERL_COMPILER_OPTIONS", @@ -304,7 +305,7 @@ run_tc({Name,Fun}, St) -> Val. comp_ret_ok(#compile{code=Code,warnings=Warn0,module=Mod,options=Opts}=St) -> - case member(warnings_as_errors, Opts) andalso length(Warn0) > 0 of + case werror(St) of true -> case member(report_warnings, Opts) of true -> @@ -339,6 +340,11 @@ comp_ret_err(#compile{warnings=Warn0,errors=Err0,options=Opts}=St) -> false -> error end. +not_werror(St) -> not werror(St). + +werror(#compile{options=Opts,warnings=Ws}) -> + Ws =/= [] andalso member(warnings_as_errors, Opts). + %% messages_per_file([{File,[Message]}]) -> [{File,[Message]}] messages_per_file(Ms) -> T = lists:sort([{File,M} || {File,Messages} <- Ms, M <- Messages]), @@ -373,7 +379,7 @@ passes(Type, Opts) -> %% insert a first pass to remove the file (unless the %% source file is a BEAM file). {Ext,case last(Passes) of - {save_binary,_Fun} -> + {save_binary,_TestFun,_Fun} -> case Passes of [{read_beam_file,_}|_] -> %% The BEAM is both input and output. @@ -655,7 +661,7 @@ asm_passes() -> binary_passes() -> [{native_compile,fun test_native/1,fun native_compile/1}, - {unless,binary,?pass(save_binary)}]. + {unless,binary,?pass(save_binary,not_werror)}]. %%% %%% Compiler passes. @@ -1379,28 +1385,34 @@ report_errors(#compile{options=Opts,errors=Errors}) -> end. report_warnings(#compile{options=Opts,warnings=Ws0}) -> - case member(report_warnings, Opts) of + Werror = member(warnings_as_errors, Opts), + P = case Werror of + true -> ""; + false -> "Warning: " + end, + ReportWerror = Werror andalso member(report_errors, Opts), + case member(report_warnings, Opts) orelse ReportWerror of true -> - Ws1 = flatmap(fun({{F,_L},Eds}) -> format_message(F, Eds); - ({F,Eds}) -> format_message(F, Eds) end, + Ws1 = flatmap(fun({{F,_L},Eds}) -> format_message(F, P, Eds); + ({F,Eds}) -> format_message(F, P, Eds) end, Ws0), Ws = lists:sort(Ws1), foreach(fun({_,Str}) -> io:put_chars(Str) end, Ws); false -> ok end. -format_message(F, [{{Line,Column}=Loc,Mod,E}|Es]) -> - M = {{F,Loc},io_lib:format("~s:~w:~w Warning: ~s\n", - [F,Line,Column,Mod:format_error(E)])}, - [M|format_message(F, Es)]; -format_message(F, [{Line,Mod,E}|Es]) -> - M = {{F,{Line,0}},io_lib:format("~s:~w: Warning: ~s\n", - [F,Line,Mod:format_error(E)])}, - [M|format_message(F, Es)]; -format_message(F, [{Mod,E}|Es]) -> - M = {none,io_lib:format("~s: Warning: ~s\n", [F,Mod:format_error(E)])}, - [M|format_message(F, Es)]; -format_message(_, []) -> []. +format_message(F, P, [{{Line,Column}=Loc,Mod,E}|Es]) -> + M = {{F,Loc},io_lib:format("~s:~w:~w ~s~s\n", + [F,Line,Column,P,Mod:format_error(E)])}, + [M|format_message(F, P, Es)]; +format_message(F, P, [{Line,Mod,E}|Es]) -> + M = {{F,{Line,0}},io_lib:format("~s:~w: ~s~s\n", + [F,Line,P,Mod:format_error(E)])}, + [M|format_message(F, P, Es)]; +format_message(F, P, [{Mod,E}|Es]) -> + M = {none,io_lib:format("~s: ~s~s\n", [F,P,Mod:format_error(E)])}, + [M|format_message(F, P, Es)]; +format_message(_, _, []) -> []. %% list_errors(File, ErrorDescriptors) -> ok diff --git a/lib/compiler/src/sys_pre_expand.erl b/lib/compiler/src/sys_pre_expand.erl index 480954adac..dd6f24e21f 100644 --- a/lib/compiler/src/sys_pre_expand.erl +++ b/lib/compiler/src/sys_pre_expand.erl @@ -223,10 +223,8 @@ attribute(export, Es, _L, St) -> St#expand{exports=union(from_list(Es), St#expand.exports)}; attribute(import, Is, _L, St) -> import(Is, St); -attribute(compile, C, _L, St) when is_list(C) -> - St#expand{compile=St#expand.compile ++ C}; -attribute(compile, C, _L, St) -> - St#expand{compile=St#expand.compile ++ [C]}; +attribute(compile, _C, _L, St) -> + St; attribute(Name, Val, Line, St) when is_list(Val) -> St#expand{attributes=St#expand.attributes ++ [{Name,Line,Val}]}; attribute(Name, Val, Line, St) -> diff --git a/lib/compiler/test/error_SUITE.erl b/lib/compiler/test/error_SUITE.erl index 6e0aadf007..eb5e50818e 100644 --- a/lib/compiler/test/error_SUITE.erl +++ b/lib/compiler/test/error_SUITE.erl @@ -183,23 +183,47 @@ get_compilation_errors(Config, Filename) -> E. warnings_as_errors(Config) when is_list(Config) -> - Ts = [{warnings_as_errors, + ?line TestFile = test_filename(Config), + ?line BeamFile = filename:rootname(TestFile, ".erl") ++ ".beam", + ?line OutDir = ?config(priv_dir, Config), + + Ts1 = [{warnings_as_errors, <<" t() -> A = unused, ok. ">>, - [export_all,warnings_as_errors], - {error, - [], - [{3,erl_lint,{unused_var,'A'}}]} }], - ?line [] = run(Config, Ts), + [warnings_as_errors, export_all, {outdir, OutDir}], + {error, + [], + [{3,erl_lint,{unused_var,'A'}}]} }], + ?line [] = run(Ts1, TestFile, write_beam), + ?line false = filelib:is_regular(BeamFile), + + Ts2 = [{warning_unused_var, + <<" + t() -> + A = unused, + ok. + ">>, + [return_warnings, export_all, {outdir, OutDir}], + {warning, + [{3,erl_lint,{unused_var,'A'}}]} }], + + ?line [] = run(Ts2, TestFile, write_beam), + ?line true = filelib:is_regular(BeamFile), + ?line ok = file:delete(BeamFile), + ok. run(Config, Tests) -> + ?line File = test_filename(Config), + run(Tests, File, dont_write_beam). + +run(Tests, File, WriteBeam) -> F = fun({N,P,Ws,E}, BadL) -> - case catch run_test(Config, P, Ws) of + case catch run_test(P, File, Ws, WriteBeam) of E -> BadL; Bad -> @@ -211,8 +235,12 @@ run(Config, Tests) -> lists:foldl(F, [], Tests). run2(Config, Tests) -> + ?line File = test_filename(Config), + run2(Tests, File, dont_write_beam). + +run2(Tests, File, WriteBeam) -> F = fun({N,P,Ws,E}, BadL) -> - case catch filter(run_test(Config, P, Ws)) of + case catch filter(run_test(P, File, Ws, WriteBeam)) of E -> BadL; Bad -> @@ -231,12 +259,19 @@ filter(X) -> %% Compiles a test module and returns the list of errors and warnings. -run_test(Conf, Test0, Warnings) -> - Filename = 'errors_test.erl', - ?line DataDir = ?config(priv_dir, Conf), +test_filename(Conf) -> + Filename = "errors_test.erl", + DataDir = ?config(priv_dir, Conf), + filename:join(DataDir, Filename). + +run_test(Test0, File, Warnings, WriteBeam) -> ?line Test = ["-module(errors_test). ", Test0], - ?line File = filename:join(DataDir, Filename), - ?line Opts = [binary,return_errors|Warnings], + ?line Opts = case WriteBeam of + dont_write_beam -> + [binary,return_errors|Warnings]; + write_beam -> + [return_errors|Warnings] + end, ?line ok = file:write_file(File, Test), %% Compile once just to print all errors and warnings. @@ -252,6 +287,10 @@ run_test(Conf, Test0, Warnings) -> %io:format("compile:file(~s,~p) ->~n~p~n", % [File,Opts,Ws]), []; + {ok,errors_test,[{_File,Ws}]} -> + {warning,Ws}; + {ok,errors_test,[]} -> + []; {error,[{XFile,Es}],Ws} = _ZZ when is_list(XFile) -> %io:format("compile:file(~s,~p) ->~n~p~n", % [File,Opts,_ZZ]), diff --git a/lib/crypto/c_src/Makefile.in b/lib/crypto/c_src/Makefile.in index 276c84d601..c2a986c334 100644 --- a/lib/crypto/c_src/Makefile.in +++ b/lib/crypto/c_src/Makefile.in @@ -41,6 +41,7 @@ CFLAGS = $(DED_CFLAGS) SSL_LIBDIR = @SSL_LIBDIR@ SSL_INCLUDE = @SSL_INCLUDE@ SSL_CRYPTO_LIBNAME = @SSL_CRYPTO_LIBNAME@ +SSL_SSL_LIBNAME = @SSL_SSL_LIBNAME@ INCLUDES = $(SSL_INCLUDE) $(DED_INCLUDES) @@ -84,7 +85,7 @@ DYNAMIC_CRYPTO_LIB=@SSL_DYNAMIC_ONLY@ ifeq ($(DYNAMIC_CRYPTO_LIB),yes) SSL_DED_LD_RUNTIME_LIBRARY_PATH = @SSL_DED_LD_RUNTIME_LIBRARY_PATH@ -CRYPTO_LINK_LIB=$(SSL_DED_LD_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) -l$(SSL_CRYPTO_LIBNAME) +CRYPTO_LINK_LIB=$(SSL_DED_LD_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) -l$(SSL_CRYPTO_LIBNAME) -l$(SSL_SSL_LIBNAME) else SSL_DED_LD_RUNTIME_LIBRARY_PATH= CRYPTO_LINK_LIB=$(SSL_LIBDIR)/lib$(SSL_CRYPTO_LIBNAME).a @@ -112,7 +113,7 @@ $(LIBDIR)/crypto$(TYPEMARKER).so: $(OBJS) $(LIBDIR)/crypto$(TYPEMARKER).dll: $(OBJS) $(INSTALL_DIR) $(LIBDIR) - $(LD) $(LDFLAGS) -o $@ $(SSL_DED_LD_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) $(OBJS) -l$(SSL_CRYPTO_LIBNAME) + $(LD) $(LDFLAGS) -o $@ $(SSL_DED_LD_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) $(OBJS) -l$(SSL_CRYPTO_LIBNAME) -l$(SSL_SSL_LIBNAME) clean: ifeq ($(findstring win32,$(TARGET)), win32) diff --git a/lib/crypto/doc/src/crypto.xml b/lib/crypto/doc/src/crypto.xml index 179ba4498c..96c4a072e1 100644 --- a/lib/crypto/doc/src/crypto.xml +++ b/lib/crypto/doc/src/crypto.xml @@ -744,7 +744,7 @@ Mpint() = <![CDATA[<<ByteLen:32/integer-big, Bytes:ByteLen/binary>>]]> <p>Generate a random number <c><![CDATA[N, Lo =< N < Hi.]]></c> Uses the <c>crypto</c> library pseudo-random number generator. The arguments (and result) can be either erlang integers or binary - multi-precision integers.</p> + multi-precision integers. <c>Hi</c> must be larger than <c>Lo</c>.</p> </desc> </func> <func> diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl index c35dfcebab..c3e13d6b91 100644 --- a/lib/crypto/src/crypto.erl +++ b/lib/crypto/src/crypto.erl @@ -415,6 +415,13 @@ rand_uniform(From,To) when is_binary(From), is_binary(To) -> Whatever end; rand_uniform(From,To) when is_integer(From),is_integer(To) -> + if From < 0 -> + rand_uniform_pos(0, To - From) + From; + true -> + rand_uniform_pos(From, To) + end. + +rand_uniform_pos(From,To) when From < To -> BinFrom = mpint(From), BinTo = mpint(To), case rand_uniform(BinFrom, BinTo) of @@ -422,7 +429,9 @@ rand_uniform(From,To) when is_integer(From),is_integer(To) -> erlint(Result); Other -> Other - end. + end; +rand_uniform_pos(_,_) -> + error(badarg). rand_uniform_nif(_From,_To) -> ?nif_stub. diff --git a/lib/crypto/test/crypto_SUITE.erl b/lib/crypto/test/crypto_SUITE.erl index 283aadb6ea..8d2f42469b 100644 --- a/lib/crypto/test/crypto_SUITE.erl +++ b/lib/crypto/test/crypto_SUITE.erl @@ -878,10 +878,17 @@ rand_uniform_aux_test(0) -> rand_uniform_aux_test(N) -> ?line L = N*1000, ?line H = N*100000+1, + ?line crypto_rand_uniform(L, H), + ?line crypto_rand_uniform(-L, L), + ?line crypto_rand_uniform(-H, -L), + ?line crypto_rand_uniform(-H, L), + ?line rand_uniform_aux_test(N-1). + +crypto_rand_uniform(L,H) -> ?line R1 = crypto:rand_uniform(L, H), ?line t(R1 >= L), - ?line t(R1 < H), - ?line rand_uniform_aux_test(N-1). + ?line t(R1 < H). + %% %% diff --git a/lib/dialyzer/src/dialyzer_dataflow.erl b/lib/dialyzer/src/dialyzer_dataflow.erl index 8cb16d8f09..659297f993 100644 --- a/lib/dialyzer/src/dialyzer_dataflow.erl +++ b/lib/dialyzer/src/dialyzer_dataflow.erl @@ -528,7 +528,7 @@ handle_apply(Tree, Map, State) -> {CallSitesKnown, FunList} = case state__lookup_call_site(Tree, State2) of error -> {false, []}; - {ok, [external]} -> {false, {}}; + {ok, [external]} -> {false, []}; {ok, List} -> {true, List} end, case CallSitesKnown of @@ -554,7 +554,13 @@ handle_apply(Tree, Map, State) -> {State3, enter_type(Op, OpType1, Map2), t_none()}; false -> Map3 = enter_type_lists(Args, NewArgs, Map2), - {State2, enter_type(Op, OpType1, Map3), t_fun_range(OpType1)} + Range0 = t_fun_range(OpType1), + Range = + case t_is_unit(Range0) of + true -> t_none(); + false -> Range0 + end, + {State2, enter_type(Op, OpType1, Map3), Range} end end; true -> @@ -2946,7 +2952,7 @@ state__get_warnings(#state{tree_map = TreeMap, fun_tab = FunTab, %% Check if the function has a contract that allows this. Warn = case Contract of - none -> true; + none -> not parent_allows_this(FunLbl, State); {value, C} -> GenRet = dialyzer_contracts:get_contract_return(C), not t_is_unit(GenRet) @@ -3434,6 +3440,33 @@ map_pats(Pats) -> end, cerl_trees:map(Fun, Pats). +parent_allows_this(FunLbl, #state{callgraph = Callgraph, plt = Plt} =State) -> + case state__is_escaping(FunLbl, State) of + false -> false; % if it isn't escaping it can't be a return value + true -> + case state__lookup_name(FunLbl, State) of + {_M, _F, _A} -> false; % if it has a name it is not a fun + _ -> + case dialyzer_callgraph:in_neighbours(FunLbl, Callgraph) of + [Parent] -> + case state__lookup_name(Parent, State) of + {_M, _F, _A} = PMFA -> + case dialyzer_plt:lookup_contract(Plt, PMFA) of + none -> false; + {value, C} -> + GenRet = dialyzer_contracts:get_contract_return(C), + case erl_types:t_is_fun(GenRet) of + false -> false; % element of structure? far-fetched... + true -> t_is_unit(t_fun_range(GenRet)) + end + end; + _ -> false % parent should have a name to have a contract + end; + _ -> false % called in other funs? far-fetched... + end + end + end. + classify_returns(Tree) -> case find_terminals(cerl:fun_body(Tree)) of {false, false} -> no_match; diff --git a/lib/dialyzer/src/dialyzer_typesig.erl b/lib/dialyzer/src/dialyzer_typesig.erl index 65c2ff76bb..06863d89a7 100644 --- a/lib/dialyzer/src/dialyzer_typesig.erl +++ b/lib/dialyzer/src/dialyzer_typesig.erl @@ -62,7 +62,8 @@ -type dep() :: integer(). %% type variable names used as constraint ids -type type_var() :: erl_types:erl_type(). %% actually: {'c','var',_,_} --record(fun_var, {'fun' :: fun((_) -> erl_types:erl_type()), deps :: [dep()]}). +-record(fun_var, {'fun' :: fun((_) -> erl_types:erl_type()), deps :: [dep()], + origin :: integer()}). -type constr_op() :: 'eq' | 'sub'. -type fvar_or_type() :: #fun_var{} | erl_types:erl_type(). @@ -121,8 +122,10 @@ -ifdef(DEBUG). -define(debug(__String, __Args), io:format(__String, __Args)). +-define(mk_fun_var(Fun, Vars), mk_fun_var(?LINE, Fun, Vars)). -else. -define(debug(__String, __Args), ok). +-define(mk_fun_var(Fun, Vars), mk_fun_var(Fun, Vars)). -endif. %% ============================================================================ @@ -218,10 +221,10 @@ traverse(Tree, DefinedVars, State) -> binary -> {State1, SegTypes} = traverse_list(cerl:binary_segments(Tree), DefinedVars, State), - Type = mk_fun_var(fun(Map) -> - TmpSegTypes = lookup_type_list(SegTypes, Map), - t_bitstr_concat(TmpSegTypes) - end, SegTypes), + Type = ?mk_fun_var(fun(Map) -> + TmpSegTypes = lookup_type_list(SegTypes, Map), + t_bitstr_concat(TmpSegTypes) + end, SegTypes), {state__store_conj(mk_var(Tree), sub, Type, State1), mk_var(Tree)}; bitstr -> Size = cerl:bitstr_size(Tree), @@ -236,7 +239,7 @@ traverse(Tree, DefinedVars, State) -> N when is_integer(N) -> {State1, t_bitstr(0, N)}; any -> % Size is not a literal {state__store_conj(SizeType, sub, t_non_neg_integer(), State1), - mk_fun_var(bitstr_constr(SizeType, UnitVal), [SizeType])} + ?mk_fun_var(bitstr_constr(SizeType, UnitVal), [SizeType])} end, ValTypeConstr = case cerl:concrete(cerl:bitstr_type(Tree)) of @@ -250,8 +253,8 @@ traverse(Tree, DefinedVars, State) -> case state__is_in_match(State1) of true -> Flags = cerl:concrete(cerl:bitstr_flags(Tree)), - mk_fun_var(bitstr_val_constr(SizeType, UnitVal, Flags), - [SizeType]); + ?mk_fun_var(bitstr_val_constr(SizeType, UnitVal, Flags), + [SizeType]); false -> t_integer() end; utf8 -> t_integer(); @@ -281,24 +284,24 @@ traverse(Tree, DefinedVars, State) -> {State, t_cons(HdVar, TlVar)}; false -> ConsVar = mk_var(Tree), - ConsType = mk_fun_var(fun(Map) -> - t_cons(lookup_type(HdVar, Map), - lookup_type(TlVar, Map)) - end, [HdVar, TlVar]), - HdType = mk_fun_var(fun(Map) -> - Cons = lookup_type(ConsVar, Map), - case t_is_cons(Cons) of - false -> t_any(); - true -> t_cons_hd(Cons) - end - end, [ConsVar]), - TlType = mk_fun_var(fun(Map) -> - Cons = lookup_type(ConsVar, Map), - case t_is_cons(Cons) of - false -> t_any(); - true -> t_cons_tl(Cons) - end - end, [ConsVar]), + ConsType = ?mk_fun_var(fun(Map) -> + t_cons(lookup_type(HdVar, Map), + lookup_type(TlVar, Map)) + end, [HdVar, TlVar]), + HdType = ?mk_fun_var(fun(Map) -> + Cons = lookup_type(ConsVar, Map), + case t_is_cons(Cons) of + false -> t_any(); + true -> t_cons_hd(Cons) + end + end, [ConsVar]), + TlType = ?mk_fun_var(fun(Map) -> + Cons = lookup_type(ConsVar, Map), + case t_is_cons(Cons) of + false -> t_any(); + true -> t_cons_tl(Cons) + end + end, [ConsVar]), State2 = state__store_conj_lists([HdVar, TlVar, ConsVar], sub, [HdType, TlType, ConsType], State1), @@ -656,25 +659,25 @@ get_plt_constr(MFA, Dst, ArgVars, State) -> {RetType, ArgCs} = case PltRes of none -> - {mk_fun_var(fun(Map) -> - ArgTypes = lookup_type_list(ArgVars, Map), - dialyzer_contracts:get_contract_return(C, ArgTypes) - end, ArgVars), GenArgs}; + {?mk_fun_var(fun(Map) -> + ArgTypes = lookup_type_list(ArgVars, Map), + dialyzer_contracts:get_contract_return(C, ArgTypes) + end, ArgVars), GenArgs}; {value, {PltRetType, PltArgTypes}} -> %% Need to combine the contract with the success typing. - {mk_fun_var( - fun(Map) -> - ArgTypes0 = lookup_type_list(ArgVars, Map), - ArgTypes = case FunModule =:= Module of - false -> - List = lists:zip(PltArgTypes, ArgTypes0), - [erl_types:t_unopaque_on_mismatch(T1, T2, Opaques) - || {T1, T2} <- List]; - true -> ArgTypes0 - end, - CRet = dialyzer_contracts:get_contract_return(C, ArgTypes), - t_inf(CRet, PltRetType, opaque) - end, ArgVars), + {?mk_fun_var( + fun(Map) -> + ArgTypes0 = lookup_type_list(ArgVars, Map), + ArgTypes = case FunModule =:= Module of + false -> + List = lists:zip(PltArgTypes, ArgTypes0), + [erl_types:t_unopaque_on_mismatch(T1, T2, Opaques) + || {T1, T2} <- List]; + true -> ArgTypes0 + end, + CRet = dialyzer_contracts:get_contract_return(C, ArgTypes), + t_inf(CRet, PltRetType, opaque) + end, ArgVars), [t_inf(X, Y, opaque) || {X, Y} <- lists:zip(GenArgs, PltArgTypes)]} end, state__store_conj_lists([Dst|ArgVars], sub, [RetType|ArgCs], State) @@ -766,10 +769,10 @@ handle_clauses_1([Clause|Tail], TopVar, Arg, DefinedVars, case SubtrTypes =:= overflow of true -> S; false -> - SubtrPatVar = mk_fun_var(fun(Map) -> - TmpType = lookup_type(Arg, Map), - t_subtract_list(TmpType, SubtrTypes) - end, [Arg]), + SubtrPatVar = ?mk_fun_var(fun(Map) -> + TmpType = lookup_type(Arg, Map), + t_subtract_list(TmpType, SubtrTypes) + end, [Arg]), state__store_conj(Arg, sub, SubtrPatVar, S) end end, @@ -1043,10 +1046,10 @@ handle_guard(Guard, DefinedVars, State) -> get_bif_constr({erlang, Op, 2}, Dst, Args = [Arg1, Arg2], _State) when Op =:= '+'; Op =:= '-'; Op =:= '*' -> - ReturnType = mk_fun_var(fun(Map) -> - TmpArgTypes = lookup_type_list(Args, Map), - erl_bif_types:type(erlang, Op, 2, TmpArgTypes) - end, Args), + ReturnType = ?mk_fun_var(fun(Map) -> + TmpArgTypes = lookup_type_list(Args, Map), + erl_bif_types:type(erlang, Op, 2, TmpArgTypes) + end, Args), ArgFun = fun(A, Pos) -> F = @@ -1074,7 +1077,7 @@ get_bif_constr({erlang, Op, 2}, Dst, Args = [Arg1, Arg2], _State) end end end, - mk_fun_var(F, [Dst, A]) + ?mk_fun_var(F, [Dst, A]) end, Arg1FunVar = ArgFun(Arg2, 2), Arg2FunVar = ArgFun(Arg1, 1), @@ -1131,12 +1134,12 @@ get_bif_constr({erlang, Op, 2}, Dst, [Arg1, Arg2] = Args, _State) '>=' -> {ArgFun(Arg1, Arg2, '>='), ArgFun(Arg2, Arg1, '=<')} end, DstArgs = [Dst, Arg1, Arg2], - Arg1Var = mk_fun_var(Arg1Fun, DstArgs), - Arg2Var = mk_fun_var(Arg2Fun, DstArgs), - DstVar = mk_fun_var(fun(Map) -> - TmpArgTypes = lookup_type_list(Args, Map), - erl_bif_types:type(erlang, Op, 2, TmpArgTypes) - end, Args), + Arg1Var = ?mk_fun_var(Arg1Fun, DstArgs), + Arg2Var = ?mk_fun_var(Arg2Fun, DstArgs), + DstVar = ?mk_fun_var(fun(Map) -> + TmpArgTypes = lookup_type_list(Args, Map), + erl_bif_types:type(erlang, Op, 2, TmpArgTypes) + end, Args), mk_conj_constraint_list([mk_constraint(Dst, sub, DstVar), mk_constraint(Arg1, sub, Arg1Var), mk_constraint(Arg2, sub, Arg2Var)]); @@ -1172,13 +1175,13 @@ get_bif_constr({erlang, '++', 2}, Dst, [Hd, Tl] = Args, _State) -> end end, DstL = [Dst], - HdVar = mk_fun_var(HdFun, DstL), - TlVar = mk_fun_var(TlFun, DstL), + HdVar = ?mk_fun_var(HdFun, DstL), + TlVar = ?mk_fun_var(TlFun, DstL), ArgTypes = erl_bif_types:arg_types(erlang, '++', 2), - ReturnType = mk_fun_var(fun(Map) -> - TmpArgTypes = lookup_type_list(Args, Map), - erl_bif_types:type(erlang, '++', 2, TmpArgTypes) - end, Args), + ReturnType = ?mk_fun_var(fun(Map) -> + TmpArgTypes = lookup_type_list(Args, Map), + erl_bif_types:type(erlang, '++', 2, TmpArgTypes) + end, Args), Cs = mk_constraints(Args, sub, ArgTypes), mk_conj_constraint_list([mk_constraint(Dst, sub, ReturnType), mk_constraint(Hd, sub, HdVar), @@ -1209,7 +1212,7 @@ get_bif_constr({erlang, is_function, 2}, Dst, [Fun, Arity], _State) -> false -> t_any() end end, - ArgV = mk_fun_var(ArgFun, [Dst, Arity]), + ArgV = ?mk_fun_var(ArgFun, [Dst, Arity]), mk_conj_constraint_list([mk_constraint(Dst, sub, t_boolean()), mk_constraint(Arity, sub, t_integer()), mk_constraint(Fun, sub, ArgV)]); @@ -1232,12 +1235,12 @@ get_bif_constr({erlang, is_record, 2}, Dst, [Var, Tag] = Args, _State) -> false -> t_any() end end, - ArgV = mk_fun_var(ArgFun, [Dst]), + ArgV = ?mk_fun_var(ArgFun, [Dst]), DstFun = fun(Map) -> TmpArgTypes = lookup_type_list(Args, Map), erl_bif_types:type(erlang, is_record, 2, TmpArgTypes) end, - DstV = mk_fun_var(DstFun, Args), + DstV = ?mk_fun_var(DstFun, Args), mk_conj_constraint_list([mk_constraint(Dst, sub, DstV), mk_constraint(Tag, sub, t_atom()), mk_constraint(Var, sub, ArgV)]); @@ -1280,7 +1283,7 @@ get_bif_constr({erlang, is_record, 3}, Dst, [Var, Tag, Arity] = Args, State) -> false -> t_any() end end, - ArgV = mk_fun_var(ArgFun, [Tag, Arity, Dst]), + ArgV = ?mk_fun_var(ArgFun, [Tag, Arity, Dst]), DstFun = fun(Map) -> [TmpVar, TmpTag, TmpArity] = TmpArgTypes = lookup_type_list(Args, Map), TmpArgTypes2 = @@ -1314,7 +1317,7 @@ get_bif_constr({erlang, is_record, 3}, Dst, [Var, Tag, Arity] = Args, State) -> end, erl_bif_types:type(erlang, is_record, 3, TmpArgTypes2) end, - DstV = mk_fun_var(DstFun, Args), + DstV = ?mk_fun_var(DstFun, Args), mk_conj_constraint_list([mk_constraint(Dst, sub, DstV), mk_constraint(Arity, sub, t_integer()), mk_constraint(Tag, sub, t_atom()), @@ -1359,9 +1362,9 @@ get_bif_constr({erlang, 'and', 2}, Dst, [Arg1, Arg2] = Args, _State) -> end end end, - ArgV1 = mk_fun_var(ArgFun(Arg2), [Arg2, Dst]), - ArgV2 = mk_fun_var(ArgFun(Arg1), [Arg1, Dst]), - DstV = mk_fun_var(DstFun, Args), + ArgV1 = ?mk_fun_var(ArgFun(Arg2), [Arg2, Dst]), + ArgV2 = ?mk_fun_var(ArgFun(Arg1), [Arg1, Dst]), + DstV = ?mk_fun_var(DstFun, Args), mk_conj_constraint_list([mk_constraint(Dst, sub, DstV), mk_constraint(Arg1, sub, ArgV1), mk_constraint(Arg2, sub, ArgV2)]); @@ -1403,9 +1406,9 @@ get_bif_constr({erlang, 'or', 2}, Dst, [Arg1, Arg2] = Args, _State) -> end end end, - ArgV1 = mk_fun_var(ArgFun(Arg2), [Arg2, Dst]), - ArgV2 = mk_fun_var(ArgFun(Arg1), [Arg1, Dst]), - DstV = mk_fun_var(DstFun, Args), + ArgV1 = ?mk_fun_var(ArgFun(Arg2), [Arg2, Dst]), + ArgV2 = ?mk_fun_var(ArgFun(Arg1), [Arg1, Dst]), + DstV = ?mk_fun_var(DstFun, Args), F = fun(A) -> try [mk_constraint(A, sub, True)] catch throw:error -> [] @@ -1433,8 +1436,8 @@ get_bif_constr({erlang, 'not', 1}, Dst, [Arg] = Args, _State) -> end end end, - ArgV = mk_fun_var(Fun(Dst), [Dst]), - DstV = mk_fun_var(Fun(Arg), Args), + ArgV = ?mk_fun_var(Fun(Dst), [Dst]), + DstV = ?mk_fun_var(Fun(Arg), Args), mk_conj_constraint_list([mk_constraint(Arg, sub, ArgV), mk_constraint(Dst, sub, DstV)]); get_bif_constr({erlang, '=:=', 2}, Dst, [Arg1, Arg2] = Args, _State) -> @@ -1467,9 +1470,9 @@ get_bif_constr({erlang, '=:=', 2}, Dst, [Arg1, Arg2] = Args, _State) -> end end, DstArgs = [Dst, Arg1, Arg2], - ArgV1 = mk_fun_var(ArgFun(Arg1, Arg2), DstArgs), - ArgV2 = mk_fun_var(ArgFun(Arg2, Arg1), DstArgs), - DstV = mk_fun_var(DstFun, Args), + ArgV1 = ?mk_fun_var(ArgFun(Arg1, Arg2), DstArgs), + ArgV2 = ?mk_fun_var(ArgFun(Arg2, Arg1), DstArgs), + DstV = ?mk_fun_var(DstFun, Args), mk_conj_constraint_list([mk_constraint(Dst, sub, DstV), mk_constraint(Arg1, sub, ArgV1), mk_constraint(Arg2, sub, ArgV2)]); @@ -1510,10 +1513,10 @@ get_bif_constr({erlang, '==', 2}, Dst, [Arg1, Arg2] = Args, _State) -> end end end, - DstV = mk_fun_var(DstFun, Args), + DstV = ?mk_fun_var(DstFun, Args), ArgL = [Arg1, Arg2, Dst], - ArgV1 = mk_fun_var(ArgFun(Arg2, Arg1), ArgL), - ArgV2 = mk_fun_var(ArgFun(Arg1, Arg2), ArgL), + ArgV1 = ?mk_fun_var(ArgFun(Arg2, Arg1), ArgL), + ArgV2 = ?mk_fun_var(ArgFun(Arg1, Arg2), ArgL), mk_conj_constraint_list([mk_constraint(Dst, sub, DstV), mk_constraint(Arg1, sub, ArgV1), mk_constraint(Arg2, sub, ArgV2)]); @@ -1531,7 +1534,7 @@ get_bif_constr({erlang, element, 2} = _BIF, Dst, Args, end, erl_bif_types:type(erlang, element, 2, ATs2) end, - ReturnType = mk_fun_var(Fun, Args), + ReturnType = ?mk_fun_var(Fun, Args), ArgTypes = erl_bif_types:arg_types(erlang, element, 2), Cs = mk_constraints(Args, sub, ArgTypes), NewCs = @@ -1553,7 +1556,7 @@ get_bif_constr({M, F, A} = _BIF, Dst, Args, State) -> false -> T end end, - ReturnType = mk_fun_var(fun(Map) -> + ReturnType = ?mk_fun_var(fun(Map) -> TmpArgTypes0 = lookup_type_list(Args, Map), TmpArgTypes = [UnopaqueFun(T) || T<- TmpArgTypes0], erl_bif_types:type(M, F, A, TmpArgTypes) @@ -1608,7 +1611,7 @@ get_bif_test_constr(Dst, Arg, Type, State) -> false -> t_any() end end, - ArgV = mk_fun_var(ArgFun, [Dst]), + ArgV = ?mk_fun_var(ArgFun, [Dst]), DstFun = fun(Map) -> ArgType = lookup_type(Arg, Map), case t_is_none(t_inf(ArgType, Type)) of @@ -1633,7 +1636,7 @@ get_bif_test_constr(Dst, Arg, Type, State) -> end end end, - DstV = mk_fun_var(DstFun, [Arg]), + DstV = ?mk_fun_var(DstFun, [Arg]), mk_conj_constraint_list([mk_constraint(Dst, sub, DstV), mk_constraint(Arg, sub, ArgV)]). @@ -2323,12 +2326,25 @@ mk_constraint(Lhs, Op, Rhs) -> constraint_opnd_is_any(#fun_var{}) -> false; constraint_opnd_is_any(Type) -> t_is_any(Type). +-ifdef(DEBUG). + +-spec mk_fun_var(fun((_) -> erl_types:erl_type()), [erl_types:erl_type()], + integer()) -> #fun_var{}. + +mk_fun_var(Line, Fun, Types) -> + Deps = [t_var_name(Var) || Var <- t_collect_vars(t_product(Types))], + #fun_var{'fun' = Fun, deps = ordsets:from_list(Deps), origin = Line}. + +-else. + -spec mk_fun_var(fun((_) -> erl_types:erl_type()), [erl_types:erl_type()]) -> #fun_var{}. mk_fun_var(Fun, Types) -> Deps = [t_var_name(Var) || Var <- t_collect_vars(t_product(Types))], #fun_var{'fun' = Fun, deps = ordsets:from_list(Deps)}. +-endif. + -spec get_deps(constr()) -> [dep()]. get_deps(#constraint{deps = D}) -> D; @@ -2679,8 +2695,9 @@ find_constraint(Tuple, [_|Cs]) -> -endif. -ifdef(DEBUG). -format_type(#fun_var{deps = Deps}) -> - io_lib:format("Fun(~s)", [lists:flatten([format_type(t_var(X))||X<-Deps])]); +format_type(#fun_var{deps = Deps, origin = Origin}) -> + io_lib:format("Fun@L~p(~s)", + [Origin, lists:flatten([format_type(t_var(X))||X<-Deps])]); format_type(Type) -> case cerl:is_literal(Type) of true -> io_lib:format("~w", [cerl:concrete(Type)]); diff --git a/lib/dialyzer/test/r9c_SUITE_data/results/inets b/lib/dialyzer/test/r9c_SUITE_data/results/inets index 6b16dba2ff..0177dcc88c 100644 --- a/lib/dialyzer/test/r9c_SUITE_data/results/inets +++ b/lib/dialyzer/test/r9c_SUITE_data/results/inets @@ -3,9 +3,14 @@ ftp.erl:1243: The pattern {'ok', {N, Bytes}} can never match the type 'eof' | {' ftp.erl:640: The pattern {'closed', _Why} can never match the type 'perm_fname_not_allowed' | 'perm_neg_compl' | 'perm_no_space' | 'pos_compl' | 'pos_interm' | 'pos_interm_acct' | 'trans_neg_compl' | 'trans_no_space' | {'error' | 'perm_fname_not_allowed' | 'perm_neg_compl' | 'perm_no_space' | 'pos_compl' | 'pos_interm' | 'pos_interm_acct' | 'pos_prel' | 'trans_neg_compl' | 'trans_no_space',atom() | [any()] | {'invalid_server_response',[any(),...]}} http.erl:117: The pattern {'error', Reason} can never match the type #req_headers{connection::[45 | 97 | 101 | 105 | 107 | 108 | 112 | 118,...],content_length::[48,...],other::[{_,_}]} http.erl:138: Function close_session/2 will never be called -http_lib.erl:286: The call http_lib:close('ip_comm' | {'ssl',_},any()) will never return since it differs in the 1st argument from the success typing arguments: ('http' | 'https',any()) -http_lib.erl:424: The variable _ can never match since previous clauses completely covered the type any() -http_lib.erl:438: The variable _ can never match since previous clauses completely covered the type any() +http_lib.erl:286: The call http_lib:close('ip_comm' | {'ssl',_},port() | {'sslsocket',_,_}) will never return since it differs in the 1st argument from the success typing arguments: ('http' | 'https',port() | {'sslsocket',_,pid() | {_,{'config',_,_,_,_,{_,_,_,_}}} | {'sslsocket',_,pid() | {'sslsocket',_,pid() | {_,_,_}}}}) +http_lib.erl:415: The pattern 61 can never match the type 'http_eoh' | binary() | maybe_improper_list(any(),binary() | []) | {'http_error',binary() | string()} | #http_request{method::'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'TRACE' | binary() | string(),path::'*' | binary() | string() | {'abs_path',binary() | string()} | {'scheme',binary() | string(),binary() | string()} | {'absoluteURI','http' | 'https',binary() | string(),'undefined' | non_neg_integer(),binary() | string()},version::{non_neg_integer(),non_neg_integer()}} | #http_response{version::{non_neg_integer(),non_neg_integer()},status::integer(),phrase::binary() | string()} | {'http_header',integer(),atom() | binary() | string(),_,binary() | string()} +http_lib.erl:417: The pattern 59 can never match the type 'http_eoh' | binary() | maybe_improper_list(any(),binary() | []) | {'http_error',binary() | string()} | #http_request{method::'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'TRACE' | binary() | string(),path::'*' | binary() | string() | {'abs_path',binary() | string()} | {'scheme',binary() | string(),binary() | string()} | {'absoluteURI','http' | 'https',binary() | string(),'undefined' | non_neg_integer(),binary() | string()},version::{non_neg_integer(),non_neg_integer()}} | #http_response{version::{non_neg_integer(),non_neg_integer()},status::integer(),phrase::binary() | string()} | {'http_header',integer(),atom() | binary() | string(),_,binary() | string()} +http_lib.erl:420: The pattern 13 can never match the type 'http_eoh' | binary() | maybe_improper_list(any(),binary() | []) | {'http_error',binary() | string()} | #http_request{method::'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'TRACE' | binary() | string(),path::'*' | binary() | string() | {'abs_path',binary() | string()} | {'scheme',binary() | string(),binary() | string()} | {'absoluteURI','http' | 'https',binary() | string(),'undefined' | non_neg_integer(),binary() | string()},version::{non_neg_integer(),non_neg_integer()}} | #http_response{version::{non_neg_integer(),non_neg_integer()},status::integer(),phrase::binary() | string()} | {'http_header',integer(),atom() | binary() | string(),_,binary() | string()} +http_lib.erl:424: The variable _ can never match since previous clauses completely covered the type 'http_eoh' | binary() | maybe_improper_list(any(),binary() | []) | {'http_error',binary() | string()} | #http_request{method::'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'TRACE' | binary() | string(),path::'*' | binary() | string() | {'abs_path',binary() | string()} | {'scheme',binary() | string(),binary() | string()} | {'absoluteURI','http' | 'https',binary() | string(),'undefined' | non_neg_integer(),binary() | string()},version::{non_neg_integer(),non_neg_integer()}} | #http_response{version::{non_neg_integer(),non_neg_integer()},status::integer(),phrase::binary() | string()} | {'http_header',integer(),atom() | binary() | string(),_,binary() | string()} +http_lib.erl:428: Function read_chunk_ext_val/6 will never be called +http_lib.erl:444: The pattern 10 can never match the type 'http_eoh' | binary() | maybe_improper_list(any(),binary() | []) | {'http_error',binary() | string()} | #http_request{method::'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'TRACE' | binary() | string(),path::'*' | binary() | string() | {'abs_path',binary() | string()} | {'scheme',binary() | string(),binary() | string()} | {'absoluteURI','http' | 'https',binary() | string(),'undefined' | non_neg_integer(),binary() | string()},version::{non_neg_integer(),non_neg_integer()}} | #http_response{version::{non_neg_integer(),non_neg_integer()},status::integer(),phrase::binary() | string()} | {'http_header',integer(),atom() | binary() | string(),_,binary() | string()} +http_lib.erl:552: Call to missing or unexported function ssl:accept/2 http_lib.erl:99: Function getHeaderValue/2 will never be called httpc_handler.erl:660: Function exit_session_ok/2 has no local return httpc_manager.erl:145: The pattern {ErrorReply, State2} can never match the type {{'ok',number()},number(),#state{reqid::number()}} @@ -21,11 +26,14 @@ httpd_manager.erl:885: The pattern {'EXIT', Reason} can never match since previo httpd_manager.erl:919: Function auth_status/1 will never be called httpd_manager.erl:926: Function sec_status/1 will never be called httpd_manager.erl:933: Function acceptor_status/1 will never be called -httpd_request_handler.erl:374: The call httpd_response:send_status(Info::#mod{parsed_header::maybe_improper_list()},417,[32 | 66 | 98 | 100 | 103 | 105 | 111 | 116 | 121,...]) will never return since it differs in the 2nd argument from the success typing arguments: (#mod{socket_type::'ip_comm' | {'ssl',_}},100 | 301 | 304 | 400 | 401 | 403 | 404 | 412 | 414 | 416 | 500 | 501 | 503,any()) -httpd_request_handler.erl:378: The call httpd_response:send_status(Info::#mod{parsed_header::maybe_improper_list()},417,[32 | 77 | 97 | 100 | 101 | 104 | 108 | 110 | 111 | 116 | 119,...]) will never return since it differs in the 2nd argument from the success typing arguments: (#mod{socket_type::'ip_comm' | {'ssl',_}},100 | 301 | 304 | 400 | 401 | 403 | 404 | 412 | 414 | 416 | 500 | 501 | 503,any()) -httpd_request_handler.erl:401: The call httpd_response:send_status(Info::#mod{parsed_header::maybe_improper_list()},417,[32 | 77 | 97 | 100 | 101 | 104 | 108 | 110 | 111 | 116 | 119,...]) will never return since it differs in the 2nd argument from the success typing arguments: (#mod{socket_type::'ip_comm' | {'ssl',_}},100 | 301 | 304 | 400 | 401 | 403 | 404 | 412 | 414 | 416 | 500 | 501 | 503,any()) +httpd_request_handler.erl:374: The call httpd_response:send_status(Info::#mod{parsed_header::maybe_improper_list()},417,[32 | 66 | 98 | 100 | 103 | 105 | 111 | 116 | 121,...]) will never return since it differs in the 2nd argument from the success typing arguments: (#mod{socket_type::'ip_comm' | {'ssl',_},socket::port() | {'sslsocket',_,_}},100 | 301 | 304 | 400 | 401 | 403 | 404 | 412 | 414 | 416 | 500 | 501 | 503,any()) +httpd_request_handler.erl:378: The call httpd_response:send_status(Info::#mod{parsed_header::maybe_improper_list()},417,[32 | 77 | 97 | 100 | 101 | 104 | 108 | 110 | 111 | 116 | 119,...]) will never return since it differs in the 2nd argument from the success typing arguments: (#mod{socket_type::'ip_comm' | {'ssl',_},socket::port() | {'sslsocket',_,_}},100 | 301 | 304 | 400 | 401 | 403 | 404 | 412 | 414 | 416 | 500 | 501 | 503,any()) +httpd_request_handler.erl:401: The call httpd_response:send_status(Info::#mod{parsed_header::maybe_improper_list()},417,[32 | 77 | 97 | 100 | 101 | 104 | 108 | 110 | 111 | 116 | 119,...]) will never return since it differs in the 2nd argument from the success typing arguments: (#mod{socket_type::'ip_comm' | {'ssl',_},socket::port() | {'sslsocket',_,_}},100 | 301 | 304 | 400 | 401 | 403 | 404 | 412 | 414 | 416 | 500 | 501 | 503,any()) +httpd_request_handler.erl:489: The variable Other can never match since previous clauses completely covered the type {'error',_} | {'ok','http_eoh' | binary() | maybe_improper_list(any(),binary() | []) | {'http_error',binary() | string()} | {'http_request','DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'TRACE' | binary() | string(),'*' | binary() | string() | {'abs_path',binary() | [any()]} | {'scheme',binary() | [any()],binary() | [any()]} | {'absoluteURI','http' | 'https',binary() | [any()],'undefined' | non_neg_integer(),binary() | [any()]},{non_neg_integer(),non_neg_integer()}} | {'http_response',{non_neg_integer(),non_neg_integer()},integer(),binary() | string()} | {'http_header',integer(),atom() | binary() | string(),_,binary() | string()}} httpd_request_handler.erl:644: The call lists:reverse(Fields0::{'error',_} | {'ok',_}) will never return since it differs in the 1st argument from the success typing arguments: ([any()]) httpd_request_handler.erl:645: Function will never be called +httpd_socket.erl:129: Call to missing or unexported function ssl:accept/2 +httpd_socket.erl:49: The pattern {'ok', _} can never match the type {'error',_} httpd_sup.erl:63: The variable Else can never match since previous clauses completely covered the type {'error',_} | {'ok',[any()],_,_} httpd_sup.erl:88: The pattern {'error', Reason} can never match the type {'ok',_,_} httpd_sup.erl:92: The variable Else can never match since previous clauses completely covered the type {'ok',_,_} diff --git a/lib/dialyzer/test/r9c_SUITE_data/results/mnesia b/lib/dialyzer/test/r9c_SUITE_data/results/mnesia index b0f4d12ae5..2be71ac7d7 100644 --- a/lib/dialyzer/test/r9c_SUITE_data/results/mnesia +++ b/lib/dialyzer/test/r9c_SUITE_data/results/mnesia @@ -6,8 +6,6 @@ mnesia_bup.erl:111: The created fun has no local return mnesia_bup.erl:574: Function fallback_receiver/2 has no local return mnesia_bup.erl:967: Function uninstall_fallback_master/2 has no local return mnesia_checkpoint.erl:1014: The variable Error can never match since previous clauses completely covered the type {'ok',#checkpoint_args{nodes::[any()],retainers::[any(),...]}} -mnesia_checkpoint.erl:1209: Function system_continue/3 has no local return -mnesia_checkpoint.erl:792: Function retainer_loop/1 has no local return mnesia_checkpoint.erl:894: The call sys:handle_system_msg(Msg::any(),From::any(),'no_parent','mnesia_checkpoint',[],Cp::#checkpoint_args{}) breaks the contract (Msg,From,Parent,Module,Debug,Misc) -> Void when is_subtype(Msg,term()), is_subtype(From,{pid(),Tag::_}), is_subtype(Parent,pid()), is_subtype(Module,module()), is_subtype(Debug,[dbg_opt()]), is_subtype(Misc,term()), is_subtype(Void,term()) mnesia_controller.erl:1666: The variable Tab can never match since previous clauses completely covered the type [any()] mnesia_controller.erl:1679: The pattern {'stop', Reason, Reply, State2} can never match the type {'noreply',_} | {'reply',_,_} | {'stop','shutdown',#state{}} diff --git a/lib/dialyzer/test/small_SUITE_data/results/common_eunit b/lib/dialyzer/test/small_SUITE_data/results/common_eunit new file mode 100644 index 0000000000..bb5fd1c9ac --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/results/common_eunit @@ -0,0 +1,2 @@ + +common_eunit.erl:57: The created fun has no local return diff --git a/lib/dialyzer/test/small_SUITE_data/results/comparisons b/lib/dialyzer/test/small_SUITE_data/results/comparisons new file mode 100644 index 0000000000..642585d25e --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/results/comparisons @@ -0,0 +1,153 @@ + +comparisons.erl:100: The pattern 'true' can never match the type 'false' +comparisons.erl:101: The pattern 'true' can never match the type 'false' +comparisons.erl:102: The pattern 'false' can never match the type 'true' +comparisons.erl:103: The pattern 'false' can never match the type 'true' +comparisons.erl:104: The pattern 'true' can never match the type 'false' +comparisons.erl:105: The pattern 'true' can never match the type 'false' +comparisons.erl:107: The pattern 'true' can never match the type 'false' +comparisons.erl:108: The pattern 'true' can never match the type 'false' +comparisons.erl:109: The pattern 'false' can never match the type 'true' +comparisons.erl:110: The pattern 'false' can never match the type 'true' +comparisons.erl:111: The pattern 'true' can never match the type 'false' +comparisons.erl:112: The pattern 'true' can never match the type 'false' +comparisons.erl:113: The pattern 'false' can never match the type 'true' +comparisons.erl:114: The pattern 'false' can never match the type 'true' +comparisons.erl:115: The pattern 'true' can never match the type 'false' +comparisons.erl:116: The pattern 'true' can never match the type 'false' +comparisons.erl:117: The pattern 'false' can never match the type 'true' +comparisons.erl:118: The pattern 'false' can never match the type 'true' +comparisons.erl:123: The pattern 'false' can never match the type 'true' +comparisons.erl:124: The pattern 'false' can never match the type 'true' +comparisons.erl:125: The pattern 'true' can never match the type 'false' +comparisons.erl:126: The pattern 'true' can never match the type 'false' +comparisons.erl:127: The pattern 'false' can never match the type 'true' +comparisons.erl:128: The pattern 'false' can never match the type 'true' +comparisons.erl:129: The pattern 'true' can never match the type 'false' +comparisons.erl:130: The pattern 'true' can never match the type 'false' +comparisons.erl:132: The pattern 'true' can never match the type 'false' +comparisons.erl:133: The pattern 'true' can never match the type 'false' +comparisons.erl:134: The pattern 'false' can never match the type 'true' +comparisons.erl:135: The pattern 'false' can never match the type 'true' +comparisons.erl:136: The pattern 'true' can never match the type 'false' +comparisons.erl:137: The pattern 'true' can never match the type 'false' +comparisons.erl:138: The pattern 'false' can never match the type 'true' +comparisons.erl:139: The pattern 'false' can never match the type 'true' +comparisons.erl:140: The pattern 'true' can never match the type 'false' +comparisons.erl:141: The pattern 'true' can never match the type 'false' +comparisons.erl:142: The pattern 'false' can never match the type 'true' +comparisons.erl:143: The pattern 'false' can never match the type 'true' +comparisons.erl:144: The pattern 'true' can never match the type 'false' +comparisons.erl:145: The pattern 'true' can never match the type 'false' +comparisons.erl:146: The pattern 'false' can never match the type 'true' +comparisons.erl:147: The pattern 'false' can never match the type 'true' +comparisons.erl:152: The pattern 'false' can never match the type 'true' +comparisons.erl:153: The pattern 'false' can never match the type 'true' +comparisons.erl:154: The pattern 'true' can never match the type 'false' +comparisons.erl:155: The pattern 'true' can never match the type 'false' +comparisons.erl:157: The pattern 'true' can never match the type 'false' +comparisons.erl:158: The pattern 'true' can never match the type 'false' +comparisons.erl:159: The pattern 'false' can never match the type 'true' +comparisons.erl:160: The pattern 'false' can never match the type 'true' +comparisons.erl:161: The pattern 'true' can never match the type 'false' +comparisons.erl:162: The pattern 'true' can never match the type 'false' +comparisons.erl:163: The pattern 'false' can never match the type 'true' +comparisons.erl:164: The pattern 'false' can never match the type 'true' +comparisons.erl:165: The pattern 'true' can never match the type 'false' +comparisons.erl:166: The pattern 'true' can never match the type 'false' +comparisons.erl:167: The pattern 'false' can never match the type 'true' +comparisons.erl:168: The pattern 'false' can never match the type 'true' +comparisons.erl:169: The pattern 'true' can never match the type 'false' +comparisons.erl:170: The pattern 'true' can never match the type 'false' +comparisons.erl:171: The pattern 'false' can never match the type 'true' +comparisons.erl:172: The pattern 'false' can never match the type 'true' +comparisons.erl:173: The pattern 'true' can never match the type 'false' +comparisons.erl:174: The pattern 'true' can never match the type 'false' +comparisons.erl:175: The pattern 'false' can never match the type 'true' +comparisons.erl:176: The pattern 'false' can never match the type 'true' +comparisons.erl:186: The pattern 'false' can never match the type 'true' +comparisons.erl:187: The pattern 'false' can never match the type 'true' +comparisons.erl:188: The pattern 'true' can never match the type 'false' +comparisons.erl:189: The pattern 'true' can never match the type 'false' +comparisons.erl:190: The pattern 'false' can never match the type 'true' +comparisons.erl:191: The pattern 'false' can never match the type 'true' +comparisons.erl:192: The pattern 'true' can never match the type 'false' +comparisons.erl:193: The pattern 'true' can never match the type 'false' +comparisons.erl:203: The pattern 'false' can never match the type 'true' +comparisons.erl:204: The pattern 'false' can never match the type 'true' +comparisons.erl:205: The pattern 'true' can never match the type 'false' +comparisons.erl:206: The pattern 'true' can never match the type 'false' +comparisons.erl:208: The pattern 'true' can never match the type 'false' +comparisons.erl:209: The pattern 'true' can never match the type 'false' +comparisons.erl:210: The pattern 'false' can never match the type 'true' +comparisons.erl:211: The pattern 'false' can never match the type 'true' +comparisons.erl:221: The pattern 'true' can never match the type 'false' +comparisons.erl:222: The pattern 'true' can never match the type 'false' +comparisons.erl:223: The pattern 'false' can never match the type 'true' +comparisons.erl:224: The pattern 'false' can never match the type 'true' +comparisons.erl:225: The pattern 'true' can never match the type 'false' +comparisons.erl:226: The pattern 'true' can never match the type 'false' +comparisons.erl:227: The pattern 'false' can never match the type 'true' +comparisons.erl:228: The pattern 'false' can never match the type 'true' +comparisons.erl:242: The pattern 'false' can never match the type 'true' +comparisons.erl:243: The pattern 'false' can never match the type 'true' +comparisons.erl:244: The pattern 'true' can never match the type 'false' +comparisons.erl:245: The pattern 'true' can never match the type 'false' +comparisons.erl:246: The pattern 'false' can never match the type 'true' +comparisons.erl:247: The pattern 'false' can never match the type 'true' +comparisons.erl:248: The pattern 'true' can never match the type 'false' +comparisons.erl:249: The pattern 'true' can never match the type 'false' +comparisons.erl:251: The pattern 'true' can never match the type 'false' +comparisons.erl:252: The pattern 'true' can never match the type 'false' +comparisons.erl:253: The pattern 'false' can never match the type 'true' +comparisons.erl:254: The pattern 'false' can never match the type 'true' +comparisons.erl:263: The pattern 'false' can never match the type 'true' +comparisons.erl:264: The pattern 'false' can never match the type 'true' +comparisons.erl:265: The pattern 'true' can never match the type 'false' +comparisons.erl:266: The pattern 'true' can never match the type 'false' +comparisons.erl:268: The pattern 'true' can never match the type 'false' +comparisons.erl:269: The pattern 'true' can never match the type 'false' +comparisons.erl:270: The pattern 'false' can never match the type 'true' +comparisons.erl:271: The pattern 'false' can never match the type 'true' +comparisons.erl:272: The pattern 'true' can never match the type 'false' +comparisons.erl:273: The pattern 'true' can never match the type 'false' +comparisons.erl:274: The pattern 'false' can never match the type 'true' +comparisons.erl:275: The pattern 'false' can never match the type 'true' +comparisons.erl:293: The pattern 'false' can never match the type 'true' +comparisons.erl:294: The pattern 'false' can never match the type 'true' +comparisons.erl:295: The pattern 'true' can never match the type 'false' +comparisons.erl:296: The pattern 'true' can never match the type 'false' +comparisons.erl:311: The pattern 'true' can never match the type 'false' +comparisons.erl:312: The pattern 'true' can never match the type 'false' +comparisons.erl:313: The pattern 'false' can never match the type 'true' +comparisons.erl:314: The pattern 'false' can never match the type 'true' +comparisons.erl:44: The pattern 'false' can never match the type 'true' +comparisons.erl:45: The pattern 'false' can never match the type 'true' +comparisons.erl:46: The pattern 'true' can never match the type 'false' +comparisons.erl:47: The pattern 'true' can never match the type 'false' +comparisons.erl:48: The pattern 'false' can never match the type 'true' +comparisons.erl:49: The pattern 'false' can never match the type 'true' +comparisons.erl:50: The pattern 'true' can never match the type 'false' +comparisons.erl:51: The pattern 'true' can never match the type 'false' +comparisons.erl:52: The pattern 'false' can never match the type 'true' +comparisons.erl:53: The pattern 'false' can never match the type 'true' +comparisons.erl:54: The pattern 'true' can never match the type 'false' +comparisons.erl:55: The pattern 'true' can never match the type 'false' +comparisons.erl:69: The pattern 'false' can never match the type 'true' +comparisons.erl:70: The pattern 'false' can never match the type 'true' +comparisons.erl:71: The pattern 'true' can never match the type 'false' +comparisons.erl:72: The pattern 'true' can never match the type 'false' +comparisons.erl:73: The pattern 'false' can never match the type 'true' +comparisons.erl:74: The pattern 'false' can never match the type 'true' +comparisons.erl:75: The pattern 'true' can never match the type 'false' +comparisons.erl:76: The pattern 'true' can never match the type 'false' +comparisons.erl:77: The pattern 'false' can never match the type 'true' +comparisons.erl:78: The pattern 'false' can never match the type 'true' +comparisons.erl:79: The pattern 'true' can never match the type 'false' +comparisons.erl:80: The pattern 'true' can never match the type 'false' +comparisons.erl:94: The pattern 'false' can never match the type 'true' +comparisons.erl:95: The pattern 'false' can never match the type 'true' +comparisons.erl:96: The pattern 'true' can never match the type 'false' +comparisons.erl:97: The pattern 'true' can never match the type 'false' +comparisons.erl:98: The pattern 'false' can never match the type 'true' +comparisons.erl:99: The pattern 'false' can never match the type 'true' diff --git a/lib/dialyzer/test/small_SUITE_data/results/failing_funs b/lib/dialyzer/test/small_SUITE_data/results/failing_funs new file mode 100644 index 0000000000..a1fb22cbc6 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/results/failing_funs @@ -0,0 +1,20 @@ + +failing_funs.erl:101: The created fun has no local return +failing_funs.erl:104: The created fun has no local return +failing_funs.erl:127: The created fun has no local return +failing_funs.erl:135: The created fun has no local return +failing_funs.erl:138: The created fun has no local return +failing_funs.erl:13: Function foo3/0 has no local return +failing_funs.erl:13: The pattern 'b' can never match the type 'a' +failing_funs.erl:161: The created fun has no local return +failing_funs.erl:169: The created fun has no local return +failing_funs.erl:172: The created fun has no local return +failing_funs.erl:17: The pattern 'b' can never match the type 'a' +failing_funs.erl:195: The created fun has no local return +failing_funs.erl:203: The created fun has no local return +failing_funs.erl:206: The created fun has no local return +failing_funs.erl:229: The created fun has no local return +failing_funs.erl:55: The created fun has no local return +failing_funs.erl:62: The created fun has no local return +failing_funs.erl:69: The created fun has no local return +failing_funs.erl:76: The created fun has no local return diff --git a/lib/dialyzer/test/small_SUITE_data/src/common_eunit.erl b/lib/dialyzer/test/small_SUITE_data/src/common_eunit.erl new file mode 100644 index 0000000000..bca390068e --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/common_eunit.erl @@ -0,0 +1,121 @@ +%%===================================================================== +%% Program with an erroneous type declaration that caused dialyzer to +%% go into an infinite loop. There are some comments that explain the +%% symptoms and the culprit: the return of test_fun() is erroneous and +%% its type should read +%% fun((config()) -> test_rep() | [test_rep()]) +%% instead. But this should not throw dialyzer into an infinite loop. +%% This concerned dialyzer in R14B02 (and probably prior). +%%===================================================================== +-module(common_eunit). + +-export([expand_cases/2]). + +-type test_name() :: atom() | {'group', atom()}. + +-type test_rep() :: {{atom(), atom(), arity()}, fun()} + | {'setup', fun(), fun()} + | {'setup', fun(), fun(), fun()} + | {atom(), test_rep()} + | {atom(), term(), test_rep()}. + +-type config() :: [proplists:property()]. + +-type control() :: tuple() | atom(). + +%% The combination of the following type and the (erroneous) spec for +%% expand_cases/2 is the reason for the infinite loop in dialyzer. +-type test_fun() :: fun((config()) -> test_rep()). + +%% If one comments out this spec the infinite loop disappears. +-spec expand_cases(atom(), test_name() | [test_name()]) -> test_fun(). +expand_cases(Module, Cases) -> + if is_list(Cases) -> + TestFuns = [expand_case(Module, Case) || Case <- Cases], + fun(Config) -> [F(Config) || F <- TestFuns] end; + is_atom(Cases); is_tuple(Cases) -> + expand_cases(Module, [Cases]) + end. + +-spec expand_case(atom(), test_name()) -> test_fun(). +expand_case(Module, CaseName) when is_atom(CaseName) -> + TestFun = fun(Config) -> + {{Module, CaseName, 1}, + fun() -> apply(Module, CaseName, [Config]) end} + end, + setup_wrapper(Module, TestFun, {init_per_testcase, [CaseName]}, + {end_per_testcase, [CaseName]}); +expand_case(Module, {group, GroupName}) -> + {Control, Cases} = group_specification(Module, GroupName), + TestFun = control_wrapper(Control, expand_cases(Module, Cases)), + setup_wrapper(Module, TestFun, {init_per_group, [GroupName]}, + {end_per_group, [GroupName]}). + +-spec control_wrapper([control()], test_fun()) -> test_fun(). +control_wrapper([Control|T], TestFun0) -> + TestFun1 = control_wrapper(T, TestFun0), + fun(Config) -> + case Control of + parallel -> + {inparallel, TestFun1(Config)}; + sequence -> + {inorder, TestFun1(Config)}; + {timetrap, Time} -> + Seconds = case Time of + {hours, Hs} -> Hs * 60 * 60; + {minutes, Ms} -> Ms * 60; + {seconds, Ss} -> Ss; + MSs -> MSs / 1000 + end, + {timeout, Seconds, TestFun1(Config)}; + C when is_atom(C) -> + {C, TestFun1(Config)}; + {C, Arg} -> + {C, Arg, TestFun1(Config)} + end + end; +control_wrapper([], TestFun) -> + TestFun. + +-spec setup_wrapper(atom(), test_fun(), Callback, Callback) -> test_fun() + when Callback :: {atom(), list()}. +setup_wrapper(Module, TestFun, {Setup, SA}, {Cleanup, CA}) -> + case erlang:function_exported(Module, Setup, length(SA) + 1) of + true -> + case erlang:function_exported(Module, Cleanup, length(CA) + 1) of + true -> + fun(Config0) -> + {setup, + fun() -> + apply(Module, Setup, SA ++ [Config0]) + end, + fun(Config1) -> + apply(Module, Cleanup, CA ++ [Config1]) + end, + TestFun} + end; + false -> + fun(Config) -> + {setup, + fun() -> + apply(Module, Setup, SA ++ [Config]) + end, + TestFun} + end + end; + false -> + TestFun + end. + +-spec group_specification(atom(), atom()) -> {[control()], [test_name()]}. +group_specification(Module, GroupName) -> + case lists:keyfind(GroupName, 1, Module:groups()) of + {_, Control, Cases} when is_list(Control), is_list(Cases) -> + {Control, Cases}; + {_, Cases} when is_list(Cases) -> + {[], Cases}; + false -> + exit({missing_group, GroupName}); + _ -> + exit({bad_group_spec, GroupName}) + end. diff --git a/lib/dialyzer/test/small_SUITE_data/src/comparisons.erl b/lib/dialyzer/test/small_SUITE_data/src/comparisons.erl new file mode 100644 index 0000000000..70e3cb6af4 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/comparisons.erl @@ -0,0 +1,322 @@ +-module(comparisons). + +-compile(export_all). + +-define(r, get(r)). + +integer() -> integer(?r). +integer(X) when is_integer(X) -> X. + +mfloat() -> float(?r). +mfloat(X) when is_float(X) -> X. + +atom() -> atom(?r). +atom(X) when is_atom(X) -> X. + +tuple() -> tuple(?r). +tuple(X) when is_tuple(X) -> X. + +list() -> list(?r). +list(X) when is_list(X) -> X. + +i() -> integer(). +f() -> mfloat(). +n() -> case ?r of 1 -> i(); 2 -> f() end. +a() -> atom(). +t() -> tuple(). +l() -> list(). +na() -> case ?r of 1 -> n(); 2 -> a() end. +at() -> case ?r of 1 -> t(); 2 -> a() end. +tl() -> case ?r of 1 -> t(); 2 -> l() end. + +test_i_ll_i() -> case i() < i() of true -> maybe; false -> maybe_too end. +test_i_le_i() -> case i() =< i() of true -> maybe; false -> maybe_too end. +test_i_gg_i() -> case i() > i() of true -> maybe; false -> maybe_too end. +test_i_ge_i() -> case i() >= i() of true -> maybe; false -> maybe_too end. +test_i_ll_f() -> case i() < f() of true -> maybe; false -> maybe_too end. +test_i_le_f() -> case i() =< f() of true -> maybe; false -> maybe_too end. +test_i_gg_f() -> case i() > f() of true -> maybe; false -> maybe_too end. +test_i_ge_f() -> case i() >= f() of true -> maybe; false -> maybe_too end. +test_i_ll_n() -> case i() < n() of true -> maybe; false -> maybe_too end. +test_i_le_n() -> case i() =< n() of true -> maybe; false -> maybe_too end. +test_i_gg_n() -> case i() > n() of true -> maybe; false -> maybe_too end. +test_i_ge_n() -> case i() >= n() of true -> maybe; false -> maybe_too end. +test_i_ll_a() -> case i() < a() of true -> always; false -> never end. +test_i_le_a() -> case i() =< a() of true -> always; false -> never end. +test_i_gg_a() -> case i() > a() of true -> never; false -> always end. +test_i_ge_a() -> case i() >= a() of true -> never; false -> always end. +test_i_ll_t() -> case i() < t() of true -> always; false -> never end. +test_i_le_t() -> case i() =< t() of true -> always; false -> never end. +test_i_gg_t() -> case i() > t() of true -> never; false -> always end. +test_i_ge_t() -> case i() >= t() of true -> never; false -> always end. +test_i_ll_l() -> case i() < l() of true -> always; false -> never end. +test_i_le_l() -> case i() =< l() of true -> always; false -> never end. +test_i_gg_l() -> case i() > l() of true -> never; false -> always end. +test_i_ge_l() -> case i() >= l() of true -> never; false -> always end. + +test_f_ll_i() -> case f() < i() of true -> maybe; false -> maybe_too end. +test_f_le_i() -> case f() =< i() of true -> maybe; false -> maybe_too end. +test_f_gg_i() -> case f() > i() of true -> maybe; false -> maybe_too end. +test_f_ge_i() -> case f() >= i() of true -> maybe; false -> maybe_too end. +test_f_ll_f() -> case f() < f() of true -> maybe; false -> maybe_too end. +test_f_le_f() -> case f() =< f() of true -> maybe; false -> maybe_too end. +test_f_gg_f() -> case f() > f() of true -> maybe; false -> maybe_too end. +test_f_ge_f() -> case f() >= f() of true -> maybe; false -> maybe_too end. +test_f_ll_n() -> case f() < n() of true -> maybe; false -> maybe_too end. +test_f_le_n() -> case f() =< n() of true -> maybe; false -> maybe_too end. +test_f_gg_n() -> case f() > n() of true -> maybe; false -> maybe_too end. +test_f_ge_n() -> case f() >= n() of true -> maybe; false -> maybe_too end. +test_f_ll_a() -> case f() < a() of true -> always; false -> never end. +test_f_le_a() -> case f() =< a() of true -> always; false -> never end. +test_f_gg_a() -> case f() > a() of true -> never; false -> always end. +test_f_ge_a() -> case f() >= a() of true -> never; false -> always end. +test_f_ll_t() -> case f() < t() of true -> always; false -> never end. +test_f_le_t() -> case f() =< t() of true -> always; false -> never end. +test_f_gg_t() -> case f() > t() of true -> never; false -> always end. +test_f_ge_t() -> case f() >= t() of true -> never; false -> always end. +test_f_ll_l() -> case f() < l() of true -> always; false -> never end. +test_f_le_l() -> case f() =< l() of true -> always; false -> never end. +test_f_gg_l() -> case f() > l() of true -> never; false -> always end. +test_f_ge_l() -> case f() >= l() of true -> never; false -> always end. + +test_n_ll_i() -> case n() < i() of true -> maybe; false -> maybe_too end. +test_n_le_i() -> case n() =< i() of true -> maybe; false -> maybe_too end. +test_n_gg_i() -> case n() > i() of true -> maybe; false -> maybe_too end. +test_n_ge_i() -> case n() >= i() of true -> maybe; false -> maybe_too end. +test_n_ll_f() -> case n() < f() of true -> maybe; false -> maybe_too end. +test_n_le_f() -> case n() =< f() of true -> maybe; false -> maybe_too end. +test_n_gg_f() -> case n() > f() of true -> maybe; false -> maybe_too end. +test_n_ge_f() -> case n() >= f() of true -> maybe; false -> maybe_too end. +test_n_ll_n() -> case n() < n() of true -> maybe; false -> maybe_too end. +test_n_le_n() -> case n() =< n() of true -> maybe; false -> maybe_too end. +test_n_gg_n() -> case n() > n() of true -> maybe; false -> maybe_too end. +test_n_ge_n() -> case n() >= n() of true -> maybe; false -> maybe_too end. +test_n_ll_a() -> case n() < a() of true -> always; false -> never end. +test_n_le_a() -> case n() =< a() of true -> always; false -> never end. +test_n_gg_a() -> case n() > a() of true -> never; false -> always end. +test_n_ge_a() -> case n() >= a() of true -> never; false -> always end. +test_n_ll_t() -> case n() < t() of true -> always; false -> never end. +test_n_le_t() -> case n() =< t() of true -> always; false -> never end. +test_n_gg_t() -> case n() > t() of true -> never; false -> always end. +test_n_ge_t() -> case n() >= t() of true -> never; false -> always end. +test_n_ll_l() -> case n() < l() of true -> always; false -> never end. +test_n_le_l() -> case n() =< l() of true -> always; false -> never end. +test_n_gg_l() -> case n() > l() of true -> never; false -> always end. +test_n_ge_l() -> case n() >= l() of true -> never; false -> always end. + +test_a_ll_i() -> case a() < i() of true -> never; false -> always end. +test_a_le_i() -> case a() =< i() of true -> never; false -> always end. +test_a_gg_i() -> case a() > i() of true -> always; false -> never end. +test_a_ge_i() -> case a() >= i() of true -> always; false -> never end. +test_a_ll_f() -> case a() < f() of true -> never; false -> always end. +test_a_le_f() -> case a() =< f() of true -> never; false -> always end. +test_a_gg_f() -> case a() > f() of true -> always; false -> never end. +test_a_ge_f() -> case a() >= f() of true -> always; false -> never end. +test_a_ll_n() -> case a() < n() of true -> never; false -> always end. +test_a_le_n() -> case a() =< n() of true -> never; false -> always end. +test_a_gg_n() -> case a() > n() of true -> always; false -> never end. +test_a_ge_n() -> case a() >= n() of true -> always; false -> never end. +test_a_ll_a() -> case a() < a() of true -> maybe; false -> maybe_too end. +test_a_le_a() -> case a() =< a() of true -> maybe; false -> maybe_too end. +test_a_gg_a() -> case a() > a() of true -> maybe; false -> maybe_too end. +test_a_ge_a() -> case a() >= a() of true -> maybe; false -> maybe_too end. +test_a_ll_t() -> case a() < t() of true -> always; false -> never end. +test_a_le_t() -> case a() =< t() of true -> always; false -> never end. +test_a_gg_t() -> case a() > t() of true -> never; false -> always end. +test_a_ge_t() -> case a() >= t() of true -> never; false -> always end. +test_a_ll_l() -> case a() < l() of true -> always; false -> never end. +test_a_le_l() -> case a() =< l() of true -> always; false -> never end. +test_a_gg_l() -> case a() > l() of true -> never; false -> always end. +test_a_ge_l() -> case a() >= l() of true -> never; false -> always end. + +test_t_ll_i() -> case t() < i() of true -> never; false -> always end. +test_t_le_i() -> case t() =< i() of true -> never; false -> always end. +test_t_gg_i() -> case t() > i() of true -> always; false -> never end. +test_t_ge_i() -> case t() >= i() of true -> always; false -> never end. +test_t_ll_f() -> case t() < f() of true -> never; false -> always end. +test_t_le_f() -> case t() =< f() of true -> never; false -> always end. +test_t_gg_f() -> case t() > f() of true -> always; false -> never end. +test_t_ge_f() -> case t() >= f() of true -> always; false -> never end. +test_t_ll_n() -> case t() < n() of true -> never; false -> always end. +test_t_le_n() -> case t() =< n() of true -> never; false -> always end. +test_t_gg_n() -> case t() > n() of true -> always; false -> never end. +test_t_ge_n() -> case t() >= n() of true -> always; false -> never end. +test_t_ll_a() -> case t() < a() of true -> never; false -> always end. +test_t_le_a() -> case t() =< a() of true -> never; false -> always end. +test_t_gg_a() -> case t() > a() of true -> always; false -> never end. +test_t_ge_a() -> case t() >= a() of true -> always; false -> never end. +test_t_ll_t() -> case t() < t() of true -> maybe; false -> maybe_too end. +test_t_le_t() -> case t() =< t() of true -> maybe; false -> maybe_too end. +test_t_gg_t() -> case t() > t() of true -> maybe; false -> maybe_too end. +test_t_ge_t() -> case t() >= t() of true -> maybe; false -> maybe_too end. +test_t_ll_l() -> case t() < l() of true -> always; false -> never end. +test_t_le_l() -> case t() =< l() of true -> always; false -> never end. +test_t_gg_l() -> case t() > l() of true -> never; false -> always end. +test_t_ge_l() -> case t() >= l() of true -> never; false -> always end. + +test_l_ll_i() -> case l() < i() of true -> never; false -> always end. +test_l_le_i() -> case l() =< i() of true -> never; false -> always end. +test_l_gg_i() -> case l() > i() of true -> always; false -> never end. +test_l_ge_i() -> case l() >= i() of true -> always; false -> never end. +test_l_ll_f() -> case l() < f() of true -> never; false -> always end. +test_l_le_f() -> case l() =< f() of true -> never; false -> always end. +test_l_gg_f() -> case l() > f() of true -> always; false -> never end. +test_l_ge_f() -> case l() >= f() of true -> always; false -> never end. +test_l_ll_n() -> case l() < n() of true -> never; false -> always end. +test_l_le_n() -> case l() =< n() of true -> never; false -> always end. +test_l_gg_n() -> case l() > n() of true -> always; false -> never end. +test_l_ge_n() -> case l() >= n() of true -> always; false -> never end. +test_l_ll_a() -> case l() < a() of true -> never; false -> always end. +test_l_le_a() -> case l() =< a() of true -> never; false -> always end. +test_l_gg_a() -> case l() > a() of true -> always; false -> never end. +test_l_ge_a() -> case l() >= a() of true -> always; false -> never end. +test_l_ll_t() -> case l() < t() of true -> never; false -> always end. +test_l_le_t() -> case l() =< t() of true -> never; false -> always end. +test_l_gg_t() -> case l() > t() of true -> always; false -> never end. +test_l_ge_t() -> case l() >= t() of true -> always; false -> never end. +test_l_ll_l() -> case l() < l() of true -> maybe; false -> maybe_too end. +test_l_le_l() -> case l() =< l() of true -> maybe; false -> maybe_too end. +test_l_gg_l() -> case l() > l() of true -> maybe; false -> maybe_too end. +test_l_ge_l() -> case l() >= l() of true -> maybe; false -> maybe_too end. + +test_n_ll_na() -> case n() < na() of true -> maybe; false -> maybe_too end. +test_n_le_na() -> case n() =< na() of true -> maybe; false -> maybe_too end. +test_n_gg_na() -> case n() > na() of true -> maybe; false -> maybe_too end. +test_n_ge_na() -> case n() >= na() of true -> maybe; false -> maybe_too end. +test_n_ll_at() -> case n() < at() of true -> always; false -> never end. +test_n_le_at() -> case n() =< at() of true -> always; false -> never end. +test_n_gg_at() -> case n() > at() of true -> never; false -> always end. +test_n_ge_at() -> case n() >= at() of true -> never; false -> always end. +test_n_ll_tl() -> case n() < tl() of true -> always; false -> never end. +test_n_le_tl() -> case n() =< tl() of true -> always; false -> never end. +test_n_gg_tl() -> case n() > tl() of true -> never; false -> always end. +test_n_ge_tl() -> case n() >= tl() of true -> never; false -> always end. + +test_a_ll_na() -> case a() < na() of true -> maybe; false -> maybe_too end. +test_a_le_na() -> case a() =< na() of true -> maybe; false -> maybe_too end. +test_a_gg_na() -> case a() > na() of true -> maybe; false -> maybe_too end. +test_a_ge_na() -> case a() >= na() of true -> maybe; false -> maybe_too end. +test_a_ll_at() -> case a() < at() of true -> maybe; false -> maybe_too end. +test_a_le_at() -> case a() =< at() of true -> maybe; false -> maybe_too end. +test_a_gg_at() -> case a() > at() of true -> maybe; false -> maybe_too end. +test_a_ge_at() -> case a() >= at() of true -> maybe; false -> maybe_too end. +test_a_ll_tl() -> case a() < tl() of true -> always; false -> never end. +test_a_le_tl() -> case a() =< tl() of true -> always; false -> never end. +test_a_gg_tl() -> case a() > tl() of true -> never; false -> always end. +test_a_ge_tl() -> case a() >= tl() of true -> never; false -> always end. + +test_t_ll_na() -> case t() < na() of true -> never; false -> always end. +test_t_le_na() -> case t() =< na() of true -> never; false -> always end. +test_t_gg_na() -> case t() > na() of true -> always; false -> never end. +test_t_ge_na() -> case t() >= na() of true -> always; false -> never end. +test_t_ll_at() -> case t() < at() of true -> maybe; false -> maybe_too end. +test_t_le_at() -> case t() =< at() of true -> maybe; false -> maybe_too end. +test_t_gg_at() -> case t() > at() of true -> maybe; false -> maybe_too end. +test_t_ge_at() -> case t() >= at() of true -> maybe; false -> maybe_too end. +test_t_ll_tl() -> case t() < tl() of true -> maybe; false -> maybe_too end. +test_t_le_tl() -> case t() =< tl() of true -> maybe; false -> maybe_too end. +test_t_gg_tl() -> case t() > tl() of true -> maybe; false -> maybe_too end. +test_t_ge_tl() -> case t() >= tl() of true -> maybe; false -> maybe_too end. + +test_l_ll_na() -> case l() < na() of true -> never; false -> always end. +test_l_le_na() -> case l() =< na() of true -> never; false -> always end. +test_l_gg_na() -> case l() > na() of true -> always; false -> never end. +test_l_ge_na() -> case l() >= na() of true -> always; false -> never end. +test_l_ll_at() -> case l() < at() of true -> never; false -> always end. +test_l_le_at() -> case l() =< at() of true -> never; false -> always end. +test_l_gg_at() -> case l() > at() of true -> always; false -> never end. +test_l_ge_at() -> case l() >= at() of true -> always; false -> never end. +test_l_ll_tl() -> case l() < tl() of true -> maybe; false -> maybe_too end. +test_l_le_tl() -> case l() =< tl() of true -> maybe; false -> maybe_too end. +test_l_gg_tl() -> case l() > tl() of true -> maybe; false -> maybe_too end. +test_l_ge_tl() -> case l() >= tl() of true -> maybe; false -> maybe_too end. + +test_na_ll_n() -> case na() < n() of true -> maybe; false -> maybe_too end. +test_na_le_n() -> case na() =< n() of true -> maybe; false -> maybe_too end. +test_na_gg_n() -> case na() > n() of true -> maybe; false -> maybe_too end. +test_na_ge_n() -> case na() >= n() of true -> maybe; false -> maybe_too end. +test_na_ll_a() -> case na() < a() of true -> maybe; false -> maybe_too end. +test_na_le_a() -> case na() =< a() of true -> maybe; false -> maybe_too end. +test_na_gg_a() -> case na() > a() of true -> maybe; false -> maybe_too end. +test_na_ge_a() -> case na() >= a() of true -> maybe; false -> maybe_too end. +test_na_ll_t() -> case na() < t() of true -> always; false -> never end. +test_na_le_t() -> case na() =< t() of true -> always; false -> never end. +test_na_gg_t() -> case na() > t() of true -> never; false -> always end. +test_na_ge_t() -> case na() >= t() of true -> never; false -> always end. +test_na_ll_l() -> case na() < l() of true -> always; false -> never end. +test_na_le_l() -> case na() =< l() of true -> always; false -> never end. +test_na_gg_l() -> case na() > l() of true -> never; false -> always end. +test_na_ge_l() -> case na() >= l() of true -> never; false -> always end. + +test_at_ll_n() -> case at() < n() of true -> never; false -> always end. +test_at_le_n() -> case at() =< n() of true -> never; false -> always end. +test_at_gg_n() -> case at() > n() of true -> always; false -> never end. +test_at_ge_n() -> case at() >= n() of true -> always; false -> never end. +test_at_ll_a() -> case at() < a() of true -> maybe; false -> maybe_too end. +test_at_le_a() -> case at() =< a() of true -> maybe; false -> maybe_too end. +test_at_gg_a() -> case at() > a() of true -> maybe; false -> maybe_too end. +test_at_ge_a() -> case at() >= a() of true -> maybe; false -> maybe_too end. +test_at_ll_t() -> case at() < t() of true -> maybe; false -> maybe_too end. +test_at_le_t() -> case at() =< t() of true -> maybe; false -> maybe_too end. +test_at_gg_t() -> case at() > t() of true -> maybe; false -> maybe_too end. +test_at_ge_t() -> case at() >= t() of true -> maybe; false -> maybe_too end. +test_at_ll_l() -> case at() < l() of true -> always; false -> never end. +test_at_le_l() -> case at() =< l() of true -> always; false -> never end. +test_at_gg_l() -> case at() > l() of true -> never; false -> always end. +test_at_ge_l() -> case at() >= l() of true -> never; false -> always end. + +test_tl_ll_n() -> case tl() < n() of true -> never; false -> always end. +test_tl_le_n() -> case tl() =< n() of true -> never; false -> always end. +test_tl_gg_n() -> case tl() > n() of true -> always; false -> never end. +test_tl_ge_n() -> case tl() >= n() of true -> always; false -> never end. +test_tl_ll_a() -> case tl() < a() of true -> never; false -> always end. +test_tl_le_a() -> case tl() =< a() of true -> never; false -> always end. +test_tl_gg_a() -> case tl() > a() of true -> always; false -> never end. +test_tl_ge_a() -> case tl() >= a() of true -> always; false -> never end. +test_tl_ll_t() -> case tl() < t() of true -> maybe; false -> maybe_too end. +test_tl_le_t() -> case tl() =< t() of true -> maybe; false -> maybe_too end. +test_tl_gg_t() -> case tl() > t() of true -> maybe; false -> maybe_too end. +test_tl_ge_t() -> case tl() >= t() of true -> maybe; false -> maybe_too end. +test_tl_ll_l() -> case tl() < l() of true -> maybe; false -> maybe_too end. +test_tl_le_l() -> case tl() =< l() of true -> maybe; false -> maybe_too end. +test_tl_gg_l() -> case tl() > l() of true -> maybe; false -> maybe_too end. +test_tl_ge_l() -> case tl() >= l() of true -> maybe; false -> maybe_too end. + +test_na_ll_na() -> case na() < na() of true -> maybe; false -> maybe_too end. +test_na_le_na() -> case na() =< na() of true -> maybe; false -> maybe_too end. +test_na_gg_na() -> case na() > na() of true -> maybe; false -> maybe_too end. +test_na_ge_na() -> case na() >= na() of true -> maybe; false -> maybe_too end. +test_na_ll_at() -> case na() < at() of true -> maybe; false -> maybe_too end. +test_na_le_at() -> case na() =< at() of true -> maybe; false -> maybe_too end. +test_na_gg_at() -> case na() > at() of true -> maybe; false -> maybe_too end. +test_na_ge_at() -> case na() >= at() of true -> maybe; false -> maybe_too end. +test_na_ll_tl() -> case na() < tl() of true -> always; false -> never end. +test_na_le_tl() -> case na() =< tl() of true -> always; false -> never end. +test_na_gg_tl() -> case na() > tl() of true -> never; false -> always end. +test_na_ge_tl() -> case na() >= tl() of true -> never; false -> always end. + +test_at_ll_na() -> case at() < na() of true -> maybe; false -> maybe_too end. +test_at_le_na() -> case at() =< na() of true -> maybe; false -> maybe_too end. +test_at_gg_na() -> case at() > na() of true -> maybe; false -> maybe_too end. +test_at_ge_na() -> case at() >= na() of true -> maybe; false -> maybe_too end. +test_at_ll_at() -> case at() < at() of true -> maybe; false -> maybe_too end. +test_at_le_at() -> case at() =< at() of true -> maybe; false -> maybe_too end. +test_at_gg_at() -> case at() > at() of true -> maybe; false -> maybe_too end. +test_at_ge_at() -> case at() >= at() of true -> maybe; false -> maybe_too end. +test_at_ll_tl() -> case at() < tl() of true -> maybe; false -> maybe_too end. +test_at_le_tl() -> case at() =< tl() of true -> maybe; false -> maybe_too end. +test_at_gg_tl() -> case at() > tl() of true -> maybe; false -> maybe_too end. +test_at_ge_tl() -> case at() >= tl() of true -> maybe; false -> maybe_too end. + +test_tl_ll_na() -> case tl() < na() of true -> never; false -> always end. +test_tl_le_na() -> case tl() =< na() of true -> never; false -> always end. +test_tl_gg_na() -> case tl() > na() of true -> always; false -> never end. +test_tl_ge_na() -> case tl() >= na() of true -> always; false -> never end. +test_tl_ll_at() -> case tl() < at() of true -> maybe; false -> maybe_too end. +test_tl_le_at() -> case tl() =< at() of true -> maybe; false -> maybe_too end. +test_tl_gg_at() -> case tl() > at() of true -> maybe; false -> maybe_too end. +test_tl_ge_at() -> case tl() >= at() of true -> maybe; false -> maybe_too end. +test_tl_ll_tl() -> case tl() < tl() of true -> maybe; false -> maybe_too end. +test_tl_le_tl() -> case tl() =< tl() of true -> maybe; false -> maybe_too end. +test_tl_gg_tl() -> case tl() > tl() of true -> maybe; false -> maybe_too end. +test_tl_ge_tl() -> case tl() >= tl() of true -> maybe; false -> maybe_too end. diff --git a/lib/dialyzer/test/small_SUITE_data/src/failing_funs.erl b/lib/dialyzer/test/small_SUITE_data/src/failing_funs.erl new file mode 100644 index 0000000000..1784c4a494 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/failing_funs.erl @@ -0,0 +1,250 @@ +-module(failing_funs). + +-compile(export_all). + +% Crashes with system call. No spec. +foo1() -> halt(). + +% Crashes with system call. With spec. +-spec foo2() -> no_return(). +foo2() -> halt(). + +% Crashes on its own. No spec. +foo3() -> case a of b -> ok end. + +% Crashes on its own. With spec. +-spec foo4() -> no_return(). +foo4() -> case a of b -> ok end. + +% Creates fun that crashes with system call. No spec. +foo5() -> fun() -> halt() end. + +% Creates fun that crashes with system call. With spec. +-spec foo6() -> fun(() -> no_return()). +foo6() -> fun() -> halt() end. + +% Creates fun from named fun that will crash. Neither have spec. +foo7() -> fun foo1/0. + +% Creates fun from named fun that will crash. Has spec. +-spec foo8() -> fun(() -> no_return()). +foo8() -> fun foo1/0. + +% Creates fun from named fun that will crash. Named has spec. +foo9() -> fun foo2/0. + +% Creates fun from named fun that will crash. Both have specs. +-spec foo10() -> fun(() -> no_return()). +foo10() -> fun foo2/0. + +% Creates fun from named fun that will crash. Neither have spec. +foo11() -> fun foo3/0. + +% Creates fun from named fun that will crash. Has spec. +-spec foo12() -> fun(() -> no_return()). +foo12() -> fun foo3/0. + +% Creates fun from named fun that will crash. Named has spec. +foo13() -> fun foo4/0. + +% Creates fun from named fun that will crash. Both have specs. +-spec foo14() -> fun(() -> no_return()). +foo14() -> fun foo4/0. + +% Creates fun calling a named fun that will crash. Neither have spec. +foo15() -> fun() -> foo1() end. + +% Creates fun calling a named fun that will crash. Has spec. +-spec foo16() -> fun(() -> no_return()). +foo16() -> fun() -> foo1() end. + +% Creates fun calling a named fun that will crash. Named has spec. +foo17() -> fun() -> foo2() end. + +% Creates fun calling a named fun that will crash. Both have specs. +-spec foo18() -> fun(() -> no_return()). +foo18() -> fun() -> foo2() end. + +% Creates fun calling a named fun that will crash. Neither have spec. +foo19() -> fun() -> foo3() end. + +% Creates fun calling a named fun that will crash. Has spec. +-spec foo20() -> fun(() -> no_return()). +foo20() -> fun() -> foo3() end. + +% Creates fun calling a named fun that will crash. Named has spec. +foo21() -> fun() -> foo4() end. + +% Creates fun calling a named fun that will crash. Both have specs. +-spec foo22() -> fun(() -> no_return()). +foo22() -> fun() -> foo4() end. + +% Creates two funs with no local return and will return one or die. No spec. +foo23() -> + Bomb = fun() -> halt() end, + case get(42) of + a -> Bomb(); + b -> fun() -> halt() end + end. + +% Creates two funs with no local return and will return one or die. With spec. +-spec foo24() -> fun(() -> no_return()). +foo24() -> + Bomb = fun() -> halt() end, + case get(42) of + a -> Bomb(); + b -> fun() -> halt() end + end. + +% Creates two funs with no local return and will return one or die. No spec. +foo25() -> + Bomb = fun() -> foo1() end, + case get(42) of + a -> Bomb(); + b -> fun() -> foo1() end + end. + +% Creates two funs with no local return and will return one or die. With spec. +-spec foo26() -> fun(() -> no_return()). +foo26() -> + Bomb = fun foo1/0, + case get(42) of + a -> Bomb(); + b -> fun foo1/0 + end. + +% Creates two funs with no local return and will return one or die. No spec. +foo27() -> + Bomb = fun foo1/0, + case get(42) of + a -> Bomb(); + b -> fun foo1/0 + end. + +% Creates two funs with no local return and will return one or die. With spec. +-spec foo28() -> fun(() -> no_return()). +foo28() -> + Bomb = fun() -> foo1() end, + case get(42) of + a -> Bomb(); + b -> fun() -> foo1() end + end. + +% Creates two funs with no local return and will return one or die. No spec. +foo29() -> + Bomb = fun() -> foo2() end, + case get(42) of + a -> Bomb(); + b -> fun() -> foo2() end + end. + +% Creates two funs with no local return and will return one or die. With spec. +-spec foo30() -> fun(() -> no_return()). +foo30() -> + Bomb = fun foo2/0, + case get(42) of + a -> Bomb(); + b -> fun foo2/0 + end. + +% Creates two funs with no local return and will return one or die. No spec. +foo31() -> + Bomb = fun foo2/0, + case get(42) of + a -> Bomb(); + b -> fun foo2/0 + end. + +% Creates two funs with no local return and will return one or die. With spec. +-spec foo32() -> fun(() -> no_return()). +foo32() -> + Bomb = fun() -> foo2() end, + case get(42) of + a -> Bomb(); + b -> fun() -> foo2() end + end. + +% Creates two funs with no local return and will return one or die. No spec. +foo33() -> + Bomb = fun() -> foo3() end, + case get(42) of + a -> Bomb(); + b -> fun() -> foo3() end + end. + +% Creates two funs with no local return and will return one or die. With spec. +-spec foo34() -> fun(() -> no_return()). +foo34() -> + Bomb = fun foo3/0, + case get(42) of + a -> Bomb(); + b -> fun foo3/0 + end. + +% Creates two funs with no local return and will return one or die. No spec. +foo35() -> + Bomb = fun foo3/0, + case get(42) of + a -> Bomb(); + b -> fun foo3/0 + end. + +% Creates two funs with no local return and will return one or die. With spec. +-spec foo36() -> fun(() -> no_return()). +foo36() -> + Bomb = fun() -> foo3() end, + case get(42) of + a -> Bomb(); + b -> fun() -> foo3() end + end. + +% Creates two funs with no local return and will return one or die. No spec. +foo37() -> + Bomb = fun() -> foo4() end, + case get(42) of + a -> Bomb(); + b -> fun() -> foo4() end + end. + +% Creates two funs with no local return and will return one or die. With spec. +-spec foo38() -> fun(() -> no_return()). +foo38() -> + Bomb = fun foo4/0, + case get(42) of + a -> Bomb(); + b -> fun foo4/0 + end. + +% Creates two funs with no local return and will return one or die. No spec. +foo39() -> + Bomb = fun foo4/0, + case get(42) of + a -> Bomb(); + b -> fun foo4/0 + end. + +% Creates two funs with no local return and will return one or die. With spec. +-spec foo40() -> fun(() -> no_return()). +foo40() -> + Bomb = fun() -> foo4() end, + case get(42) of + a -> Bomb(); + b -> fun() -> foo4() end + end. + +% Obtains two funs with no local return and will return one or die. No spec. +foo41() -> + Bomb = foo5(), + case get(42) of + a -> Bomb(); + b -> foo5() + end. + +% Obtains two funs with no local return and will return one or die. With spec. +-spec foo42() -> fun(() -> no_return()). +foo42() -> + Bomb = foo5(), + case get(42) of + a -> Bomb(); + b -> foo5() + end. diff --git a/lib/dialyzer/test/small_SUITE_data/src/file_open_encoding.erl b/lib/dialyzer/test/small_SUITE_data/src/file_open_encoding.erl index 4f1268eba8..086df3464b 100644 --- a/lib/dialyzer/test/small_SUITE_data/src/file_open_encoding.erl +++ b/lib/dialyzer/test/small_SUITE_data/src/file_open_encoding.erl @@ -6,9 +6,7 @@ -export([parse/1]). --type proplist() :: [{atom(), any()}]. - --spec parse(string()) -> proplist(). +-spec parse(string()) -> proplists:proplist(). parse(FileName) -> {ok, IoDevice} = file:open(FileName, [read, binary, {encoding, utf8}]), do_parse(IoDevice, []). diff --git a/lib/dialyzer/test/small_SUITE_data/src/rebar_no_return.erl b/lib/dialyzer/test/small_SUITE_data/src/rebar_no_return.erl new file mode 100644 index 0000000000..d3b504ae04 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/rebar_no_return.erl @@ -0,0 +1,19 @@ +-module(rebar_no_return). + +-export([t/0]). + +-spec t() -> no_return(). +t() -> + F = log_and_halt("baz"), + F("foo", 123). + +-spec log_and_halt(string()) -> fun((string(),integer()) -> no_return()). +log_and_halt(Msg) -> + fun(_, _) -> + abort(Msg) + end. + +-spec abort(string()) -> no_return(). +abort(Msg) -> + io:format("~s~n", [Msg]), + halt(1). diff --git a/lib/diameter/src/transport/diameter_sctp.erl b/lib/diameter/src/transport/diameter_sctp.erl index 92aa8488a0..46473e7bf1 100644 --- a/lib/diameter/src/transport/diameter_sctp.erl +++ b/lib/diameter/src/transport/diameter_sctp.erl @@ -525,7 +525,22 @@ recv({[#sctp_sndrcvinfo{stream = Id}], Bin}, #transport{parent = Pid}) recv({[], #sctp_shutdown_event{assoc_id = Id}}, #transport{assoc_id = Id}) -> - stop. + stop; + +%% Note that diameter_sctp(3) documents that sctp_events cannot be +%% specified in the list of options passed to gen_sctp and that +%% gen_opts/1 guards against this. This is to ensure that we know what +%% events to expect and also to ensure that we receive +%% #sctp_sndrcvinfo{} with each incoming message (data_io_event = +%% true). Adaptation layer events (ie. #sctp_adaptation_event{}) are +%% disabled by default so don't handle it. We could simply disable +%% events we don't react to but don't. + +recv({[], #sctp_paddr_change{}}, _) -> + ok; + +recv({[], #sctp_pdapi_event{}}, _) -> + ok. %% up/1 @@ -591,7 +606,7 @@ f([], _, _) -> %% assoc_id/1 -assoc_id(#sctp_shutdown_event{assoc_id = Id}) -> %% undocumented +assoc_id(#sctp_shutdown_event{assoc_id = Id}) -> Id; assoc_id(#sctp_assoc_change{assoc_id = Id}) -> Id; diff --git a/lib/docbuilder/src/docb_gen.erl b/lib/docbuilder/src/docb_gen.erl index 0d8d640324..75494314f1 100644 --- a/lib/docbuilder/src/docb_gen.erl +++ b/lib/docbuilder/src/docb_gen.erl @@ -18,6 +18,10 @@ -module(docb_gen). -export([module/1, module/2, users_guide/1, users_guide/2]). +-deprecated([{module,1,next_major_release}, + {module,2,next_major_release}, + {users_guide,1,next_major_release}, + {users_guide,2,next_major_release}]). -record(args, {suffix=".xml", layout=docb_edoc_xml_cb, diff --git a/lib/docbuilder/src/docb_transform.erl b/lib/docbuilder/src/docb_transform.erl index 9c7561b07b..736ac92274 100644 --- a/lib/docbuilder/src/docb_transform.erl +++ b/lib/docbuilder/src/docb_transform.erl @@ -18,6 +18,8 @@ -module(docb_transform). -export([file/1, file/2]). +-deprecated([{file,1,next_major_release}, + {file,2,next_major_release}]). %% file(File) -> ok | {error, Reason} %% file(File, Opts) -> ok | {error, Reason} diff --git a/lib/docbuilder/src/docb_xml_check.erl b/lib/docbuilder/src/docb_xml_check.erl index 8ae5cd2eac..5912e22e7b 100644 --- a/lib/docbuilder/src/docb_xml_check.erl +++ b/lib/docbuilder/src/docb_xml_check.erl @@ -18,6 +18,7 @@ -module(docb_xml_check). -export([validate/1]). +-deprecated([{validate,1,next_major_release}]). %% validate(File) -> ok | error | {error, badfile} %% File = string(), file name with or without ".xml" extension diff --git a/lib/docbuilder/vsn.mk b/lib/docbuilder/vsn.mk index 2475966ec2..6df438a537 100644 --- a/lib/docbuilder/vsn.mk +++ b/lib/docbuilder/vsn.mk @@ -1 +1 @@ -DOCB_VSN = 0.9.8.10 +DOCB_VSN = 0.9.8.11 diff --git a/lib/edoc/src/edoc_specs.erl b/lib/edoc/src/edoc_specs.erl index bfb17515be..5acf8ac0d5 100644 --- a/lib/edoc/src/edoc_specs.erl +++ b/lib/edoc/src/edoc_specs.erl @@ -27,7 +27,6 @@ -include("edoc.hrl"). -include("edoc_types.hrl"). --type proplist() :: [proplists:property()]. -type syntaxTree() :: erl_syntax:syntaxTree(). -define(TOP_TYPE, term). @@ -99,7 +98,7 @@ docs(Forms, CommentFun) -> -type entry() :: #entry{}. -type module_info() :: #module{}. -type entries() :: [entry()]. --spec add_data(Entries::entries(), Options::proplist(), +-spec add_data(Entries::entries(), Options::proplists:proplist(), File::file:filename(), Module::module_info()) -> entries(). %% @doc Create tags a la EDoc for Erlang specifications and types. diff --git a/lib/erl_interface/src/encode/encode_atom.c b/lib/erl_interface/src/encode/encode_atom.c index 69f2d1451c..b1a4479034 100644 --- a/lib/erl_interface/src/encode/encode_atom.c +++ b/lib/erl_interface/src/encode/encode_atom.c @@ -17,13 +17,17 @@ * %CopyrightEnd% */ #include <string.h> +#include <limits.h> #include "eidef.h" #include "eiext.h" #include "putget.h" int ei_encode_atom(char *buf, int *index, const char *p) { - return ei_encode_atom_len(buf, index, p, strlen(p)); + size_t len = strlen(p); + + if (len >= INT_MAX) return -1; + return ei_encode_atom_len(buf, index, p, len); } int ei_encode_atom_len(char *buf, int *index, const char *p, int len) diff --git a/lib/erl_interface/src/encode/encode_string.c b/lib/erl_interface/src/encode/encode_string.c index 1d342cb605..593bbf2b6d 100644 --- a/lib/erl_interface/src/encode/encode_string.c +++ b/lib/erl_interface/src/encode/encode_string.c @@ -17,6 +17,7 @@ * %CopyrightEnd% */ #include <string.h> +#include <limits.h> #include "eidef.h" #include "eiext.h" #include "putget.h" @@ -24,7 +25,10 @@ int ei_encode_string(char *buf, int *index, const char *p) { - return ei_encode_string_len(buf, index, p, strlen(p)); + size_t len = strlen(p); + + if (len >= INT_MAX) return -1; + return ei_encode_string_len(buf, index, p, len); } int ei_encode_string_len(char *buf, int *index, const char *p, int len) diff --git a/lib/eunit/doc/overview.edoc b/lib/eunit/doc/overview.edoc index be05a13fba..2583f0be25 100644 --- a/lib/eunit/doc/overview.edoc +++ b/lib/eunit/doc/overview.edoc @@ -913,7 +913,7 @@ To make the descriptions simpler, we first list some definitions: <td>`CleanupX'</td><td>`(X::any(), R::any()) -> any()'</td> </tr> <tr> -<td>`Instantiator'</td><td>`((R::any()) -> Tests | {with, [AbstractTestFun::((any()) -> any())]}'</td> +<td>`Instantiator'</td><td>`((R::any()) -> Tests) | {with, [AbstractTestFun::((any()) -> any())]}'</td> </tr> <tr> <td>`Where'</td><td>`local | spawn | {spawn, Node::atom()}'</td> diff --git a/lib/eunit/include/eunit.hrl b/lib/eunit/include/eunit.hrl index 82ba982f03..493ba60a2d 100644 --- a/lib/eunit/include/eunit.hrl +++ b/lib/eunit/include/eunit.hrl @@ -39,6 +39,7 @@ -ifndef(EUNIT_HRL). -define(EUNIT_HRL, true). + %% allow defining TEST to override NOTEST -ifdef(TEST). -undef(NOTEST). @@ -164,7 +165,7 @@ %% This is mostly a convenience which gives more detailed reports. %% Note: Guard is a guarded pattern, and can not be used for value. -ifdef(NOASSERT). --define(assertMatch(Guard,Expr),ok). +-define(assertMatch(Guard, Expr), ok). -else. -define(assertMatch(Guard, Expr), ((fun () -> @@ -174,17 +175,37 @@ [{module, ?MODULE}, {line, ?LINE}, {expression, (??Expr)}, - {expected, (??Guard)}, + {pattern, (??Guard)}, {value, __V}]}) end end)())). -endif. -define(_assertMatch(Guard, Expr), ?_test(?assertMatch(Guard, Expr))). +%% This is the inverse case of assertMatch, for convenience. +-ifdef(NOASSERT). +-define(assertNotMatch(Guard, Expr), ok). +-else. +-define(assertNotMatch(Guard, Expr), + ((fun () -> + __V = (Expr), + case __V of + Guard -> .erlang:error({assertNotMatch_failed, + [{module, ?MODULE}, + {line, ?LINE}, + {expression, (??Expr)}, + {pattern, (??Guard)}, + {value, __V}]}); + _ -> ok + end + end)())). +-endif. +-define(_assertNotMatch(Guard, Expr), ?_test(?assertNotMatch(Guard, Expr))). + %% This is a convenience macro which gives more detailed reports when %% the expected LHS value is not a pattern, but a computed value -ifdef(NOASSERT). --define(assertEqual(Expect,Expr),ok). +-define(assertEqual(Expect, Expr), ok). -else. -define(assertEqual(Expect, Expr), ((fun (__X) -> @@ -201,9 +222,29 @@ -endif. -define(_assertEqual(Expect, Expr), ?_test(?assertEqual(Expect, Expr))). +%% This is the inverse case of assertEqual, for convenience. +-ifdef(NOASSERT). +-define(assertNotEqual(Unexpected, Expr), ok). +-else. +-define(assertNotEqual(Unexpected, Expr), + ((fun (__X) -> + case (Expr) of + __X -> .erlang:error({assertNotEqual_failed, + [{module, ?MODULE}, + {line, ?LINE}, + {expression, (??Expr)}, + {value, __X}]}); + _ -> ok + end + end)(Unexpected))). +-endif. +-define(_assertNotEqual(Unexpected, Expr), + ?_test(?assertNotEqual(Unexpected, Expr))). + %% Note: Class and Term are patterns, and can not be used for value. +%% Term can be a guarded pattern, but Class cannot. -ifdef(NOASSERT). --define(assertException(Class, Term, Expr),ok). +-define(assertException(Class, Term, Expr), ok). -else. -define(assertException(Class, Term, Expr), ((fun () -> @@ -212,7 +253,7 @@ [{module, ?MODULE}, {line, ?LINE}, {expression, (??Expr)}, - {expected, + {pattern, "{ "++(??Class)++" , "++(??Term) ++" , [...] }"}, {unexpected_success, __V}]}) @@ -223,7 +264,7 @@ [{module, ?MODULE}, {line, ?LINE}, {expression, (??Expr)}, - {expected, + {pattern, "{ "++(??Class)++" , "++(??Term) ++" , [...] }"}, {unexpected_exception, @@ -243,6 +284,43 @@ -define(_assertExit(Term, Expr), ?_assertException(exit, Term, Expr)). -define(_assertThrow(Term, Expr), ?_assertException(throw, Term, Expr)). +%% This is the inverse case of assertException, for convenience. +%% Note: Class and Term are patterns, and can not be used for value. +%% Both Class and Term can be guarded patterns. +-ifdef(NOASSERT). +-define(assertNotException(Class, Term, Expr), ok). +-else. +-define(assertNotException(Class, Term, Expr), + ((fun () -> + try (Expr) of + _ -> ok + catch + __C:__T -> + case __C of + Class -> + case __T of + Term -> + .erlang:error({assertNotException_failed, + [{module, ?MODULE}, + {line, ?LINE}, + {expression, (??Expr)}, + {pattern, + "{ "++(??Class)++" , " + ++(??Term)++" , [...] }"}, + {unexpected_exception, + {__C, __T, + .erlang:get_stacktrace() + }}]}); + _ -> ok + end; + _ -> ok + end + end + end)())). +-endif. +-define(_assertNotException(Class, Term, Expr), + ?_test(?assertNotException(Class, Term, Expr))). + %% Macros for running operating system commands. (Note that these %% require EUnit to be present at runtime, or at least eunit_lib.) @@ -267,7 +345,7 @@ %% these are only used for testing; they always return 'ok' on success, %% and have no effect if debugging/testing is turned off -ifdef(NOASSERT). --define(assertCmdStatus(N, Cmd),ok). +-define(assertCmdStatus(N, Cmd), ok). -else. -define(assertCmdStatus(N, Cmd), ((fun () -> @@ -285,7 +363,7 @@ -define(assertCmd(Cmd), ?assertCmdStatus(0, Cmd)). -ifdef(NOASSERT). --define(assertCmdOutput(T, Cmd),ok). +-define(assertCmdOutput(T, Cmd), ok). -else. -define(assertCmdOutput(T, Cmd), ((fun () -> @@ -313,11 +391,12 @@ -define(debugHere, ok). -define(debugFmt(S, As), ok). -define(debugVal(E), (E)). --define(debugTime(S,E), (E)). +-define(debugTime(S, E), (E)). -else. -define(debugMsg(S), (begin - .io:fwrite(user, <<"~s:~w: ~s\n">>, [?FILE, ?LINE, S]), + .io:fwrite(user, <<"~s:~w:~w: ~s\n">>, + [?FILE, ?LINE, self(), S]), ok end)). -define(debugHere, (?debugMsg("<-"))). @@ -327,7 +406,7 @@ ?debugFmt(<<"~s = ~P">>, [(??E), __V, 15]), __V end)(E))). --define(debugTime(S,E), +-define(debugTime(S, E), ((fun () -> {__T0, _} = statistics(wall_clock), __V = (E), @@ -337,4 +416,5 @@ end)())). -endif. + -endif. % EUNIT_HRL diff --git a/lib/eunit/src/eunit.app.src b/lib/eunit/src/eunit.app.src index 4fd76588c3..5e16dfa2ce 100644 --- a/lib/eunit/src/eunit.app.src +++ b/lib/eunit/src/eunit.app.src @@ -5,17 +5,17 @@ {vsn, "%VSN%"}, {modules, [eunit, eunit_autoexport, - eunit_striptests, - eunit_server, + eunit_data, + eunit_lib, + eunit_listener, eunit_proc, eunit_serial, + eunit_server, + eunit_striptests, + eunit_surefire, eunit_test, eunit_tests, - eunit_lib, - eunit_listener, - eunit_data, - eunit_tty, - eunit_surefire]}, + eunit_tty]}, {registered,[]}, - {applications, [stdlib]}, + {applications, [kernel,stdlib]}, {env, []}]}. diff --git a/lib/eunit/src/eunit.erl b/lib/eunit/src/eunit.erl index da35c5c2ec..15fc3bdf32 100644 --- a/lib/eunit/src/eunit.erl +++ b/lib/eunit/src/eunit.erl @@ -16,7 +16,7 @@ %% $Id: eunit.erl 339 2009-04-05 14:10:47Z rcarlsson $ %% %% @copyright 2004-2009 Micka�l R�mond, Richard Carlsson -%% @author Mickaël Rémond <[email protected]> +%% @author Micka�l R�mond <[email protected]> %% [http://www.process-one.net/] %% @author Richard Carlsson <[email protected]> %% [http://user.it.uu.se/~richardc/] diff --git a/lib/eunit/src/eunit_data.erl b/lib/eunit/src/eunit_data.erl index 0543b6c543..288dd74ddf 100644 --- a/lib/eunit/src/eunit_data.erl +++ b/lib/eunit/src/eunit_data.erl @@ -146,8 +146,10 @@ iter_next(I = #iter{next = [T | Ts]}) -> iter_prev(#iter{prev = []}) -> none; -iter_prev(#iter{prev = [T | Ts], next = Next, pos = Pos} = I) -> - {T, I#iter{prev = Ts, next = [T | Next], pos = Pos - 1}}. +iter_prev(#iter{prev = [T | Ts]} = I) -> + {T, I#iter{prev = Ts, + next = [T | I#iter.next], + pos = I#iter.pos - 1}}. %% --------------------------------------------------------------------- @@ -363,7 +365,8 @@ parse({file, F} = T) when is_list(F) -> parse({dir, D}=T) when is_list(D) -> case eunit_lib:is_string(D) of true -> - {data, {"directory \"" ++ D ++ "\"", get_directory_modules(D)}}; + {data, {"directory \"" ++ D ++ "\"", + get_directory_module_tests(D)}}; false -> bad_test(T) end; @@ -385,10 +388,10 @@ parse({S, T1} = T) when is_list(S) -> end; parse({S, T1}) when is_binary(S) -> group(#group{tests = T1, desc = S}); -parse(T) when tuple_size(T) > 2, is_list(element(1, T)) -> +parse(T) when is_tuple(T), size(T) > 2, is_list(element(1, T)) -> [S | Es] = tuple_to_list(T), parse({S, list_to_tuple(Es)}); -parse(T) when tuple_size(T) > 2, is_binary(element(1, T)) -> +parse(T) when is_tuple(T), size(T) > 2, is_binary(element(1, T)) -> [S | Es] = tuple_to_list(T), parse({S, list_to_tuple(Es)}); parse(M) when is_atom(M) -> @@ -596,7 +599,7 @@ testfuns(Es, M, TestSuffix, GeneratorSuffix) -> %% --------------------------------------------------------------------- -%% Getting a test set from a file +%% Getting a test set from a file (text file or object file) %% @throws {file_read_error, {Reason::atom(), Message::string(), %% fileName()}} @@ -625,17 +628,23 @@ get_file_tests(F) -> is_module_filename(F) -> filename:extension(F) =:= code:objfile_extension(). +objfile_test({M, File}) -> + {setup, + fun () -> + %% TODO: better error/stacktrace for this internal fun + code:purge(M), + {module,M} = code:load_abs(filename:rootname(File)), + ok + end, + {module, M}}; objfile_test(File) -> + objfile_test({objfile_module(File), File}). + +objfile_module(File) -> try - {module, M} = lists:keyfind(module, 1, beam_lib:info(File)), - {setup, - fun () -> - %% TODO: better error/stacktrace for this internal fun - code:purge(M), - {module,M} = code:load_abs(filename:rootname(File)), - ok - end, - {module, M}} + {value, {module, M}} = lists:keysearch(module, 1, + beam_lib:info(File)), + M catch _:_ -> throw({file_read_error, @@ -644,15 +653,34 @@ objfile_test(File) -> %% --------------------------------------------------------------------- -%% Getting a list of module names from object files in a directory - -%% @throws {file_read_error, {Reason::atom(), Message::string(), -%% fileName()}} +%% Getting a set of module tests from the object files in a directory + +%% @throws {file_read_error, +%% {Reason::atom(), Message::string(), fileName()}} + +get_directory_module_tests(D) -> + Ms = get_directory_modules(D), + %% for all 'm' in the set, remove 'm_tests' if present + F = fun ({M,_}, S) -> + Name = atom_to_list(M), + case lists:suffix(?DEFAULT_TESTMODULE_SUFFIX, Name) of + false -> + Name1 = Name ++ ?DEFAULT_TESTMODULE_SUFFIX, + M1 = list_to_atom(Name1), + dict:erase(M1, S); + true -> + S + end + end, + [objfile_test(Obj) + || Obj <- dict:to_list(lists:foldl(F, dict:from_list(Ms), Ms))]. %% TODO: handle packages (recursive search for files) - get_directory_modules(D) -> - [objfile_test(filename:join(D, F)) + [begin + F1 = filename:join(D, F), + {objfile_module(F1), F1} + end || F <- eunit_lib:list_dir(D), is_module_filename(F)]. diff --git a/lib/eunit/src/eunit_server.erl b/lib/eunit/src/eunit_server.erl index bf1bb9bcef..2cdfef2668 100644 --- a/lib/eunit/src/eunit_server.erl +++ b/lib/eunit/src/eunit_server.erl @@ -59,8 +59,9 @@ watch(Server, Module, Opts) when is_atom(Module) -> watch_path(Server, Path, Opts) -> command(Server, {watch, {path, filename:flatten(Path)}, Opts}). +%% note that the user must use $ at the end to match whole paths only watch_regexp(Server, Regex, Opts) -> - case regexp:parse(Regex) of + case re:compile(Regex,[anchored]) of {ok, R} -> command(Server, {watch, {regexp, R}, Opts}); {error, _}=Error -> @@ -278,8 +279,8 @@ is_watched(Path, St) -> match_any(sets:to_list(St#state.regexps), Path). match_any([R | Rs], Str) -> - case regexp:first_match(Str, R) of - {match, _, _} -> true; + case re:run(Str, R, [{capture,none}]) of + match -> true; _ -> match_any(Rs, Str) end; match_any([], _Str) -> false. diff --git a/lib/eunit/src/eunit_surefire.erl b/lib/eunit/src/eunit_surefire.erl index 25b5cde09c..6e0a447105 100644 --- a/lib/eunit/src/eunit_surefire.erl +++ b/lib/eunit/src/eunit_surefire.erl @@ -15,7 +15,7 @@ %% %% $Id: $ %% -%% @author Mickaël Rémond <[email protected]> +%% @author Micka�l R�mond <[email protected]> %% @copyright 2009 Micka�l R�mond, Paul Guyot %% @see eunit %% @doc Surefire reports for EUnit (Format used by Maven and Atlassian diff --git a/lib/eunit/src/eunit_test.erl b/lib/eunit/src/eunit_test.erl index d322c4b420..9ac1d1e7d9 100644 --- a/lib/eunit/src/eunit_test.erl +++ b/lib/eunit/src/eunit_test.erl @@ -131,12 +131,27 @@ macro_test_() -> [{module,_}, {line,_}, {expression,_}, - {expected,"[ _ ]"}, + {pattern,"[ _ ]"}, {value,[]}]}, _}} = run_testfun(F) end), ?_test(begin + {?LINE, F} = ?_assertNotMatch(ok, error), + {ok, ok} = run_testfun(F) + end), + ?_test(begin + {?LINE, F} = ?_assertNotMatch([_], [42]), + {error,{error,{assertNotMatch_failed, + [{module,_}, + {line,_}, + {expression,_}, + {pattern,"[ _ ]"}, + {value,[42]}]}, + _}} + = run_testfun(F) + end), + ?_test(begin {?LINE, F} = ?_assertEqual(ok, ok), {ok, ok} = run_testfun(F) end), @@ -152,6 +167,20 @@ macro_test_() -> = run_testfun(F) end), ?_test(begin + {?LINE, F} = ?_assertNotEqual(1, 0), + {ok, ok} = run_testfun(F) + end), + ?_test(begin + {?LINE, F} = ?_assertNotEqual(2, 1+1), + {error,{error,{assertNotEqual_failed, + [{module,_}, + {line,_}, + {expression,_}, + {value,2}]}, + _}} + = run_testfun(F) + end), + ?_test(begin {?LINE, F} = ?_assertException(error, badarith, erlang:error(badarith)), {ok, ok} = run_testfun(F) @@ -162,7 +191,7 @@ macro_test_() -> [{module,_}, {line,_}, {expression,_}, - {expected,_}, + {pattern,_}, {unexpected_success,ok}]}, _}} = run_testfun(F) @@ -174,15 +203,48 @@ macro_test_() -> [{module,_}, {line,_}, {expression,_}, - {expected,_}, + {pattern,_}, + {unexpected_exception, + {error,badarith,_}}]}, + _}} + = run_testfun(F) + end), + ?_test(begin + {?LINE, F} = ?_assertError(badarith, + erlang:error(badarith)), + {ok, ok} = run_testfun(F) + end), + ?_test(begin + {?LINE, F} = ?_assertExit(normal, exit(normal)), + {ok, ok} = run_testfun(F) + end), + ?_test(begin + {?LINE, F} = ?_assertThrow(foo, throw(foo)), + {ok, ok} = run_testfun(F) + end), + ?_test(begin + {?LINE, F} = ?_assertNotException(error, badarith, 42), + {ok, ok} = run_testfun(F) + end), + ?_test(begin + {?LINE, F} = ?_assertNotException(error, badarith, + erlang:error(badarg)), + {ok, ok} = run_testfun(F) + end), + ?_test(begin + {?LINE, F} = ?_assertNotException(error, badarith, + erlang:error(badarith)), + {error,{error,{assertNotException_failed, + [{module,_}, + {line,_}, + {expression,_}, + {pattern,_}, {unexpected_exception, {error,badarith,_}}]}, _}} = run_testfun(F) end) ]}. - -under_eunit_test() -> ?assert(?UNDER_EUNIT). -endif. diff --git a/lib/eunit/src/eunit_tests.erl b/lib/eunit/src/eunit_tests.erl index 37c0b4d6ae..a63d102d98 100644 --- a/lib/eunit/src/eunit_tests.erl +++ b/lib/eunit/src/eunit_tests.erl @@ -26,17 +26,17 @@ -include("eunit.hrl"). -ifdef(TEST). -%% Cause all the other modules to be tested as well as this one. -full_test_() -> - %%{application, eunit}. % this currently causes a loop - %% We use the below until loop detection is implemented - [eunit_autoexport, - eunit_striptests, - eunit_server, - eunit_proc, - eunit_serial, - eunit_test, - eunit_lib, - eunit_data, - eunit_tty]. +id(X) -> X. % for suppressing compiler warnings -endif. + +under_eunit_test() -> ?assert(?UNDER_EUNIT). + +let_test() -> ?assertEqual(42, ?LET(X, 17, X+25)). + +if_test_() -> + [?_assertEqual(17, ?IF(id(1) > 0, 17, 42)), + ?_assertEqual(42, ?IF(id(1) < 0, 17, 42))]. + +matches_test_() -> + [?_assert(?MATCHES("hel"++_, "hello")), + ?_assertNot(?MATCHES("hal"++_, "hello"))]. diff --git a/lib/eunit/vsn.mk b/lib/eunit/vsn.mk index d7edd7977b..d933085bbc 100644 --- a/lib/eunit/vsn.mk +++ b/lib/eunit/vsn.mk @@ -1 +1 @@ -EUNIT_VSN = 2.1.7 +EUNIT_VSN = 2.2.0 diff --git a/lib/gs/contribs/bonk/sounder.erl b/lib/gs/contribs/bonk/sounder.erl index 11ab03d167..899f20d4e0 100644 --- a/lib/gs/contribs/bonk/sounder.erl +++ b/lib/gs/contribs/bonk/sounder.erl @@ -72,13 +72,13 @@ stop() -> sounder ! {stop}, ok end. -new(File) when list(File) -> new(list_to_atom(File)); -new(File) when atom(File) -> +new(File) when is_list(File) -> new(list_to_atom(File)); +new(File) when is_atom(File) -> catch begin check(), sounder ! {new,File,self()}, wait_for_ack(sounder) end. -play(No) when integer(No) -> +play(No) when is_integer(No) -> catch begin check(), sounder ! {play, No, self()}, wait_for_ack(sounder) end. @@ -94,14 +94,14 @@ go() -> loop(Port) -> receive - {new, File, From} when atom(File) -> + {new, File, From} when is_atom(File) -> Port ! {self(),{command,lists:append([0],atom_to_list(File))}}, From ! {sounder,wait_for_ack(Port)}, loop(Port); {play,silent,From} -> From ! {sounder,false}, loop(Port); - {play,No,From} when integer(No) -> + {play,No,From} when is_integer(No) -> Port ! {self(),{command,[No]}}, From ! {sounder,wait_for_ack(Port)}, loop(Port); @@ -118,13 +118,13 @@ loop(Port) -> nosound() -> receive - {new,File,From} when atom(File) -> + {new,File,From} when is_atom(File) -> From ! {sounder,{ok,silent}}, nosound(); {play,silent,From} -> From ! {sounder,true}, nosound(); - {play,No,From} when integer(No) -> + {play,No,From} when is_integer(No) -> From ! {sounder,{error,no_audio_cap}}, nosound(); {stop} -> @@ -135,7 +135,7 @@ nosound() -> wait_for_ack(sounder) -> receive {sounder,Res} -> Res end; -wait_for_ack(Port) when port(Port) -> +wait_for_ack(Port) when is_port(Port) -> receive {Port,{data,"ok"}} -> ok; @@ -149,7 +149,7 @@ wait_for_ack(Port) when port(Port) -> check() -> case whereis(sounder) of - Pid when pid(Pid) -> + Pid when is_pid(Pid) -> ok; undefined -> throw({error,sounder_not_started}) diff --git a/lib/gs/contribs/cols/cols.erl b/lib/gs/contribs/cols/cols.erl index 67b46d0dfb..439eb717f7 100644 --- a/lib/gs/contribs/cols/cols.erl +++ b/lib/gs/contribs/cols/cols.erl @@ -278,7 +278,7 @@ fall_column([], _X, _Y, ColumnAcc, ChecksAcc) -> fall_column([black|Colors], X, Y, ColumnAcc, ChecksAcc) -> case find_box(Colors) of false -> {ColumnAcc, ChecksAcc}; - NewColors when list(NewColors) -> + NewColors when is_list(NewColors) -> fall_one_step(NewColors, X, Y, ColumnAcc, ChecksAcc) end; fall_column([Color|Colors], X, Y, ColumnAcc, ChecksAcc) -> @@ -330,7 +330,7 @@ new_column_list([], _, _) -> []. %%---------------------------------------------------------------------- %% Returns: a reversed list of colors. %%---------------------------------------------------------------------- -columntuple_to_list(ColumnTuple) when tuple(ColumnTuple) -> +columntuple_to_list(ColumnTuple) when is_tuple(ColumnTuple) -> columntuple_to_list(tuple_to_list(ColumnTuple),[]). columntuple_to_list([],Acc) -> Acc; diff --git a/lib/gs/contribs/mandel/mandel.erl b/lib/gs/contribs/mandel/mandel.erl index d4d2452463..579f8e487b 100644 --- a/lib/gs/contribs/mandel/mandel.erl +++ b/lib/gs/contribs/mandel/mandel.erl @@ -119,7 +119,7 @@ start_client(Opts,Nodes) -> try_random(random,Low,High) -> random:uniform()*(High-Low)+Low; -try_random(Float,_Low,_High) when number(Float) -> Float. +try_random(Float,_Low,_High) when is_number(Float) -> Float. %%----------------------------------------------------------------- diff --git a/lib/gs/contribs/othello/othello_board.erl b/lib/gs/contribs/othello/othello_board.erl index 0206ba2ded..6ccb79b7e4 100644 --- a/lib/gs/contribs/othello/othello_board.erl +++ b/lib/gs/contribs/othello/othello_board.erl @@ -147,7 +147,7 @@ but_pressed("Help",_ButtId,_User,GamePid,_Shell,_Wids,_Op) -> but_pressed("Newgame",_ButtId,_User,GamePid,_Shell,Wids,Options) -> new_game(GamePid,Wids,Options); but_pressed([],ButtId,User,GamePid,_Shell,_Wids,_Op) - when pid(GamePid),User == player -> + when is_pid(GamePid),User == player -> [C,R] = atom_to_list(ButtId), GamePid ! {self(),position,othello_adt:pos(C-96,translate(R-48))}, GamePid; @@ -243,7 +243,7 @@ game_msg(Msg,User,GamePid,Shell,Wids,Options) -> end. -new_game(GamePid,Wids,Options) when pid(GamePid) -> +new_game(GamePid,Wids,Options) when is_pid(GamePid) -> exit(GamePid,kill), new_game(Wids,Options); new_game(_,Wids,Options) -> diff --git a/lib/gs/examples/calc2.erl b/lib/gs/examples/calc2.erl index d28780de01..9969a6c40f 100644 --- a/lib/gs/examples/calc2.erl +++ b/lib/gs/examples/calc2.erl @@ -54,7 +54,7 @@ calc() -> calc_loop(Lbl,M,V,Op) -> receive - {gs,_,click,D,_} when integer(D) -> + {gs,_,click,D,_} when is_integer(D) -> digit_press(Lbl,M,V*10+D,Op); {gs,_,click,'C',_} -> c(Lbl,M,V,Op); diff --git a/lib/hipe/cerl/erl_bif_types.erl b/lib/hipe/cerl/erl_bif_types.erl index f1be658054..827fa79ec5 100644 --- a/lib/hipe/cerl/erl_bif_types.erl +++ b/lib/hipe/cerl/erl_bif_types.erl @@ -366,7 +366,7 @@ type(erlang, '>', 2, Xs = [Lhs, Rhs]) -> is_integer(LhsMax), is_integer(RhsMin), RhsMin >= LhsMax -> F; true -> t_boolean() end; - false -> t_boolean() + false -> compare('>', Lhs, Rhs) end, strict(Xs, Ans); type(erlang, '>=', 2, Xs = [Lhs, Rhs]) -> @@ -384,7 +384,7 @@ type(erlang, '>=', 2, Xs = [Lhs, Rhs]) -> is_integer(LhsMax), is_integer(RhsMin), RhsMin > LhsMax -> F; true -> t_boolean() end; - false -> t_boolean() + false -> compare('>=', Lhs, Rhs) end, strict(Xs, Ans); type(erlang, '<', 2, Xs = [Lhs, Rhs]) -> @@ -402,7 +402,7 @@ type(erlang, '<', 2, Xs = [Lhs, Rhs]) -> is_integer(LhsMin), is_integer(RhsMax), RhsMax =< LhsMin -> F; true -> t_boolean() end; - false -> t_boolean() + false -> compare('<', Lhs, Rhs) end, strict(Xs, Ans); type(erlang, '=<', 2, Xs = [Lhs, Rhs]) -> @@ -420,7 +420,7 @@ type(erlang, '=<', 2, Xs = [Lhs, Rhs]) -> is_integer(LhsMin), is_integer(RhsMax), RhsMax < LhsMin -> F; true -> t_boolean() end; - false -> t_boolean() + false -> compare('=<', Lhs, Rhs) end, strict(Xs, Ans); type(erlang, '+', 1, Xs) -> @@ -672,6 +672,9 @@ type(erlang, call_on_load_function, 1, Xs) -> type(erlang, cancel_timer, 1, Xs) -> strict(arg_types(erlang, cancel_timer, 1), Xs, fun (_) -> t_sup(t_integer(), t_atom('false')) end); +type(erlang, check_old_code, 1, Xs) -> + strict(arg_types(erlang, check_old_code, 1), Xs, + fun (_) -> t_boolean() end); type(erlang, check_process_code, 2, Xs) -> strict(arg_types(erlang, check_process_code, 2), Xs, fun (_) -> t_boolean() end); @@ -736,6 +739,7 @@ type(erlang, element, 2, Xs) -> type(erlang, erase, 0, _) -> t_any(); type(erlang, erase, 1, _) -> t_any(); type(erlang, external_size, 1, _) -> t_integer(); +type(erlang, external_size, 2, _) -> t_integer(); type(erlang, finish_after_on_load, 2, Xs) -> %% Internal BIF used by on_load. strict(arg_types(erlang, finish_after_on_load, 2), Xs, @@ -1199,6 +1203,7 @@ type(erlang, process_flag, 2, Xs) -> case t_atom_vals(Flag) of ['error_handler'] -> t_atom(); ['min_heap_size'] -> t_non_neg_integer(); + ['scheduler'] -> t_non_neg_integer(); ['monitor_nodes'] -> t_boolean(); ['priority'] -> t_process_priority_level(); ['save_calls'] -> t_non_neg_integer(); @@ -1899,7 +1904,7 @@ type(prim_file, internal_native2name, 1, Xs) -> fun (_) -> t_prim_file_name() end); type(prim_file, internal_normalize_utf8, 1, Xs) -> strict(arg_types(prim_file, internal_normalize_utf8, 1), Xs, - fun (_) -> t_binary() end); + fun (_) -> t_unicode_string() end); %%-- gen_tcp ------------------------------------------------------------------ %% NOTE: All type information for this module added to avoid loss of precision type(gen_tcp, accept, 1, Xs) -> @@ -3175,6 +3180,50 @@ arith(Op, X1, X2) -> end. %%============================================================================= +%% Comparison of terms +%%============================================================================= + +compare(Op, Lhs, Rhs) -> + case t_is_none(t_inf(Lhs, Rhs)) of + false -> t_boolean(); + true -> + case Op of + '<' -> always_smaller(Lhs, Rhs); + '>' -> always_smaller(Rhs, Lhs); + '=<' -> always_smaller(Lhs, Rhs); + '>=' -> always_smaller(Rhs, Lhs) + end + end. + +always_smaller(Type1, Type2) -> + {Min1, Max1} = type_ranks(Type1), + {Min2, Max2} = type_ranks(Type2), + if Max1 < Min2 -> t_atom('true'); + Min1 > Max2 -> t_atom('false'); + true -> t_boolean() + end. + +type_ranks(Type) -> + type_ranks(Type, 1, 0, 0, type_order()). + +type_ranks(_Type, _I, Min, Max, []) -> {Min, Max}; +type_ranks(Type, I, Min, Max, [TypeClass|Rest]) -> + {NewMin, NewMax} = + case t_is_none(t_inf(Type, TypeClass)) of + true -> {Min, Max}; + false -> case Min of + 0 -> {I, I}; + _ -> {Min, I} + end + end, + type_ranks(Type, I+1, NewMin, NewMax, Rest). + +type_order() -> + [t_number(), t_atom(), t_reference(), t_fun(), t_port(), t_pid(), t_tuple(), + t_list(), t_binary()]. + + +%%============================================================================= -spec arg_types(atom(), atom(), arity()) -> [erl_types:erl_type()] | 'unknown'. @@ -3395,6 +3444,8 @@ arg_types(erlang, call_on_load_function, 1) -> [t_atom()]; arg_types(erlang, cancel_timer, 1) -> [t_reference()]; +arg_types(erlang, check_old_code, 1) -> + [t_atom()]; arg_types(erlang, check_process_code, 2) -> [t_pid(), t_atom()]; arg_types(erlang, concat_binary, 1) -> @@ -3441,6 +3492,8 @@ arg_types(erlang, exit, 2) -> [t_sup(t_pid(), t_port()), t_any()]; arg_types(erlang, external_size, 1) -> [t_any()]; % takes any term as input +arg_types(erlang, external_size, 2) -> + [t_any(), t_list()]; % takes any term as input and a list of options arg_types(erlang, finish_after_on_load, 2) -> [t_atom(), t_boolean()]; arg_types(erlang, float, 1) -> @@ -3695,6 +3748,7 @@ arg_types(erlang, process_display, 2) -> arg_types(erlang, process_flag, 2) -> [t_sup([t_atom('trap_exit'), t_atom('error_handler'), t_atom('min_heap_size'), t_atom('priority'), t_atom('save_calls'), + t_atom('scheduler'), % undocumented t_atom('monitor_nodes'), % undocumented t_tuple([t_atom('monitor_nodes'), t_list()])]), % undocumented t_sup([t_boolean(), t_atom(), t_non_neg_integer()])]; @@ -3733,7 +3787,7 @@ arg_types(erlang, send, 3) -> arg_types(erlang, send_after, 3) -> [t_non_neg_integer(), t_sup(t_pid(), t_atom()), t_any()]; arg_types(erlang, seq_trace, 2) -> - [t_atom(), t_sup([t_boolean(), t_tuple([t_fixnum(), t_fixnum()]), t_nil()])]; + [t_atom(), t_sup([t_boolean(), t_tuple([t_fixnum(), t_fixnum()]), t_fixnum(), t_nil()])]; arg_types(erlang, seq_trace_info, 1) -> [t_seq_trace_info()]; arg_types(erlang, seq_trace_print, 1) -> @@ -3982,7 +4036,7 @@ arg_types(ets, match_object, 3) -> arg_types(ets, match_spec_compile, 1) -> [t_matchspecs()]; arg_types(ets, match_spec_run_r, 3) -> - [t_matchspecs(), t_any(), t_list()]; + [t_list(t_tuple()),t_matchspecs(), t_list()]; arg_types(ets, member, 2) -> [t_tab(), t_any()]; arg_types(ets, new, 2) -> @@ -4014,8 +4068,12 @@ arg_types(ets, select_reverse, 3) -> arg_types(ets, slot, 2) -> [t_tab(), t_non_neg_fixnum()]; % 2nd arg can be 0 arg_types(ets, setopts, 2) -> - Opt = t_sup(t_tuple([t_atom('heir'), t_pid(), t_any()]), - t_tuple([t_atom('heir'), t_atom('none')])), + Opt = t_sup([t_tuple([t_atom('heir'), t_pid(), t_any()]), + t_tuple([t_atom('heir'), t_atom('none')]), + t_tuple([t_atom('protection'), + t_sup([t_atom('protected'), + t_atom('private'), + t_atom('public')])])]), [t_tab(), t_sup(Opt, t_list(Opt))]; arg_types(ets, update_counter, 3) -> Int = t_integer(), @@ -4807,6 +4865,9 @@ t_ets_info_items() -> t_atom('owner'), t_atom('protection'), t_atom('size'), + t_atom('compressed'), + t_atom('heir'), + t_atom('stats'), t_atom('type')]). %% ===================================================================== diff --git a/lib/hipe/main/hipe.hrl.src b/lib/hipe/main/hipe.hrl.src index a1fbeda9cf..ec55c707ef 100644 --- a/lib/hipe/main/hipe.hrl.src +++ b/lib/hipe/main/hipe.hrl.src @@ -50,9 +50,8 @@ %% Flags: %% DEBUG - Turns on debugging. (Can be defined to a integer %% value to determine the level of debugging) -%% VERBOSE - More info is printed... %% HIPE_LOGGING - Turn on logging of messages with erl_logger. -%% DO_ASSERT - Turn on Assertions. +%% DO_ASSERT - Turn on assertions. %% TIMING - Turn on timing. %% HIPE_INSTRUMENT_COMPILER - Turn on instrumentation of the compiler. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -107,13 +106,9 @@ %% %% Define the exit macro %% --ifdef(VERBOSE). --define(EXIT(Reason), erlang:error({?MODULE,?LINE,Reason})). --else. -define(EXIT(Reason), ?msg("EXITED with reason ~w @~w:~w\n", [Reason,?MODULE,?LINE]), erlang:error({?MODULE,?LINE,Reason})). --endif. %% %% Assertions. diff --git a/lib/inets/src/http_server/httpd_file.erl b/lib/inets/src/http_server/httpd_file.erl index ccc1f7874a..e8a8ab6411 100644 --- a/lib/inets/src/http_server/httpd_file.erl +++ b/lib/inets/src/http_server/httpd_file.erl @@ -33,7 +33,7 @@ handle_error(enotdir, Op, ModData, Path) -> handle_error(404, Op, ModData, Path, ": A component of the file name is not a directory"); handle_error(emfile, Op, _ModData, Path) -> - handle_error(500, Op, none, Path, ": To many open files"); + handle_error(500, Op, none, Path, ": Too many open files"); handle_error({enfile,_}, Op, _ModData, Path) -> handle_error(500, Op, none, Path, ": File table overflow"); handle_error(_Reason, Op, ModData, Path) -> diff --git a/lib/kernel/doc/src/gen_sctp.xml b/lib/kernel/doc/src/gen_sctp.xml index b761b6bd83..cc49090386 100644 --- a/lib/kernel/doc/src/gen_sctp.xml +++ b/lib/kernel/doc/src/gen_sctp.xml @@ -63,14 +63,13 @@ <item><seealso marker="#options">SCTP SOCKET OPTIONS</seealso></item> <item><seealso marker="#examples">SCTP EXAMPLES</seealso></item> <item><seealso marker="#seealso">SEE ALSO</seealso></item> - <item><seealso marker="#authors">AUTHORS</seealso></item> </list> <marker id="types"></marker> </section> <datatypes> <datatype> - <name name="assoc_id"/> + <name><marker id="type-assoc_id">assoc_id()</marker></name> <desc> <p>An opaque term returned in for example #sctp_paddr_change{} that identifies an association for an SCTP socket. The term @@ -80,36 +79,18 @@ </desc> </datatype> <datatype> - <name name="hostname"/> - </datatype> - <datatype> - <name name="ip_address"/> - <desc> - <p>Represents an address of an SCTP socket. - It is a tuple as explained in - <seealso marker="inet">inet(3)</seealso>.</p> - </desc> - </datatype> - <datatype> - <name name="port_number"/> - </datatype> - <datatype> - <name name="posix"/> - <desc> - <p>See <seealso marker="inet#error_codes"> - inet(3); POSIX Error Codes</seealso>.</p> - </desc> - </datatype> - <datatype> - <name name="sctp_option"/> + <name name="option"/> <desc> <p>One of the <seealso marker="#options">SCTP Socket Options.</seealso></p> - <marker id="type-sctp_socket"></marker> </desc> </datatype> <datatype> - <name name="sctp_socket"/> + <name name="option_name"/> + <desc><marker id="type-sctp_socket"></marker></desc> + </datatype> + <datatype> + <name><marker id="type-sctp_socket">sctp_socket()</marker></name> <desc> <p>Socket identifier returned from <c>open/*</c>.</p> <marker id="exports"></marker> @@ -175,8 +156,8 @@ #sctp_assoc_change{ state = atom(), error = atom(), - outbound_streams = int(), - inbound_streams = int(), + outbound_streams = integer(), + inbound_streams = integer(), assoc_id = assoc_id() } </pre> <p>The number of outbound and inbound streams can be set by @@ -300,6 +281,19 @@ The default <c><anno>IP</anno></c> and <c><anno>Port</anno></c> are <c>any</c> and <c>0</c>, meaning bind to all local addresses on any one free port.</p> + + <p>Other options are:</p> + <taglist> + <tag><c>inet6</c></tag> + <item> + <p>Set up the socket for IPv6.</p> + </item> + <tag><c>inet</c></tag> + <item> + <p>Set up the socket for IPv4. This is the default.</p> + </item> + </taglist> + <p>A default set of socket <seealso marker="#options">options</seealso> is used. In particular, the socket is opened in <seealso marker="#option-binary">binary</seealso> and @@ -350,7 +344,7 @@ #sctp_paddr_change{ addr = {ip_address(),port()}, state = atom(), - error = int(), + error = integer(), assoc_id = assoc_id() } </pre> <p>Indicates change of the status of the peer's IP address given by @@ -387,7 +381,7 @@ <pre> #sctp_send_failed{ flags = true | false, - error = int(), + error = integer(), info = #sctp_sndrcvinfo{}, assoc_id = assoc_id() data = binary() @@ -407,7 +401,7 @@ <item> <pre> #sctp_adaptation_event{ - adaptation_ind = int(), + adaptation_ind = integer(), assoc_id = assoc_id() } </pre> <p>Delivered when a peer sends an Adaptation Layer Indication @@ -505,7 +499,7 @@ </list> <marker id="option-buffer"></marker> </item> - <tag><c>{buffer, int()}</c></tag> + <tag><c>{buffer, integer()}</c></tag> <item> <p>Determines the size of the user-level software buffer used by the SCTP driver. Not to be confused with <c>sndbuf</c> @@ -515,7 +509,7 @@ In fact, the <c>val(buffer)</c> is automatically set to the above maximum when <c>sndbuf</c> or <c>recbuf</c> values are set.</p> </item> - <tag><c>{tos, int()}</c></tag> + <tag><c>{tos, integer()}</c></tag> <item> <p>Sets the Type-Of-Service field on the IP datagrams being sent, to the given value, which effectively determines a prioritization @@ -523,7 +517,7 @@ are system-dependent. TODO: we do not provide symbolic names for these values yet.</p> </item> - <tag><c>{priority, int()}</c></tag> + <tag><c>{priority, integer()}</c></tag> <item> <p>A protocol-independent equivalent of <c>tos</c> above. Setting priority implies setting tos as well.</p> @@ -542,7 +536,7 @@ required for high-throughput servers).</p> <marker id="option-linger"></marker> </item> - <tag><c>{linger, {true|false, int()}</c></tag> + <tag><c>{linger, {true|false, integer()}</c></tag> <item> <p>Determines the timeout in seconds for flushing unsent data in the <c>gen_sctp:close/1</c> socket call. If the 1st component of the value @@ -552,14 +546,14 @@ the flushing time-out in seconds.</p> <marker id="option-sndbuf"></marker> </item> - <tag><c>{sndbuf, int()}</c></tag> + <tag><c>{sndbuf, integer()}</c></tag> <item> <p>The size, in bytes, of the *kernel* send buffer for this socket. Sending errors would occur for datagrams larger than <c>val(sndbuf)</c>. Setting this option also adjusts the size of the driver buffer (see <c>buffer</c> above).</p> </item> - <tag><c>{recbuf, int()}</c></tag> + <tag><c>{recbuf, integer()}</c></tag> <item> <p>The size, in bytes, of the *kernel* recv buffer for this socket. Sending errors would occur for datagrams larger than @@ -571,9 +565,9 @@ <pre> #sctp_rtoinfo{ assoc_id = assoc_id(), - initial = int(), - max = int(), - min = int() + initial = integer(), + max = integer(), + min = integer() } </pre> <p>Determines re-transmission time-out parameters, in milliseconds, for the association(s) given by <c>assoc_id</c>. @@ -586,11 +580,11 @@ <pre> #sctp_assocparams{ assoc_id = assoc_id(), - asocmaxrxt = int(), - number_peer_destinations = int(), - peer_rwnd = int(), - local_rwnd = int(), - cookie_life = int() + asocmaxrxt = integer(), + number_peer_destinations = integer(), + peer_rwnd = integer(), + local_rwnd = integer(), + cookie_life = integer() } </pre> <p>Determines association parameters for the association(s) given by <c>assoc_id</c>. <c>assoc_id = 0</c> (default) indicates @@ -601,10 +595,10 @@ <item> <pre> #sctp_initmsg{ - num_ostreams = int(), - max_instreams = int(), - max_attempts = int(), - max_init_timeo = int() + num_ostreams = integer(), + max_instreams = integer(), + max_attempts = integer(), + max_init_timeo = integer() } </pre> <p>Determines the default parameters which this socket attempts to negotiate with its peer while establishing an association with it. @@ -630,10 +624,11 @@ </list> <p></p> </item> - <tag><c>{sctp_autoclose, int()|infinity}</c></tag> + <tag><c>{sctp_autoclose, integer() >= 0}</c></tag> <item> <p>Determines the time (in seconds) after which an idle association is - automatically closed.</p> + automatically closed. <c>0</c> means that the association is + never automatically closed.</p> </item> <tag><c>{sctp_nodelay, true|false}</c></tag> <item> @@ -655,7 +650,7 @@ <p>Turns on|off automatic mapping of IPv4 addresses into IPv6 ones (if the socket address family is AF_INET6).</p> </item> - <tag><c>{sctp_maxseg, int()}</c></tag> + <tag><c>{sctp_maxseg, integer()}</c></tag> <item> <p>Determines the maximum chunk size if message fragmentation is used. If <c>0</c>, the chunk size is limited by the Path MTU only.</p> @@ -693,7 +688,7 @@ <marker id="record-sctp_setadaptation"></marker> <pre> #sctp_setadaptation{ - adaptation_ind = int() + adaptation_ind = integer() } </pre> <p>When set, requests that the local endpoint uses the value given by <c>adaptation_ind</c> as the Adaptation Indication parameter for @@ -707,10 +702,10 @@ #sctp_paddrparams{ assoc_id = assoc_id(), address = {IP, Port}, - hbinterval = int(), - pathmaxrxt = int(), - pathmtu = int(), - sackdelay = int(), + hbinterval = integer(), + pathmaxrxt = integer(), + pathmtu = integer(), + sackdelay = integer(), flags = list() } IP = ip_address() @@ -771,14 +766,14 @@ <marker id="record-sctp_sndrcvinfo"></marker> <pre> #sctp_sndrcvinfo{ - stream = int(), - ssn = int(), + stream = integer(), + ssn = integer(), flags = list(), - ppid = int(), - context = int(), - timetolive = int(), - tsn = int(), - cumtsn = int(), + ppid = integer(), + context = integer(), + timetolive = integer(), + tsn = integer(), + cumtsn = integer(), assoc_id = assoc_id() } </pre> <p><c>#sctp_sndrcvinfo{}</c> is used both in this socket option, and as @@ -853,7 +848,7 @@ <pre> #sctp_assoc_value{ assoc_id = assoc_id(), - assoc_value = int() + assoc_value = integer() } </pre> <p>Rarely used. Determines the ACK time (given by <c>assoc_value</c> in milliseconds) for @@ -866,12 +861,12 @@ #sctp_status{ assoc_id = assoc_id(), state = atom(), - rwnd = int(), - unackdata = int(), - penddata = int(), - instrms = int(), - outstrms = int(), - fragmentation_point = int(), + rwnd = integer(), + unackdata = integer(), + penddata = integer(), + instrms = integer(), + outstrms = integer(), + fragmentation_point = integer(), primary = #sctp_paddrinfo{} } </pre> <p>This option is read-only. It determines the status of @@ -946,10 +941,10 @@ assoc_id = assoc_id(), address = {IP, Port}, state = inactive | active, - cwnd = int(), - srtt = int(), - rto = int(), - mtu = int() + cwnd = integer(), + srtt = integer(), + rto = integer(), + mtu = integer() } IP = ip_address() Port = port_number() </pre> @@ -1119,7 +1114,6 @@ client_loop(S, Peer1, Port1, AssocId1, Peer2, Port2, AssocId2) -> <seealso marker="gen_udp">gen_udp(3)</seealso>, <url href="http://www.rfc-archive.org/getrfc.php?rfc=2960">RFC2960</url> (Stream Control Transmission Protocol), <url href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets API Extensions for SCTP.</url></p> - <marker id="authors"></marker> </section> </erlref> diff --git a/lib/kernel/doc/src/gen_tcp.xml b/lib/kernel/doc/src/gen_tcp.xml index ebd822359a..8a5d40bb16 100644 --- a/lib/kernel/doc/src/gen_tcp.xml +++ b/lib/kernel/doc/src/gen_tcp.xml @@ -65,25 +65,16 @@ do_recv(Sock, Bs) -> <datatypes> <datatype> - <name name="hostname"/> + <name name="option"/> </datatype> <datatype> - <name name="ip_address"/> - <desc> - <p>Represents an address of a TCP socket. - It is a tuple as explained in - <seealso marker="inet">inet(3)</seealso>.</p> - </desc> + <name name="option_name"/> </datatype> <datatype> - <name name="port_number"/> + <name name="connect_option"/> </datatype> <datatype> - <name name="posix"/> - <desc> - <p>See <seealso marker="inet#error_codes"> - inet(3); POSIX Error Codes</seealso>.</p> - </desc> + <name name="listen_option"/> </datatype> <datatype> <name><marker id="type-socket">socket()</marker></name> @@ -122,7 +113,7 @@ do_recv(Sock, Bs) -> <item> <p>Specify which local port number to use.</p> </item> - <tag><c>{fd, int()}</c></tag> + <tag><c>{fd, integer() >= 0}</c></tag> <item> <p>If a socket has somehow been connected without using <c>gen_tcp</c>, use this option to pass the file @@ -196,6 +187,10 @@ do_recv(Sock, Bs) -> <p>If the host has several network interfaces, this option specifies which one to listen on.</p> </item> + <tag><c>{port, Port}</c></tag> + <item> + <p>Specify which local port number to use.</p> + </item> <tag><c>{fd, Fd}</c></tag> <item> <p>If a socket has somehow been connected without using diff --git a/lib/kernel/doc/src/gen_udp.xml b/lib/kernel/doc/src/gen_udp.xml index c0e783f508..daa9b7d887 100644 --- a/lib/kernel/doc/src/gen_udp.xml +++ b/lib/kernel/doc/src/gen_udp.xml @@ -36,25 +36,10 @@ <datatypes> <datatype> - <name name="hostname"/> + <name name="option"/> </datatype> <datatype> - <name name="ip_address"/> - <desc> - <p>Represents an address of a TCP socket. - It is a tuple as explained in - <seealso marker="inet">inet(3)</seealso>.</p> - </desc> - </datatype> - <datatype> - <name name="port_number"/> - </datatype> - <datatype> - <name name="posix"/> - <desc> - <p>See <seealso marker="inet#error_codes"> - inet(3); POSIX Error Codes</seealso>.</p> - </desc> + <name name="option_name"/> </datatype> <datatype> <name><marker id="type-socket">socket()</marker></name> @@ -87,7 +72,7 @@ <p>If the host has several network interfaces, this option specifies which one to use.</p> </item> - <tag><c>{fd, int()}</c></tag> + <tag><c>{fd, integer() >= 0}</c></tag> <item> <p>If a socket has somehow been opened without using <c>gen_udp</c>, use this option to pass the file diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml index fd843b00d9..fad5af85bb 100644 --- a/lib/kernel/doc/src/inet.xml +++ b/lib/kernel/doc/src/inet.xml @@ -105,6 +105,9 @@ fe80::204:acff:fe17:bf38 <name name="ip6_address"/> </datatype> <datatype> + <name name="port_number"/> + </datatype> + <datatype> <name name="posix"/> <desc><p>An atom which is named from the Posix error codes used in Unix, and in the runtime libraries of most @@ -119,7 +122,7 @@ fe80::204:acff:fe17:bf38 </desc> </datatype> <datatype> - <name name="family_option"/> + <name name="address_family"/> </datatype> </datatypes> @@ -250,26 +253,15 @@ fe80::204:acff:fe17:bf38 </func> <func> - <name>getopts(Socket, Options) -> {ok, OptionValues} | {error, posix()}</name> + <name name="getopts" arity="2"/> <fsummary>Get one or more options for a socket</fsummary> - <type> - <v>Socket = term()</v> - <v>Options = [Opt | RawOptReq]</v> - <v>Opt = atom()</v> - <v>RawOptReq = {raw, Protocol, OptionNum, ValueSpec}</v> - <v>Protocol = integer()</v> - <v>OptionNum = integer()</v> - <v>ValueSpec = ValueSize | ValueBin</v> - <v>ValueSize = integer()</v> - <v>ValueBin = binary()</v> - <v>OptionValues = [{Opt, Val} | {raw, Protocol, OptionNum, ValueBin}]</v> - </type> <type name="socket_getopt"/> + <type name="socket_setopt"/> <desc> <p>Gets one or more options for a socket. See <seealso marker="#setopts/2">setopts/2</seealso> for a list of available options.</p> - <p>The number of elements in the returned <c>OptionValues</c> + <p>The number of elements in the returned <c><anno>OptionValues</anno></c> list does not necessarily correspond to the number of options asked for. If the operating system fails to support an option, it is simply left out in the returned list. An error tuple is only @@ -277,12 +269,12 @@ fe80::204:acff:fe17:bf38 (i.e. the socket is closed or the buffer size in a raw request is too large). This behavior is kept for backward compatibility reasons.</p> - <p>A <c>RawOptReq</c> can be used to get information about + <p>A raw option request <c>RawOptReq = {raw, Protocol, OptionNum, ValueSpec}</c> can be used to get information about socket options not (explicitly) supported by the emulator. The use of raw socket options makes the code non portable, but allows the Erlang programmer to take advantage of unusual features present on the current platform.</p> - <p>The <c>RawOptReq</c> consists of the tag <c>raw</c> followed + <p>The <c>RawOptReq</c> consists of the tag <c>raw</c> followed by the protocol level, the option number and either a binary or the size, in bytes, of the buffer in which the option value is to be stored. A binary @@ -325,19 +317,14 @@ fe80::204:acff:fe17:bf38 </func> <func> - <name>getstat(Socket)</name> - <name>getstat(Socket, Options) -> {ok, OptionValues} | {error, posix()}</name> + <name name="getstat" arity="1"/> + <name name="getstat" arity="2"/> <fsummary>Get one or more statistic options for a socket</fsummary> - <type> - <v>Socket = term()</v> - <v>Options = [Opt]</v> - <v>OptionValues = [{Opt, Val}]</v> - <v> Opt, Val -- see below</v> - </type> + <type name="stat_option"/> <desc> <p>Gets one or more statistic options for a socket.</p> - <p><c>getstat(Socket)</c> is equivalent to - <c>getstat(Socket, [recv_avg, recv_cnt, recv_dvi, recv_max, recv_oct, send_avg, send_cnt, send_dvi, send_max, send_oct])</c></p> + <p><c>getstat(<anno>Socket</anno>)</c> is equivalent to + <c>getstat(<anno>Socket</anno>, [recv_avg, recv_cnt, recv_dvi, recv_max, recv_oct, send_avg, send_cnt, send_dvi, send_max, send_oct])</c></p> <p>The following options are available:</p> <taglist> <tag><c>recv_avg</c></tag> @@ -394,12 +381,8 @@ fe80::204:acff:fe17:bf38 </desc> </func> <func> - <name>port(Socket) -> {ok, Port} | {error, any()}</name> + <name name="port" arity="1"/> <fsummary>Return the local port number for a socket</fsummary> - <type> - <v>Socket = socket()</v> - <v>Port = integer()</v> - </type> <desc> <p>Returns the local port number for a socket.</p> </desc> @@ -412,16 +395,9 @@ fe80::204:acff:fe17:bf38 </desc> </func> <func> - <name>setopts(Socket, Options) -> ok | {error, posix()}</name> + <name name="setopts" arity="2"/> <fsummary>Set one or more options for a socket</fsummary> - <type> - <v>Socket = term()</v> - <v>Options = [{Opt, Val} | {raw, Protocol, Option, ValueBin}]</v> - <v>Protocol = integer()</v> - <v>OptionNum = integer()</v> - <v>ValueBin = binary()</v> - <v> Opt, Val -- see below</v> - </type> + <type name="socket_setopt"/> <desc> <p>Sets one or more options for a socket. The following options are available:</p> @@ -579,8 +555,14 @@ fe80::204:acff:fe17:bf38 mode will return <c>{ok, HttpPacket}</c> from <c>gen_tcp:recv</c> while an active socket will send messages like <c>{http, Socket, HttpPacket}</c>.</p> - <p>Note that the packet type <c>httph</c> is not - needed when reading from a socket.</p> + </item> + <tag><c>httph | httph_bin</c></tag> + <item> + <p>These two types are often not needed as the socket will + automatically switch from <c>http</c>/<c>http_bin</c> to + <c>httph</c>/<c>httph_bin</c> internally after the first line + has been read. There might be occasions however when they are + useful, such as parsing trailers from chunked encoding.</p> </item> </taglist> </item> diff --git a/lib/kernel/src/code_server.erl b/lib/kernel/src/code_server.erl index 4a1fc7df34..85bbff9cc3 100644 --- a/lib/kernel/src/code_server.erl +++ b/lib/kernel/src/code_server.erl @@ -1379,8 +1379,12 @@ absname_vr([[X, $:]|Name], _, _AbsBase) -> %% Kill all processes running code from *old* Module, and then purge the %% module. Return true if any processes killed, else false. -do_purge(Mod) -> - do_purge(processes(), to_atom(Mod), false). +do_purge(Mod0) -> + Mod = to_atom(Mod0), + case erlang:check_old_code(Mod) of + false -> false; + true -> do_purge(processes(), Mod, false) + end. do_purge([P|Ps], Mod, Purged) -> case erlang:check_process_code(P, Mod) of @@ -1399,16 +1403,19 @@ do_purge([], Mod, Purged) -> Purged. %% do_soft_purge(Module) -%% Purge old code only if no procs remain that run old code +%% Purge old code only if no procs remain that run old code. %% Return true in that case, false if procs remain (in this %% case old code is not purged) do_soft_purge(Mod) -> - catch do_soft_purge(processes(), Mod). + case erlang:check_old_code(Mod) of + false -> true; + true -> do_soft_purge(processes(), Mod) + end. do_soft_purge([P|Ps], Mod) -> case erlang:check_process_code(P, Mod) of - true -> throw(false); + true -> false; false -> do_soft_purge(Ps, Mod) end; do_soft_purge([], Mod) -> diff --git a/lib/kernel/src/gen_sctp.erl b/lib/kernel/src/gen_sctp.erl index 004f03f231..6cebb7ab97 100644 --- a/lib/kernel/src/gen_sctp.erl +++ b/lib/kernel/src/gen_sctp.erl @@ -33,55 +33,85 @@ -export([error_string/1]). -export([controlling_process/2]). --opaque assoc_id() :: term(). --type hostname() :: inet:hostname(). --type ip_address() :: inet:ip_address(). --type port_number() :: 0..65535. --type posix() :: inet:posix(). --type sctp_option() :: - {mode, list | binary} | list | binary - | {active, true | false | once} - | {buffer, non_neg_integer()} - | {tos, integer()} - | {priority, integer()} - | {dontroute, boolean()} - | {reuseaddr, boolean()} - | {linger, {boolean(), non_neg_integer()}} - | {sndbuf, non_neg_integer()} - | {recbuf, non_neg_integer()} - | {sctp_rtoinfo, #sctp_rtoinfo{}} - | {sctp_associnfo, #sctp_assocparams{}} - | {sctp_initmsg, #sctp_initmsg{}} - | {sctp_autoclose, timeout()} - | {sctp_nodelay, boolean()} - | {sctp_disable_fragments, boolean()} - | {sctp_i_want_mapped_v4_addr, boolean()} - | {sctp_maxseg, non_neg_integer()} - | {sctp_primary_addr, #sctp_prim{}} - | {sctp_set_peer_primary_addr, #sctp_setpeerprim{}} - | {sctp_adaptation_layer, #sctp_setadaptation{}} - | {sctp_peer_addr_params, #sctp_paddrparams{}} - | {sctp_default_send_param, #sctp_sndrcvinfo{}} - | {sctp_events, #sctp_event_subscribe{}} - | {sctp_delayed_ack_time, #sctp_assoc_value{}} - | {sctp_status, #sctp_status{}} - | {sctp_get_peer_addr_info, #sctp_paddrinfo{}}. --opaque sctp_socket() :: port(). - --spec open() -> {ok, Socket} | {error, posix()} when +-type assoc_id() :: term(). +-type option() :: + {active, true | false | once} | + {buffer, non_neg_integer()} | + {dontroute, boolean()} | + {linger, {boolean(), non_neg_integer()}} | + {mode, list | binary} | list | binary | + {priority, non_neg_integer()} | + {recbuf, non_neg_integer()} | + {reuseaddr, boolean()} | + {sctp_adaptation_layer, #sctp_setadaptation{}} | + {sctp_associnfo, #sctp_assocparams{}} | + {sctp_autoclose, non_neg_integer()} | + {sctp_default_send_param, #sctp_sndrcvinfo{}} | + {sctp_delayed_ack_time, #sctp_assoc_value{}} | + {sctp_disable_fragments, boolean()} | + {sctp_events, #sctp_event_subscribe{}} | + {sctp_get_peer_addr_info, #sctp_paddrinfo{}} | + {sctp_i_want_mapped_v4_addr, boolean()} | + {sctp_initmsg, #sctp_initmsg{}} | + {sctp_maxseg, non_neg_integer()} | + {sctp_nodelay, boolean()} | + {sctp_peer_addr_params, #sctp_paddrparams{}} | + {sctp_primary_addr, #sctp_prim{}} | + {sctp_rtoinfo, #sctp_rtoinfo{}} | + {sctp_set_peer_primary_addr, #sctp_setpeerprim{}} | + {sctp_status, #sctp_status{}} | + {sndbuf, non_neg_integer()} | + {tos, non_neg_integer()}. +-type option_name() :: + active | + buffer | + dontroute | + linger | + mode | + priority | + recbuf | + reuseaddr | + sctp_adaptation_layer | + sctp_associnfo | + sctp_autoclose | + sctp_default_send_param | + sctp_delayed_ack_time | + sctp_disable_fragments | + sctp_events | + sctp_get_peer_addr_info | + sctp_i_want_mapped_v4_addr | + sctp_initmsg | + sctp_maxseg | + sctp_nodelay | + sctp_peer_addr_params | + sctp_primary_addr | + sctp_rtoinfo | + sctp_set_peer_primary_addr | + sctp_status | + sndbuf | + tos. +-type sctp_socket() :: port(). + +-export_type([assoc_id/0, option/0, option_name/0, sctp_socket/0]). + +-spec open() -> {ok, Socket} | {error, inet:posix()} when Socket :: sctp_socket(). open() -> open([]). --spec open(Port) -> {ok, Socket} | {error, posix()} when - Port :: port_number(), +-spec open(Port) -> {ok, Socket} | {error, inet:posix()} when + Port :: inet:port_number(), Socket :: sctp_socket(); - (Opts) -> {ok, Socket} | {error, posix()} when + (Opts) -> {ok, Socket} | {error, inet:posix()} when Opts :: [Opt], - Opt :: {ip,IP} | {ifaddr,IP} | {port,Port} | sctp_option(), - IP :: ip_address() | any | loopback, - Port :: port_number(), + Opt :: {ip,IP} + | {ifaddr,IP} + | inet:address_family() + | {port,Port} + | option(), + IP :: inet:ip_address() | any | loopback, + Port :: inet:port_number(), Socket :: sctp_socket(). open(Opts) when is_list(Opts) -> @@ -98,11 +128,15 @@ open(Port) when is_integer(Port) -> open(X) -> erlang:error(badarg, [X]). --spec open(Port, Opts) -> {ok, Socket} | {error, posix()} when +-spec open(Port, Opts) -> {ok, Socket} | {error, inet:posix()} when Opts :: [Opt], - Opt :: {ip,IP} | {ifaddr,IP} | {port,Port} | sctp_option(), - IP :: ip_address() | any | loopback, - Port :: port_number(), + Opt :: {ip,IP} + | {ifaddr,IP} + | inet:address_family() + | {port,Port} + | option(), + IP :: inet:ip_address() | any | loopback, + Port :: inet:port_number(), Socket :: sctp_socket(). open(Port, Opts) when is_integer(Port), is_list(Opts) -> @@ -110,7 +144,7 @@ open(Port, Opts) when is_integer(Port), is_list(Opts) -> open(Port, Opts) -> erlang:error(badarg, [Port,Opts]). --spec close(Socket) -> ok | {error, posix()} when +-spec close(Socket) -> ok | {error, inet:posix()} when Socket :: sctp_socket(). close(S) when is_port(S) -> @@ -138,22 +172,22 @@ listen(S, Flag) when is_port(S), is_boolean(Flag) -> listen(S, Flag) -> erlang:error(badarg, [S,Flag]). --spec connect(Socket, Addr, Port, Opts) -> {ok, Assoc} | {error, posix()} when +-spec connect(Socket, Addr, Port, Opts) -> {ok, Assoc} | {error, inet:posix()} when Socket :: sctp_socket(), - Addr :: ip_address() | hostname(), - Port :: port_number(), - Opts :: [Opt :: sctp_option()], + Addr :: inet:ip_address() | inet:hostname(), + Port :: inet:port_number(), + Opts :: [Opt :: option()], Assoc :: #sctp_assoc_change{}. connect(S, Addr, Port, Opts) -> connect(S, Addr, Port, Opts, infinity). -spec connect(Socket, Addr, Port, Opts, Timeout) -> - {ok, Assoc} | {error, posix()} when + {ok, Assoc} | {error, inet:posix()} when Socket :: sctp_socket(), - Addr :: ip_address() | hostname(), - Port :: port_number(), - Opts :: [Opt :: sctp_option()], + Addr :: inet:ip_address() | inet:hostname(), + Port :: inet:port_number(), + Opts :: [Opt :: option()], Timeout :: timeout(), Assoc :: #sctp_assoc_change{}. @@ -166,21 +200,21 @@ connect(S, Addr, Port, Opts, Timeout) -> end. -spec connect_init(Socket, Addr, Port, Opts) -> - ok | {error, posix()} when + ok | {error, inet:posix()} when Socket :: sctp_socket(), - Addr :: ip_address() | hostname(), - Port :: port_number(), - Opts :: [sctp_option()]. + Addr :: inet:ip_address() | inet:hostname(), + Port :: inet:port_number(), + Opts :: [option()]. connect_init(S, Addr, Port, Opts) -> connect_init(S, Addr, Port, Opts, infinity). -spec connect_init(Socket, Addr, Port, Opts, Timeout) -> - ok | {error, posix()} when + ok | {error, inet:posix()} when Socket :: sctp_socket(), - Addr :: ip_address() | hostname(), - Port :: port_number(), - Opts :: [sctp_option()], + Addr :: inet:ip_address() | inet:hostname(), + Port :: inet:port_number(), + Opts :: [option()], Timeout :: timeout(). connect_init(S, Addr, Port, Opts, Timeout) -> @@ -232,7 +266,7 @@ eof(S, #sctp_assoc_change{assoc_id=AssocId}) when is_port(S) -> eof(S, Assoc) -> erlang:error(badarg, [S,Assoc]). --spec abort(Socket, Assoc) -> ok | {error, posix()} when +-spec abort(Socket, Assoc) -> ok | {error, inet:posix()} when Socket :: sctp_socket(), Assoc :: #sctp_assoc_change{}. @@ -294,13 +328,13 @@ send(S, AssocChange, Stream, Data) -> -spec recv(Socket) -> {ok, {FromIP, FromPort, AncData, Data}} | {error, Reason} when Socket :: sctp_socket(), - FromIP :: ip_address(), - FromPort :: port_number(), + FromIP :: inet:ip_address(), + FromPort :: inet:port_number(), AncData :: [#sctp_sndrcvinfo{}], Data :: binary() | string() | #sctp_sndrcvinfo{} | #sctp_assoc_change{} | #sctp_paddr_change{} | #sctp_adaptation_event{}, - Reason :: posix() | #sctp_send_failed{} | #sctp_paddr_change{} + Reason :: inet:posix() | #sctp_send_failed{} | #sctp_paddr_change{} | #sctp_pdapi_event{} | #sctp_remote_error{} | #sctp_shutdown_event{}. @@ -311,13 +345,13 @@ recv(S) -> | {error, Reason} when Socket :: sctp_socket(), Timeout :: timeout(), - FromIP :: ip_address(), - FromPort :: port_number(), + FromIP :: inet:ip_address(), + FromPort :: inet:port_number(), AncData :: [#sctp_sndrcvinfo{}], Data :: binary() | string() | #sctp_sndrcvinfo{} | #sctp_assoc_change{} | #sctp_paddr_change{} | #sctp_adaptation_event{}, - Reason :: posix() | #sctp_send_failed{} | #sctp_paddr_change{} + Reason :: inet:posix() | #sctp_send_failed{} | #sctp_paddr_change{} | #sctp_pdapi_event{} | #sctp_remote_error{} | #sctp_shutdown_event{}. diff --git a/lib/kernel/src/gen_tcp.erl b/lib/kernel/src/gen_tcp.erl index bee61ca84a..8ab18c01b4 100644 --- a/lib/kernel/src/gen_tcp.erl +++ b/lib/kernel/src/gen_tcp.erl @@ -28,34 +28,108 @@ -include("inet_int.hrl"). --type hostname() :: inet:hostname(). --type ip_address() :: inet:ip_address(). --type port_number() :: 0..65535. --type posix() :: inet:posix(). +-type option() :: + {active, true | false | once} | + {bit8, clear | set | on | off} | + {buffer, non_neg_integer()} | + {delay_send, boolean()} | + {deliver, port | term} | + {dontroute, boolean()} | + {exit_on_close, boolean()} | + {header, non_neg_integer()} | + {high_watermark, non_neg_integer()} | + {keepalive, boolean()} | + {linger, {boolean(), non_neg_integer()}} | + {low_watermark, non_neg_integer()} | + {mode, list | binary} | list | binary | + {nodelay, boolean()} | + {packet, + 0 | 1 | 2 | 4 | raw | sunrm | asn1 | + cdr | fcgi | line | tpkt | http | httph | http_bin | httph_bin } | + {packet_size, non_neg_integer()} | + {priority, non_neg_integer()} | + {raw, + Protocol :: non_neg_integer(), + OptionNum :: non_neg_integer(), + ValueBin :: binary()} | + {recbuf, non_neg_integer()} | + {reuseaddr, boolean()} | + {send_timeout, non_neg_integer() | infinity} | + {send_timeout_close, boolean()} | + {sndbuf, non_neg_integer()} | + {tos, non_neg_integer()}. +-type option_name() :: + active | + bit8 | + buffer | + delay_send | + deliver | + dontroute | + exit_on_close | + header | + high_watermark | + keepalive | + linger | + low_watermark | + mode | + nodelay | + packet | + packet_size | + priority | + {raw, + Protocol :: non_neg_integer(), + OptionNum :: non_neg_integer(), + ValueSpec :: (ValueSize :: non_neg_integer()) | + (ValueBin :: binary())} | + recbuf | + reuseaddr | + send_timeout | + send_timeout_close | + sndbuf | + tos. +-type connect_option() :: + {ip, inet:ip_address()} | + {fd, Fd :: non_neg_integer()} | + {ifaddr, inet:ip_address()} | + inet:address_family() | + {port, inet:port_number()} | + {tcp_module, module()} | + option(). +-type listen_option() :: + {ip, inet:ip_address()} | + {fd, Fd :: non_neg_integer()} | + {ifaddr, inet:ip_address()} | + inet:address_family() | + {port, inet:port_number()} | + {backlog, B :: non_neg_integer()} | + {tcp_module, module()} | + option(). -type socket() :: port(). +-export_type([option/0, option_name/0, connect_option/0, listen_option/0]). + %% %% Connect a socket %% -spec connect(Address, Port, Options) -> {ok, Socket} | {error, Reason} when - Address :: ip_address() | hostname(), - Port :: port_number(), - Options :: [Opt :: term()], + Address :: inet:ip_address() | inet:hostname(), + Port :: inet:port_number(), + Options :: [connect_option()], Socket :: socket(), - Reason :: posix(). + Reason :: inet:posix(). connect(Address, Port, Opts) -> connect(Address,Port,Opts,infinity). -spec connect(Address, Port, Options, Timeout) -> {ok, Socket} | {error, Reason} when - Address :: ip_address() | hostname(), - Port :: port_number(), - Options :: [Opt :: term()], + Address :: inet:ip_address() | inet:hostname(), + Port :: inet:port_number(), + Options :: [connect_option()], Timeout :: timeout(), Socket :: socket(), - Reason :: posix(). + Reason :: inet:posix(). connect(Address, Port, Opts, Time) -> Timer = inet:start_timer(Time), @@ -97,10 +171,10 @@ try_connect([], _Port, _Opts, _Timer, _Mod, Err) -> %% -spec listen(Port, Options) -> {ok, ListenSocket} | {error, Reason} when - Port :: port_number(), - Options :: [Opt :: term()], + Port :: inet:port_number(), + Options :: [listen_option()], ListenSocket :: socket(), - Reason :: posix(). + Reason :: inet:posix(). listen(Port, Opts) -> Mod = mod(Opts, undefined), @@ -119,7 +193,7 @@ listen(Port, Opts) -> -spec accept(ListenSocket) -> {ok, Socket} | {error, Reason} when ListenSocket :: socket(), Socket :: socket(), - Reason :: closed | timeout | posix(). + Reason :: closed | timeout | inet:posix(). accept(S) -> case inet_db:lookup_socket(S) of @@ -133,7 +207,7 @@ accept(S) -> ListenSocket :: socket(), Timeout :: timeout(), Socket :: socket(), - Reason :: closed | timeout | posix(). + Reason :: closed | timeout | inet:posix(). accept(S, Time) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -150,7 +224,7 @@ accept(S, Time) when is_port(S) -> -spec shutdown(Socket, How) -> ok | {error, Reason} when Socket :: socket(), How :: read | write | read_write, - Reason :: posix(). + Reason :: inet:posix(). shutdown(S, How) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -176,8 +250,8 @@ close(S) -> -spec send(Socket, Packet) -> ok | {error, Reason} when Socket :: socket(), - Packet :: string() | binary(), - Reason :: posix(). + Packet :: iodata(), + Reason :: inet:posix(). send(S, Packet) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -195,7 +269,7 @@ send(S, Packet) when is_port(S) -> Socket :: socket(), Length :: non_neg_integer(), Packet :: string() | binary() | HttpPacket, - Reason :: closed | posix(), + Reason :: closed | inet:posix(), HttpPacket :: term(). recv(S, Length) when is_port(S) -> @@ -211,7 +285,7 @@ recv(S, Length) when is_port(S) -> Length :: non_neg_integer(), Timeout :: timeout(), Packet :: string() | binary() | HttpPacket, - Reason :: closed | posix(), + Reason :: closed | inet:posix(), HttpPacket :: term(). recv(S, Length, Time) when is_port(S) -> @@ -237,7 +311,7 @@ unrecv(S, Data) when is_port(S) -> -spec controlling_process(Socket, Pid) -> ok | {error, Reason} when Socket :: socket(), Pid :: pid(), - Reason :: closed | not_owner | posix(). + Reason :: closed | not_owner | inet:posix(). controlling_process(S, NewOwner) -> case inet_db:lookup_socket(S) of diff --git a/lib/kernel/src/gen_udp.erl b/lib/kernel/src/gen_udp.erl index 7d14615c04..8688799ae9 100644 --- a/lib/kernel/src/gen_udp.erl +++ b/lib/kernel/src/gen_udp.erl @@ -25,25 +25,74 @@ -include("inet_int.hrl"). --type hostname() :: inet:hostname(). --type ip_address() :: inet:ip_address(). --type port_number() :: 0..65535. --type posix() :: inet:posix(). +-type option() :: + {active, true | false | once} | + {add_membership, {inet:ip_address(), inet:ip_address()}} | + {broadcast, boolean()} | + {buffer, non_neg_integer()} | + {deliver, port | term} | + {dontroute, boolean()} | + {drop_membership, {inet:ip_address(), inet:ip_address()}} | + {header, non_neg_integer()} | + {mode, list | binary} | list | binary | + {multicast_if, inet:ip_address()} | + {multicast_loop, boolean()} | + {multicast_ttl, non_neg_integer()} | + {priority, non_neg_integer()} | + {raw, + Protocol :: non_neg_integer(), + OptionNum :: non_neg_integer(), + ValueBin :: binary()} | + {read_packets, non_neg_integer()} | + {recbuf, non_neg_integer()} | + {reuseaddr, boolean()} | + {sndbuf, non_neg_integer()} | + {tos, non_neg_integer()}. +-type option_name() :: + active | + broadcast | + buffer | + deliver | + dontroute | + header | + mode | + multicast_if | + multicast_loop | + multicast_ttl | + priority | + {raw, + Protocol :: non_neg_integer(), + OptionNum :: non_neg_integer(), + ValueSpec :: (ValueSize :: non_neg_integer()) | + (ValueBin :: binary())} | + read_packets | + recbuf | + reuseaddr | + sndbuf | + tos. -type socket() :: port(). +-export_type([option/0, option_name/0]). + -spec open(Port) -> {ok, Socket} | {error, Reason} when - Port :: port_number(), + Port :: inet:port_number(), Socket :: socket(), - Reason :: posix(). + Reason :: inet:posix(). open(Port) -> open(Port, []). -spec open(Port, Opts) -> {ok, Socket} | {error, Reason} when - Port :: port_number(), - Opts :: [Opt :: term()], + Port :: inet:port_number(), + Opts :: [Option], + Option :: {ip, inet:ip_address()} + | {fd, non_neg_integer()} + | {ifaddr, inet:ip_address()} + | inet:address_family() + | {port, inet:port_number()} + | option(), Socket :: socket(), - Reason :: posix(). + Reason :: inet:posix(). open(Port, Opts) -> Mod = mod(Opts, undefined), @@ -58,10 +107,10 @@ close(S) -> -spec send(Socket, Address, Port, Packet) -> ok | {error, Reason} when Socket :: socket(), - Address :: ip_address() | hostname(), - Port :: port_number(), - Packet :: string() | binary(), - Reason :: not_owner | posix(). + Address :: inet:ip_address() | inet:hostname(), + Port :: inet:port_number(), + Packet :: iodata(), + Reason :: not_owner | inet:posix(). send(S, Address, Port, Packet) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -92,10 +141,10 @@ send(S, Packet) when is_port(S) -> {ok, {Address, Port, Packet}} | {error, Reason} when Socket :: socket(), Length :: non_neg_integer(), - Address :: ip_address(), - Port :: port_number(), + Address :: inet:ip_address(), + Port :: inet:port_number(), Packet :: string() | binary(), - Reason :: not_owner | posix(). + Reason :: not_owner | inet:posix(). recv(S,Len) when is_port(S), is_integer(Len) -> case inet_db:lookup_socket(S) of @@ -110,10 +159,10 @@ recv(S,Len) when is_port(S), is_integer(Len) -> Socket :: socket(), Length :: non_neg_integer(), Timeout :: timeout(), - Address :: ip_address(), - Port :: port_number(), + Address :: inet:ip_address(), + Port :: inet:port_number(), Packet :: string() | binary(), - Reason :: not_owner | posix(). + Reason :: not_owner | inet:posix(). recv(S,Len,Time) when is_port(S) -> case inet_db:lookup_socket(S) of diff --git a/lib/kernel/src/inet.erl b/lib/kernel/src/inet.erl index 5649188c38..48a6f3db65 100644 --- a/lib/kernel/src/inet.erl +++ b/lib/kernel/src/inet.erl @@ -63,8 +63,9 @@ %% timer interface -export([start_timer/1, timeout/1, timeout/2, stop_timer/1]). --export_type([family_option/0, hostent/0, hostname/0, ip4_address/0, - ip6_address/0, ip_address/0, posix/0, socket/0]). +-export_type([address_family/0, hostent/0, hostname/0, ip4_address/0, + ip6_address/0, ip_address/0, posix/0, socket/0, + port_number/0]). %% imports -import(lists, [append/1, duplicate/2, filter/2, foldl/3]). @@ -87,98 +88,15 @@ -type ip6_address() :: {0..65535,0..65535,0..65535,0..65535, 0..65535,0..65535,0..65535,0..65535}. -type ip_address() :: ip4_address() | ip6_address(). --type ip_port() :: 0..65535. +-type port_number() :: 0..65535. -type posix() :: exbadport | exbadseq | file:posix(). -type socket() :: port(). -type socket_setopt() :: - {'raw', non_neg_integer(), non_neg_integer(), binary()} | - %% TCP/UDP options - {'reuseaddr', boolean()} | - {'keepalive', boolean()} | - {'dontroute', boolean()} | - {'linger', {boolean(), non_neg_integer()}} | - {'broadcast', boolean()} | - {'sndbuf', non_neg_integer()} | - {'recbuf', non_neg_integer()} | - {'priority', non_neg_integer()} | - {'tos', non_neg_integer()} | - {'nodelay', boolean()} | - {'multicast_ttl', non_neg_integer()} | - {'multicast_loop', boolean()} | - {'multicast_if', ip_address()} | - {'add_membership', {ip_address(), ip_address()}} | - {'drop_membership', {ip_address(), ip_address()}} | - {'header', non_neg_integer()} | - {'buffer', non_neg_integer()} | - {'active', boolean() | 'once'} | - {'packet', - 0 | 1 | 2 | 4 | 'raw' | 'sunrm' | 'asn1' | - 'cdr' | 'fcgi' | 'line' | 'tpkt' | 'http' | 'httph' | 'http_bin' | 'httph_bin' } | - {'mode', 'list' | 'binary'} | - {'port', 'port', 'term'} | - {'exit_on_close', boolean()} | - {'low_watermark', non_neg_integer()} | - {'high_watermark', non_neg_integer()} | - {'bit8', 'clear' | 'set' | 'on' | 'off'} | - {'send_timeout', non_neg_integer() | 'infinity'} | - {'send_timeout_close', boolean()} | - {'delay_send', boolean()} | - {'packet_size', non_neg_integer()} | - {'read_packets', non_neg_integer()} | - %% SCTP options - {'sctp_rtoinfo', #sctp_rtoinfo{}} | - {'sctp_associnfo', #sctp_assocparams{}} | - {'sctp_initmsg', #sctp_initmsg{}} | - {'sctp_nodelay', boolean()} | - {'sctp_autoclose', non_neg_integer()} | - {'sctp_disable_fragments', boolean()} | - {'sctp_i_want_mapped_v4_addr', boolean()} | - {'sctp_maxseg', non_neg_integer()} | - {'sctp_primary_addr', #sctp_prim{}} | - {'sctp_set_peer_primary_addr', #sctp_setpeerprim{}} | - {'sctp_adaptation_layer', #sctp_setadaptation{}} | - {'sctp_peer_addr_params', #sctp_paddrparams{}} | - {'sctp_default_send_param', #sctp_sndrcvinfo{}} | - {'sctp_events', #sctp_event_subscribe{}} | - {'sctp_delayed_ack_time', #sctp_assoc_value{}}. + gen_sctp:option() | gen_tcp:option() | gen_udp:option(). -type socket_getopt() :: - {'raw', - non_neg_integer(), non_neg_integer(), binary()|non_neg_integer()} | - %% TCP/UDP options - 'reuseaddr' | 'keepalive' | 'dontroute' | 'linger' | - 'broadcast' | 'sndbuf' | 'recbuf' | 'priority' | 'tos' | 'nodelay' | - 'multicast_ttl' | 'multicast_loop' | 'multicast_if' | - 'add_membership' | 'drop_membership' | - 'header' | 'buffer' | 'active' | 'packet' | 'mode' | 'port' | - 'exit_on_close' | 'low_watermark' | 'high_watermark' | 'bit8' | - 'send_timeout' | 'send_timeout_close' | - 'delay_send' | 'packet_size' | 'read_packets' | - %% SCTP options - {'sctp_status', #sctp_status{}} | - 'sctp_get_peer_addr_info' | - {'sctp_get_peer_addr_info', #sctp_status{}} | - 'sctp_rtoinfo' | - {'sctp_rtoinfo', #sctp_rtoinfo{}} | - 'sctp_associnfo' | - {'sctp_associnfo', #sctp_assocparams{}} | - 'sctp_initmsg' | - {'sctp_initmsg', #sctp_initmsg{}} | - 'sctp_nodelay' | 'sctp_autoclose' | 'sctp_disable_fragments' | - 'sctp_i_want_mapped_v4_addr' | 'sctp_maxseg' | - {'sctp_primary_addr', #sctp_prim{}} | - {'sctp_set_peer_primary_addr', #sctp_setpeerprim{}} | - 'sctp_adaptation_layer' | - {'sctp_adaptation_layer', #sctp_setadaptation{}} | - {'sctp_peer_addr_params', #sctp_paddrparams{}} | - 'sctp_default_send_param' | - {'sctp_default_send_param', #sctp_sndrcvinfo{}} | - 'sctp_events' | - {'sctp_events', #sctp_event_subscribe{}} | - 'sctp_delayed_ack_time' | - {'sctp_delayed_ack_time', #sctp_assoc_value{}}. - + gen_sctp:option_name() | gen_tcp:option_name() | gen_udp:option_name(). -type ether_address() :: [0..255]. -type if_setopt() :: @@ -196,7 +114,7 @@ 'addr' | 'broadaddr' | 'dstaddr' | 'mtu' | 'netmask' | 'flags' |'hwaddr'. --type family_option() :: 'inet' | 'inet6'. +-type address_family() :: 'inet' | 'inet6'. -type protocol_option() :: 'tcp' | 'udp' | 'sctp'. -type stat_option() :: 'recv_cnt' | 'recv_max' | 'recv_avg' | 'recv_oct' | 'recv_dvi' | @@ -229,7 +147,7 @@ close(Socket) -> peername(Socket) -> prim_inet:peername(Socket). --spec setpeername(Socket :: socket(), Address :: {ip_address(), ip_port()}) -> +-spec setpeername(Socket :: socket(), Address :: {ip_address(), port_number()}) -> 'ok' | {'error', any()}. setpeername(Socket, {IP,Port}) -> @@ -246,7 +164,7 @@ setpeername(Socket, undefined) -> sockname(Socket) -> prim_inet:sockname(Socket). --spec setsockname(Socket :: socket(), Address :: {ip_address(), ip_port()}) -> +-spec setsockname(Socket :: socket(), Address :: {ip_address(), port_number()}) -> 'ok' | {'error', any()}. setsockname(Socket, {IP,Port}) -> @@ -254,7 +172,9 @@ setsockname(Socket, {IP,Port}) -> setsockname(Socket, undefined) -> prim_inet:setsockname(Socket, undefined). --spec port(Socket :: socket()) -> {'ok', ip_port()} | {'error', any()}. +-spec port(Socket) -> {'ok', Port} | {'error', any()} when + Socket :: socket(), + Port :: port_number(). port(Socket) -> case prim_inet:sockname(Socket) of @@ -268,16 +188,18 @@ port(Socket) -> send(Socket, Packet) -> prim_inet:send(Socket, Packet). --spec setopts(Socket :: socket(), Opts :: [socket_setopt()]) -> - 'ok' | {'error', posix()}. +-spec setopts(Socket, Options) -> ok | {error, posix()} when + Socket :: socket(), + Options :: [socket_setopt()]. setopts(Socket, Opts) -> prim_inet:setopts(Socket, Opts). -spec getopts(Socket, Options) -> - {'ok', [socket_setopt()]} | {'error', posix()} when + {'ok', OptionValues} | {'error', posix()} when Socket :: socket(), - Options :: [socket_getopt()]. + Options :: [socket_getopt()], + OptionValues :: [socket_setopt()]. getopts(Socket, Opts) -> prim_inet:getopts(Socket, Opts). @@ -419,14 +341,19 @@ gethostname() -> gethostname(Socket) -> prim_inet:gethostname(Socket). --spec getstat(Socket :: socket()) -> - {'ok', [{stat_option(), integer()}]} | {'error', posix()}. +-spec getstat(Socket) -> + {ok, OptionValues} | {error, posix()} when + Socket :: socket(), + OptionValues :: [{stat_option(), integer()}]. getstat(Socket) -> prim_inet:getstat(Socket, stats()). --spec getstat(Socket :: socket(), Statoptions :: [stat_option()]) -> - {'ok', [{stat_option(), integer()}]} | {'error', posix()}. +-spec getstat(Socket, Options) -> + {ok, OptionValues} | {error, posix()} when + Socket :: socket(), + Options :: [stat_option()], + OptionValues :: [{stat_option(), integer()}]. getstat(Socket,What) -> prim_inet:getstat(Socket, What). @@ -441,14 +368,14 @@ gethostbyname(Name) -> -spec gethostbyname(Hostname, Family) -> {ok, Hostent} | {error, posix()} when Hostname :: hostname(), - Family :: family_option(), + Family :: address_family(), Hostent :: hostent(). gethostbyname(Name,Family) -> gethostbyname_tm(Name, Family, false). -spec gethostbyname(Name :: hostname(), - Family :: family_option(), + Family :: address_family(), Timeout :: non_neg_integer() | 'infinity') -> {'ok', #hostent{}} | {'error', posix()}. @@ -527,14 +454,14 @@ getfd(Socket) -> -spec getaddr(Host, Family) -> {ok, Address} | {error, posix()} when Host :: ip_address() | hostname(), - Family :: family_option(), + Family :: address_family(), Address :: ip_address(). getaddr(Address, Family) -> getaddr(Address, Family, infinity). -spec getaddr(Host :: ip_address() | hostname(), - Family :: family_option(), + Family :: address_family(), Timeout :: non_neg_integer() | 'infinity') -> {'ok', ip_address()} | {'error', posix()}. @@ -553,14 +480,14 @@ getaddr_tm(Address, Family, Timer) -> -spec getaddrs(Host, Family) -> {ok, Addresses} | {error, posix()} when Host :: ip_address() | hostname(), - Family :: family_option(), + Family :: address_family(), Addresses :: [ip_address()]. getaddrs(Address, Family) -> getaddrs(Address, Family, infinity). -spec getaddrs(Host :: ip_address() | string() | atom(), - Family :: family_option(), + Family :: address_family(), Timeout :: non_neg_integer() | 'infinity') -> {'ok', [ip_address()]} | {'error', posix()}. @@ -570,7 +497,7 @@ getaddrs(Address, Family, Timeout) -> stop_timer(Timer), Res. --spec getservbyport(Port :: ip_port(), Protocol :: atom() | string()) -> +-spec getservbyport(Port :: port_number(), Protocol :: atom() | string()) -> {'ok', string()} | {'error', posix()}. getservbyport(Port, Proto) -> @@ -584,7 +511,7 @@ getservbyport(Port, Proto) -> -spec getservbyname(Name :: atom() | string(), Protocol :: atom() | string()) -> - {'ok', ip_port()} | {'error', posix()}. + {'ok', port_number()} | {'error', posix()}. getservbyname(Name, Protocol) when is_atom(Name) -> case inet_udp:open(0, []) of @@ -1067,7 +994,7 @@ gethostbyaddr_tm_native(Addr, Timer, Opts) -> -spec open(Fd :: integer(), Addr :: ip_address(), - Port :: ip_port(), + Port :: port_number(), Opts :: [socket_setopt()], Protocol :: protocol_option(), Family :: 'inet' | 'inet6', @@ -1108,7 +1035,7 @@ open(Fd, _Addr, _Port, Opts, Protocol, Family, Module) -> -spec fdopen(Fd :: non_neg_integer(), Opts :: [socket_setopt()], Protocol :: protocol_option(), - Family :: family_option(), + Family :: address_family(), Module :: atom()) -> {'ok', socket()} | {'error', posix()}. diff --git a/lib/kernel/src/inet_res.erl b/lib/kernel/src/inet_res.erl index d1f5644ff7..59ba408d7a 100644 --- a/lib/kernel/src/inet_res.erl +++ b/lib/kernel/src/inet_res.erl @@ -407,7 +407,7 @@ gethostbyname(Name) -> -spec gethostbyname(Name, Family) -> {ok, Hostent} | {error, Reason} when Name :: dns_name(), Hostent :: inet:hostent(), - Family :: inet:family_option(), + Family :: inet:address_family(), Reason :: inet:posix() | res_error(). gethostbyname(Name,Family) -> @@ -418,7 +418,7 @@ gethostbyname(Name,Family) -> Name :: dns_name(), Hostent :: inet:hostent(), Timeout :: timeout(), - Family :: inet:family_option(), + Family :: inet:address_family(), Reason :: inet:posix() | res_error(). gethostbyname(Name,Family,Timeout) -> diff --git a/lib/kernel/test/application_SUITE.erl b/lib/kernel/test/application_SUITE.erl index 4ae4151004..2c5b8ccb66 100644 --- a/lib/kernel/test/application_SUITE.erl +++ b/lib/kernel/test/application_SUITE.erl @@ -967,7 +967,7 @@ otp_1586(doc) -> ["Test recursive load of applications."]; otp_1586(Conf) when is_list(Conf) -> Dir = ?config(priv_dir,Conf), - {ok, Fd} = file:open(filename:join(Dir, "app5.app"), write), + {ok, Fd} = file:open(filename:join(Dir, "app5.app"), [write]), w_app5(Fd), file:close(Fd), ?line code:add_patha(Dir), @@ -1021,10 +1021,10 @@ otp_2012(Conf) when is_list(Conf) -> ?line yes = global:register_name(conf_change, CcPid), % Write a .app file - {ok, Fd} = file:open("app1.app", write), + {ok, Fd} = file:open("app1.app", [write]), w_app1(Fd), file:close(Fd), - {ok, Fd2} = file:open("app2.app", write), + {ok, Fd2} = file:open("app2.app", [write]), w_app1(Fd2), file:close(Fd2), @@ -1096,7 +1096,7 @@ otp_2973(doc) -> ["Test of two processes simultanously starting the same application."]; otp_2973(Conf) when is_list(Conf) -> % Write a .app file - {ok, Fd} = file:open("app0.app", write), + {ok, Fd} = file:open("app0.app", [write]), w_app(Fd, app0()), file:close(Fd), @@ -1138,7 +1138,7 @@ otp_2973(Conf) when is_list(Conf) -> % Write a .app file - ?line {ok, Fda} = file:open("app_start_error.app", write), + ?line {ok, Fda} = file:open("app_start_error.app", [write]), ?line w_app_start_error(Fda), ?line file:close(Fda), @@ -1273,12 +1273,12 @@ otp_4066(Conf) when is_list(Conf) -> App1Nodes = {app1, AllNodes}, Dir = ?config(priv_dir,Conf), - ?line {ok, FdC} = file:open(filename:join(Dir, "otp_4066.config"), write), + ?line {ok, FdC} = file:open(filename:join(Dir, "otp_4066.config"), [write]), ?line write_config(FdC, config_4066(AllNodes, 5000, [App1Nodes])), ?line file:close(FdC), % Write the app1.app file - ?line {ok, FdA12} = file:open(filename:join(Dir, "app1.app"), write), + ?line {ok, FdA12} = file:open(filename:join(Dir, "app1.app"), [write]), ?line w_app1(FdA12), ?line file:close(FdA12), @@ -1441,7 +1441,7 @@ otp_5606(Conf) when is_list(Conf) -> %% Write a config file Dir = ?config(priv_dir, Conf), - {ok, Fd} = file:open(filename:join(Dir, "sys.config"), write), + {ok, Fd} = file:open(filename:join(Dir, "sys.config"), [write]), NodeNames = [Ncp1, Ncp2] = node_names([cp1, cp2], Conf), (config4(NodeNames))(Fd, 10000), file:close(Fd), @@ -2436,7 +2436,7 @@ start_node_config_sf(Name, SysConfigFun, Conf) -> write_config_file(SysConfigFun, Conf) -> Dir = ?config(priv_dir, Conf), - {ok, Fd} = file:open(filename:join(Dir, "sys.config"), write), + {ok, Fd} = file:open(filename:join(Dir, "sys.config"), [write]), SysConfigFun(Fd), file:close(Fd), filename:join(Dir,"sys"). @@ -2571,15 +2571,15 @@ cc(List) -> create_app() -> ?line Dir = "./", ?line App1 = Dir ++ "app1", - ?line {ok, Fd1} = file:open(App1++".app",write), + ?line {ok, Fd1} = file:open(App1++".app",[write]), ?line io:format(Fd1, "~p. \n", [app1()]), ?line file:close(Fd1), ?line App2 = Dir ++ "app2", - ?line {ok, Fd2} = file:open(App2++".app",write), + ?line {ok, Fd2} = file:open(App2++".app",[write]), ?line io:format(Fd2, "~p. \n", [app2()]), ?line file:close(Fd2), ?line App3 = Dir ++ "app_sp", - ?line {ok, Fd3} = file:open(App3++".app",write), + ?line {ok, Fd3} = file:open(App3++".app",[write]), ?line io:format(Fd3, "~p. \n", [app_sp()]), ?line file:close(Fd3), ok. @@ -2591,7 +2591,7 @@ create_script(ScriptName) -> ?line Apps = which_applications(), ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps), ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps), - ?line {ok,Fd} = file:open(Name++".rel",write), + ?line {ok,Fd} = file:open(Name++".rel",[write]), ?line io:format(Fd, "{release, {\"Test release 3\", \"LATEST\"}, \n" " {erts, \"4.4\"}, \n" @@ -2610,7 +2610,7 @@ create_script_dc(ScriptName) -> ?line Apps = which_applications(), ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps), ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps), - ?line {ok,Fd} = file:open(Name++".rel",write), + ?line {ok,Fd} = file:open(Name++".rel",[write]), ?line io:format(Fd, "{release, {\"Test release 3\", \"LATEST\"}, \n" " {erts, \"4.4\"}, \n" @@ -2630,7 +2630,7 @@ create_script_3002(ScriptName) -> ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps), ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps), ?line {value,{_,_,SaslVer}} = lists:keysearch(sasl,1,Apps), - ?line {ok,Fd} = file:open(Name++".rel",write), + ?line {ok,Fd} = file:open(Name++".rel",[write]), ?line io:format(Fd, "{release, {\"Test release 3\", \"LATEST\"}, \n" " {erts, \"4.4\"}, \n" @@ -2646,22 +2646,22 @@ create_script_3002(ScriptName) -> distr_changed_prep(Conf) when is_list(Conf) -> % Write .app files - ?line {ok, Fd1} = file:open("app1.app", write), + ?line {ok, Fd1} = file:open("app1.app", [write]), ?line w_app1(Fd1), ?line file:close(Fd1), - ?line {ok, Fd2} = file:open("app2.app", write), + ?line {ok, Fd2} = file:open("app2.app", [write]), ?line w_app2(Fd2), ?line file:close(Fd2), - ?line {ok, Fd3} = file:open("app3.app", write), + ?line {ok, Fd3} = file:open("app3.app", [write]), ?line w_app3(Fd3), ?line file:close(Fd3), - ?line {ok, Fd4} = file:open("app6.app", write), + ?line {ok, Fd4} = file:open("app6.app", [write]), ?line w_app6(Fd4), ?line file:close(Fd4), - ?line {ok, Fd5} = file:open("app7.app", write), + ?line {ok, Fd5} = file:open("app7.app", [write]), ?line w_app7(Fd5), ?line file:close(Fd5), - ?line {ok, Fd6} = file:open("app8.app", write), + ?line {ok, Fd6} = file:open("app8.app", [write]), ?line w_app8(Fd6), ?line file:close(Fd6), @@ -2683,7 +2683,7 @@ distr_changed_prep(Conf) when is_list(Conf) -> WithSyncTime = config_fun(config_dc(NodeNames)), ?line Dir = ?config(priv_dir,Conf), - ?line {ok, Fd_dc2} = file:open(filename:join(Dir, "sys2.config"), write), + ?line {ok, Fd_dc2} = file:open(filename:join(Dir, "sys2.config"), [write]), ?line (config_dc2(NodeNames))(Fd_dc2), ?line file:close(Fd_dc2), ?line Config2 = filename:join(Dir, "sys2"), diff --git a/lib/kernel/test/code_SUITE.erl b/lib/kernel/test/code_SUITE.erl index 3ad49254f1..86cccebc29 100644 --- a/lib/kernel/test/code_SUITE.erl +++ b/lib/kernel/test/code_SUITE.erl @@ -258,8 +258,8 @@ replace_path(Config) when is_list(Config) -> %% Add a completly new application. - NewAppName = "blurf_blarfer", - ?line NewAppDir = filename:join(Cwd, NewAppName ++ "-6.33.1"), + NewAppName = 'blurf_blarfer', + ?line NewAppDir = filename:join(Cwd, atom_to_list(NewAppName) ++ "-6.33.1"), ?line ok = file:make_dir(NewAppDir), ?line true = code:replace_path(NewAppName, NewAppDir), ?line NewAppDir = code:lib_dir(NewAppName), @@ -410,8 +410,10 @@ all_loaded_1() -> ?line Loaded2 = match_and_remove(Preloaded, Loaded1), ObjExt = code:objfile_extension(), - ?line [] = lists:filter(fun({Mod,AbsName}) when is_atom(Mod), is_list(AbsName) -> - Mod =:= filename:basename(AbsName, ObjExt); + ?line [] = lists:filter(fun({Mod,AbsName}) when is_atom(Mod), + is_list(AbsName) -> + Mod =/= list_to_atom(filename:basename(AbsName, + ObjExt)); (_) -> true end, Loaded2), @@ -1023,8 +1025,8 @@ mult_lib_roots(Config) when is_list(Config) -> "my_dummy_app-c/ebin/code_SUITE_mult_root_module"), %% Set up ERL_LIBS and start a slave node. - ErlLibs = filename:join(DataDir, first_root) ++ mult_lib_sep() ++ - filename:join(DataDir, second_root), + ErlLibs = filename:join(DataDir, "first_root") ++ mult_lib_sep() ++ + filename:join(DataDir, "second_root"), ?line {ok,Node} = ?t:start_node(mult_lib_roots, slave, @@ -1344,7 +1346,7 @@ create_script(Config) -> ?line Apps = application_controller:which_applications(), ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel, 1, Apps), ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib, 1, Apps), - ?line {ok,Fd} = file:open(Name ++ ".rel", write), + ?line {ok,Fd} = file:open(Name ++ ".rel", [write]), ?line io:format(Fd, "{release, {\"Test release 3\", \"P2A\"}, \n" " {erts, \"9.42\"}, \n" @@ -1409,7 +1411,7 @@ create_big_script(Config,Local) -> %% Now we should have only "real" applications... ?line [application:load(list_to_atom(Y)) || {match,[Y]} <- [ re:run(X,code:lib_dir()++"/"++"([^/-]*).*/ebin",[{capture,[1],list}]) || X <- code:get_path()],filter_app(Y,Local)], ?line Apps = [ {N,V} || {N,_,V} <- application:loaded_applications()], - ?line {ok,Fd} = file:open(Name ++ ".rel", write), + ?line {ok,Fd} = file:open(Name ++ ".rel", [write]), ?line io:format(Fd, "{release, {\"Test release 3\", \"P2A\"}, \n" " {erts, \"9.42\"}, \n" diff --git a/lib/kernel/test/disk_log_SUITE.erl b/lib/kernel/test/disk_log_SUITE.erl index 4ae47b4762..ee1e2319b5 100644 --- a/lib/kernel/test/disk_log_SUITE.erl +++ b/lib/kernel/test/disk_log_SUITE.erl @@ -4917,7 +4917,7 @@ mark(FileName, What) -> ok = file:close(Fd). crash(File, Where) -> - {ok, Fd} = file:open(File, read_write), + {ok, Fd} = file:open(File, [read,write]), file:position(Fd, Where), ok = file:write(Fd, [10]), ok = file:close(Fd). @@ -4933,7 +4933,7 @@ writable(Fname) -> file:write_file_info(Fname, Info#file_info{mode = Mode}). truncate(File, Where) -> - {ok, Fd} = file:open(File, read_write), + {ok, Fd} = file:open(File, [read,write]), file:position(Fd, Where), ok = file:truncate(Fd), ok = file:close(Fd). diff --git a/lib/kernel/test/erl_prim_loader_SUITE.erl b/lib/kernel/test/erl_prim_loader_SUITE.erl index f47c4603cf..7599a89779 100644 --- a/lib/kernel/test/erl_prim_loader_SUITE.erl +++ b/lib/kernel/test/erl_prim_loader_SUITE.erl @@ -547,8 +547,6 @@ host() -> stop_node(Node) -> test_server:stop_node(Node). -get_loader_flag({ose,_}) -> - " -loader ose_inet "; get_loader_flag(_) -> " -loader inet ". diff --git a/lib/kernel/test/gen_tcp_api_SUITE.erl b/lib/kernel/test/gen_tcp_api_SUITE.erl index fd4685cdad..cbaec2d6dd 100644 --- a/lib/kernel/test/gen_tcp_api_SUITE.erl +++ b/lib/kernel/test/gen_tcp_api_SUITE.erl @@ -158,6 +158,10 @@ t_shutdown_error(Config) when is_list(Config) -> t_fdopen(Config) when is_list(Config) -> ?line Question = "Aaaa... Long time ago in a small town in Germany,", + ?line Question1 = list_to_binary(Question), + ?line Question2 = [<<"Aaaa">>, "... ", $L, <<>>, $o, "ng time ago ", + ["in ", [], <<"a small town">>, [" in Germany,", <<>>]]], + ?line Question1 = iolist_to_binary(Question2), ?line Answer = "there was a shoemaker, Schumacher was his name.", ?line {ok, L} = gen_tcp:listen(0, [{active, false}]), ?line {ok, Port} = inet:port(L), @@ -167,6 +171,10 @@ t_fdopen(Config) when is_list(Config) -> ?line {ok, Server} = gen_tcp:fdopen(FD, []), ?line ok = gen_tcp:send(Client, Question), ?line {ok, Question} = gen_tcp:recv(Server, length(Question), 2000), + ?line ok = gen_tcp:send(Client, Question1), + ?line {ok, Question} = gen_tcp:recv(Server, length(Question), 2000), + ?line ok = gen_tcp:send(Client, Question2), + ?line {ok, Question} = gen_tcp:recv(Server, length(Question), 2000), ?line ok = gen_tcp:send(Server, Answer), ?line {ok, Answer} = gen_tcp:recv(Client, length(Answer), 2000), ?line ok = gen_tcp:close(Client), diff --git a/lib/kernel/test/gen_udp_SUITE.erl b/lib/kernel/test/gen_udp_SUITE.erl index b734d7fd98..514deaf065 100644 --- a/lib/kernel/test/gen_udp_SUITE.erl +++ b/lib/kernel/test/gen_udp_SUITE.erl @@ -201,13 +201,21 @@ binary_passive_recv(suite) -> binary_passive_recv(doc) -> ["OTP-3823 gen_udp:recv does not return address in binary mode"]; binary_passive_recv(Config) when is_list(Config) -> - ?line D = "The quick brown fox jumps over a lazy dog", - ?line B = list_to_binary(D), + ?line D1 = "The quick brown fox jumps over a lazy dog", + ?line D2 = list_to_binary(D1), + ?line D3 = ["The quick", <<" brown ">>, "fox jumps ", <<"over ">>, + <<>>, $a, [[], " lazy ", <<"dog">>]], + ?line D2 = iolist_to_binary(D3), + ?line B = D2, ?line {ok, R} = gen_udp:open(0, [binary, {active, false}]), ?line {ok, RP} = inet:port(R), ?line {ok, S} = gen_udp:open(0), ?line {ok, SP} = inet:port(S), - ?line ok = gen_udp:send(S, localhost, RP, D), + ?line ok = gen_udp:send(S, localhost, RP, D1), + ?line {ok, {{127, 0, 0, 1}, SP, B}} = gen_udp:recv(R, byte_size(B)+1), + ?line ok = gen_udp:send(S, localhost, RP, D2), + ?line {ok, {{127, 0, 0, 1}, SP, B}} = gen_udp:recv(R, byte_size(B)+1), + ?line ok = gen_udp:send(S, localhost, RP, D3), ?line {ok, {{127, 0, 0, 1}, SP, B}} = gen_udp:recv(R, byte_size(B)+1), ?line ok = gen_udp:close(S), ?line ok = gen_udp:close(R), diff --git a/lib/kernel/test/global_group_SUITE.erl b/lib/kernel/test/global_group_SUITE.erl index 13b2fd07b5..799b0d9d05 100644 --- a/lib/kernel/test/global_group_SUITE.erl +++ b/lib/kernel/test/global_group_SUITE.erl @@ -100,7 +100,7 @@ start_gg_proc(Config) when is_list(Config) -> ?line Dir = ?config(priv_dir, Config), ?line File = filename:join(Dir, "global_group.config"), - ?line {ok, Fd}=file:open(File, write), + ?line {ok, Fd}=file:open(File, [write]), [Ncp1,Ncp2,Ncp3] = node_names([cp1, cp2, cp3], Config), ?line config(Fd, Ncp1, Ncp2, Ncp3, "cpx", "cpy", "cpz", "cpq"), @@ -135,7 +135,7 @@ no_gg_proc(Config) when is_list(Config) -> ?line Dir = ?config(priv_dir, Config), ?line File = filename:join(Dir, "no_global_group.config"), - ?line {ok, Fd} = file:open(File, write), + ?line {ok, Fd} = file:open(File, [write]), ?line config_no(Fd), ?line NN = node_name(atom_to_list(node())), @@ -308,7 +308,7 @@ no_gg_proc_sync(Config) when is_list(Config) -> ?line Dir = ?config(priv_dir, Config), ?line File = filename:join(Dir, "no_global_group_sync.config"), - ?line {ok, Fd} = file:open(File, write), + ?line {ok, Fd} = file:open(File, [write]), [Ncp1,Ncp2,Ncp3,Ncpx,Ncpy,Ncpz] = node_names([cp1,cp2,cp3,cpx,cpy,cpz], Config), @@ -482,7 +482,7 @@ compatible(Config) when is_list(Config) -> ?line Dir = ?config(priv_dir, Config), ?line File = filename:join(Dir, "global_group_comp.config"), - ?line {ok, Fd} = file:open(File, write), + ?line {ok, Fd} = file:open(File, [write]), [Ncp1,Ncp2,Ncp3,Ncpx,Ncpy,Ncpz] = node_names([cp1,cp2,cp3,cpx,cpy,cpz], Config), @@ -655,7 +655,7 @@ one_grp(Config) when is_list(Config) -> ?line Dir = ?config(priv_dir, Config), ?line File = filename:join(Dir, "global_group.config"), - ?line {ok, Fd} = file:open(File, write), + ?line {ok, Fd} = file:open(File, [write]), [Ncp1,Ncp2,Ncp3] = node_names([cp1, cp2, cp3], Config), ?line config(Fd, Ncp1, Ncp2, Ncp3, "cpx", "cpy", "cpz", "cpq"), @@ -742,7 +742,7 @@ one_grp_x(Config) when is_list(Config) -> ?line Dir = ?config(priv_dir, Config), ?line File = filename:join(Dir, "global_group.config"), - ?line {ok, Fd} = file:open(File, write), + ?line {ok, Fd} = file:open(File, [write]), [Ncp1,Ncp2,Ncp3] = node_names([cp1, cp2, cp3], Config), ?line config(Fd, Ncp1, Ncp2, Ncp3, "cpx", "cpy", "cpz", "cpq"), @@ -804,7 +804,7 @@ two_grp(Config) when is_list(Config) -> ?line Dir = ?config(priv_dir, Config), ?line File = filename:join(Dir, "global_group.config"), - ?line {ok, Fd} = file:open(File, write), + ?line {ok, Fd} = file:open(File, [write]), [Ncp1,Ncp2,Ncp3,Ncpx,Ncpy,Ncpz,Ncpq] = node_names([cp1,cp2,cp3,cpx,cpy,cpz,cpq], Config), @@ -1104,7 +1104,7 @@ hidden_groups(Config) when is_list(Config) -> ?line Dir = ?config(priv_dir, Config), ?line File = filename:join(Dir, "global_group.config"), - ?line {ok, Fd} = file:open(File, write), + ?line {ok, Fd} = file:open(File, [write]), [Ncp1,Ncp2,Ncp3,Ncpx,Ncpy,Ncpz,Ncpq] = node_names([cp1,cp2,cp3,cpx,cpy,cpz,cpq], Config), diff --git a/lib/kernel/test/init_SUITE.erl b/lib/kernel/test/init_SUITE.erl index 2db0f7dcb8..b39fadd65f 100644 --- a/lib/kernel/test/init_SUITE.erl +++ b/lib/kernel/test/init_SUITE.erl @@ -656,7 +656,7 @@ create_script(Config) -> ?line Apps = application_controller:which_applications(), ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps), ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps), - ?line {ok,Fd} = file:open(Name ++ ".rel", write), + ?line {ok,Fd} = file:open(Name ++ ".rel", [write]), ?line io:format(Fd, "{release, {\"Test release 3\", \"P2A\"}, \n" " {erts, \"4.4\"}, \n" diff --git a/lib/kernel/test/ram_file_SUITE.erl b/lib/kernel/test/ram_file_SUITE.erl index 9b3fbb91fc..ab95a3ff5f 100644 --- a/lib/kernel/test/ram_file_SUITE.erl +++ b/lib/kernel/test/ram_file_SUITE.erl @@ -552,7 +552,7 @@ large_file_light(Config) when is_list(Config) -> ?line PrivDir = ?config(priv_dir, Config), %% Marker for next test case that is to heavy to run in a suite. ?line ok = ?FILE_MODULE:write_file( - filename:join(PrivDir, large_file_light), + filename:join(PrivDir, "large_file_light"), <<"TAG">>), %% ?line Data = "abcdefghijklmnopqrstuvwzyz", @@ -582,7 +582,7 @@ large_file_heavy(Config) when is_list(Config) -> ?line PrivDir = ?config(priv_dir, Config), %% Check previous test case marker. case ?FILE_MODULE:read_file_info( - filename:join(PrivDir, large_file_light)) of + filename:join(PrivDir, "large_file_light")) of {ok,_} -> {skipped,"Too heavy for casual testing!"}; _ -> diff --git a/lib/kernel/test/zlib_SUITE.erl b/lib/kernel/test/zlib_SUITE.erl index 9eb84c9167..4ad9c6923d 100644 --- a/lib/kernel/test/zlib_SUITE.erl +++ b/lib/kernel/test/zlib_SUITE.erl @@ -412,6 +412,7 @@ api_crc32(Config) when is_list(Config) -> Compressed = list_to_binary(Compressed1 ++ Compressed2), CRC1 = ?m( CRC1 when is_integer(CRC1), zlib:crc32(Z1)), ?m(CRC1 when is_integer(CRC1), zlib:crc32(Z1,Bin)), + ?m(CRC1 when is_integer(CRC1), zlib:crc32(Z1,binary_to_list(Bin))), ?m(CRC2 when is_integer(CRC2), zlib:crc32(Z1,Compressed)), CRC2 = ?m(CRC2 when is_integer(CRC2), zlib:crc32(Z1,0,Compressed)), ?m(CRC3 when CRC2 /= CRC3, zlib:crc32(Z1,234,Compressed)), @@ -437,6 +438,7 @@ api_adler32(Config) when is_list(Config) -> Compressed2 = ?m(_, zlib:deflate(Z1, <<>>, finish)), Compressed = list_to_binary(Compressed1 ++ Compressed2), ?m(ADLER1 when is_integer(ADLER1), zlib:adler32(Z1,Bin)), + ?m(ADLER1 when is_integer(ADLER1), zlib:adler32(Z1,binary_to_list(Bin))), ADLER2 = ?m(ADLER2 when is_integer(ADLER2), zlib:adler32(Z1,Compressed)), ?m(ADLER2 when is_integer(ADLER2), zlib:adler32(Z1,1,Compressed)), ?m(ADLER3 when ADLER2 /= ADLER3, zlib:adler32(Z1,234,Compressed)), @@ -464,6 +466,7 @@ api_un_compress(Config) when is_list(Config) -> ?m({'EXIT',{data_error,_}}, zlib:uncompress(<<120,156,3>>)), ?m({'EXIT',{data_error,_}}, zlib:uncompress(<<120,156,3,0>>)), ?m({'EXIT',{data_error,_}}, zlib:uncompress(<<0,156,3,0,0,0,0,1>>)), + ?m(Bin, zlib:uncompress(binary_to_list(Comp))), ?m(Bin, zlib:uncompress(Comp)). api_un_zip(doc) -> "Test zip"; @@ -472,10 +475,12 @@ api_un_zip(Config) when is_list(Config) -> ?m(?BARG,zlib:zip(not_a_binary)), Bin = <<1,11,1,23,45>>, ?line Comp = zlib:zip(Bin), + ?m(Comp, zlib:zip(binary_to_list(Bin))), ?m(?BARG,zlib:unzip(not_a_binary)), ?m({'EXIT',{data_error,_}}, zlib:unzip(<<171,171,171,171,171>>)), ?m({'EXIT',{data_error,_}}, zlib:unzip(<<>>)), ?m(Bin, zlib:unzip(Comp)), + ?m(Bin, zlib:unzip(binary_to_list(Comp))), %% OTP-6396 B = <<131,104,19,100,0,13,99,95,99,105,100,95,99,115,103,115,110,95,50,97,1,107,0,4,208,161,246,29,107,0,3,237,166,224,107,0,6,66,240,153,0,2,10,1,0,8,97,116,116,97,99,104,101,100,104,2,100,0,22,117,112,100,97,116,101,95,112,100,112,95,99,111,110,116,101,120,116,95,114,101,113,107,0,114,69,3,12,1,11,97,31,113,150,64,104,132,61,64,104,12,3,197,31,113,150,64,104,132,61,64,104,12,1,11,97,31,115,150,64,104,116,73,64,104,0,0,0,0,0,0,65,149,16,61,65,149,16,61,1,241,33,4,5,0,33,4,4,10,6,10,181,4,10,6,10,181,38,15,99,111,109,109,97,110,100,1,114,45,97,112,110,45,49,3,99,111,109,5,109,110,99,57,57,6,109,99,99,50,52,48,4,103,112,114,115,8,0,104,2,104,2,100,0,8,97,99,116,105,118,97,116,101,104,23,100,0,11,112,100,112,95,99,111,110,116,1,120,116,100,0,7,112,114,105,109,97,114,121,97,1,100,0,9,117,110,100,101,102,105,110,101,100,97,1,97,4,97,4,97,7,100,0,9,117,110,100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,105,110,10100,100,0,9,117,110,100,101,102,105,110,101,100,100,0,5,102,97,108,115,101,100,0,9,117,110,100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,105,1,101,100,97,0,100,0,9,117,110,100,101,102,105,110,101,100,107,0,4,16,0,1,144,107,0,4,61,139,186,181,107,0,4,10,8,201,49,100,0,9,117,110,100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,105,0,101,100,100,0,9,117,110,100,101,102,105,110,101,100,104,2,104,3,98,0,0,7,214,97,11,97,20,104,3,97,17,97,16,97,21,106,108,0,0,0,3,104,2,97,1,104,2,104,3,98,0,0,7,214,97,11,97,20,104,3,97,17,97,167,20,104,2,97,4,104,2,104,3,98,0,0,7,214,97,11,97,20,104,3,97,17,97,16,97,21,104,2,97,10,104,2,104,3,98,0,0,7,214,97,11,97,20,104,3,97,17,97,16,97,26,106,100,0,5,118,101,114,57,57,100,0,9,117,110,0,101,102,105,110,101,100,107,0,2,0,244,107,0,4,10,6,102,195,107,0,4,10,6,102,195,100,0,9,117,110,100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,105,110,101,100,107,0,125,248,143,0,203,25115,157,116,65,185,65,172,55,87,164,88,225,50,203,251,115,157,116,65,185,65,172,55,87,164,88,225,50,0,0,82,153,50,0,200,98,87,148,237,193,185,65,149,167,69,144,14,16,153,50,3,81,70,94,13,109,193,1,120,5,181,113,198,118,50,3,81,70,94,13,109,193,185,120,5,181,113,198,118,153,3,81,70,94,13,109,193,185,120,5,181,113,198,118,153,50,16,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,113,92,2,119,128,0,0,108,0,0,1,107,0,114,69,3,12,1,11,97,31,113,150,64,104,132,61,64,104,12,3,11,97,31,113,150,64,104,132,61,64,104,12,1,11,97,31,115,150,64,104,116,73,64,104,0,0,0,0,0,0,65,149,16,61,65,149,16,61,1,241,33,4,0,33,4,4,10,6,10,181,4,10,6,10,181,38,15,99,111,109,109,97,110,100,101,114,45,97,112,110,45,49,3,99,111,109,5,109,110,99,57,57,6,109,99,99,50,52,48,4,103,112,114,115,8,0,106>>, @@ -504,10 +509,12 @@ api_g_un_zip(Config) when is_list(Config) -> ?m(?BARG,zlib:gzip(not_a_binary)), Bin = <<1,11,1,23,45>>, ?line Comp = zlib:gzip(Bin), + ?m(Comp, zlib:gzip(binary_to_list(Bin))), ?m(?BARG, zlib:gunzip(not_a_binary)), ?m(?DATA_ERROR, zlib:gunzip(<<171,171,171,171,171>>)), ?m(?DATA_ERROR, zlib:gunzip(<<>>)), ?m(Bin, zlib:gunzip(Comp)), + ?m(Bin, zlib:gunzip(binary_to_list(Comp))), %% Bad CRC; bad length. BadCrc = bad_crc_data(), @@ -844,6 +851,7 @@ dictionary_usage({run}) -> ?m(ok, zlib:inflateInit(Z2)), ?line {'EXIT',{{need_dictionary,DictID},_}} = (catch zlib:inflate(Z2, Compressed)), ?m(ok, zlib:inflateSetDictionary(Z2, Dict)), + ?m(ok, zlib:inflateSetDictionary(Z2, binary_to_list(Dict))), ?line Uncompressed = ?m(B when is_list(B), zlib:inflate(Z2, [])), ?m(ok, zlib:inflateEnd(Z2)), ?m(ok, zlib:close(Z2)), diff --git a/lib/mnesia/src/Makefile b/lib/mnesia/src/Makefile index e032f563fa..1c8ec54605 100644 --- a/lib/mnesia/src/Makefile +++ b/lib/mnesia/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2009. All Rights Reserved. +# Copyright Ericsson AB 1996-2011. All Rights Reserved. # # The contents of this file are subject to the Erlang Public License, # Version 1.1, (the "License"); you may not use this file except in @@ -113,6 +113,8 @@ clean: docs: +$(TARGET_FILES): $(HRL_FILES) + # ---------------------------------------------------- # Special Build Targets # ---------------------------------------------------- diff --git a/lib/mnesia/src/mnesia_controller.erl b/lib/mnesia/src/mnesia_controller.erl index d4b2c7b5cc..1d3bd55b48 100644 --- a/lib/mnesia/src/mnesia_controller.erl +++ b/lib/mnesia/src/mnesia_controller.erl @@ -57,7 +57,8 @@ release_schema_commit_lock/0, create_table/1, get_disc_copy/1, - get_cstructs/0, + get_remote_cstructs/0, % new function + get_cstructs/0, % old function sync_and_block_table_whereabouts/4, sync_del_table_copy_whereabouts/2, block_table/1, @@ -278,9 +279,51 @@ rec_tabs([], _, _, Init) -> unlink(Init), ok. -get_cstructs() -> +%% New function that does exactly what get_cstructs() used to do. +%% When this function is called, we know that the calling node knows +%% how to convert cstructs on the receiving end (should they differ). +get_remote_cstructs() -> call(get_cstructs). +%% Old function kept for backwards compatibility; converts cstructs before sending. +get_cstructs() -> + {cstructs, Cstructs, Running} = call(get_cstructs), + Node = node(group_leader()), + {cstructs, normalize_cstructs(Cstructs, Node), Running}. + +normalize_cstructs(Cstructs, Node) -> + %% backward-compatibility hack; normalize before returning + case rpc:call(Node, mnesia_lib, val, [{schema,cstruct}]) of + {badrpc, _} -> + %% assume it's not a schema merge + Cstructs; + #cstruct{} -> + %% same format + Cstructs; + Cstruct -> + %% some other format + RemoteFields = [F || {F,_} <- rpc:call(Node, mnesia_schema, cs2list, [Cstruct])], + [convert_cs(Cs, RemoteFields) || Cs <- Cstructs] + end. + +convert_cs(Cs, Fields) -> + MyFields = record_info(fields, cstruct), + convert(tl(tuple_to_list(Cs)), MyFields, Fields, []). + +convert([H|T], [F|FsL], [F|FsR], Acc) -> + convert(T, FsL, FsR, [H|Acc]); +convert([H|T], [Fl|FsL] = L, [Fr|FsR] = R, Acc) -> + case {lists:member(Fl, FsR), lists:member(Fr, FsL)} of + {true, false} -> + convert(T, L, FsR, [H|Acc]); + {false, true} -> + %% Field Fl doesn't exist on receiver side; skip. + convert(T, FsL, R, Acc) + end; +convert([], _, _, Acc) -> + list_to_tuple([cstruct|lists:reverse(Acc)]). + + update(Fun) -> call({update,Fun}). diff --git a/lib/mnesia/src/mnesia_dumper.erl b/lib/mnesia/src/mnesia_dumper.erl index 92fd9dfade..daa9e6aff2 100644 --- a/lib/mnesia/src/mnesia_dumper.erl +++ b/lib/mnesia/src/mnesia_dumper.erl @@ -214,7 +214,12 @@ insert_rec(Rec, InPlace, InitBy, LogV) when is_record(Rec, commit) -> {Tid, committed} -> do_insert_rec(Tid, Rec, InPlace, InitBy, LogV); {Tid, aborted} -> - mnesia_schema:undo_prepare_commit(Tid, Rec) + case InitBy of + startup -> + mnesia_schema:undo_prepare_commit(Tid, Rec); + _ -> + ok + end end; insert_rec(H, _InPlace, _InitBy, _LogV) when is_record(H, log_header) -> CurrentVersion = mnesia_log:version(), diff --git a/lib/mnesia/src/mnesia_loader.erl b/lib/mnesia/src/mnesia_loader.erl index e785b795d1..eb83168498 100644 --- a/lib/mnesia/src/mnesia_loader.erl +++ b/lib/mnesia/src/mnesia_loader.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2010. All Rights Reserved. +%% Copyright Ericsson AB 1998-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -27,7 +27,6 @@ net_load_table/4, send_table/3]). --export([old_node_init_table/6]). %% Spawned old node protocol conversion hack -export([spawned_receiver/8]). %% Spawned lock taking process -import(mnesia_lib, [set/2, fatal/2, verbose/2, dbg_out/2]). @@ -36,7 +35,7 @@ val(Var) -> case ?catch_val(Var) of - {'EXIT', Reason} -> mnesia_lib:other_val(Var, Reason); + {'EXIT', Reason} -> mnesia_lib:other_val(Var, Reason); Value -> Value end. @@ -51,7 +50,7 @@ disc_load_table(Tab, Reason) -> ?eval_debug_fun({?MODULE, do_get_disc_copy}, [{tab, Tab}, {reason, Reason}, - {storage, Storage}, + {storage, Storage}, {type, Type}]), do_get_disc_copy2(Tab, Reason, Storage, Type). @@ -63,19 +62,19 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == disc_copies -> %% NOW we create the actual table Repair = mnesia_monitor:get_env(auto_repair), Args = [{keypos, 2}, public, named_table, Type], - case Reason of + case Reason of {dumper, _} -> %% Resources allready allocated ignore; _ -> mnesia_monitor:mktab(Tab, Args), - Count = mnesia_log:dcd2ets(Tab, Repair), + Count = mnesia_log:dcd2ets(Tab, Repair), case ets:info(Tab, size) of X when X < Count * 4 -> - ok = mnesia_log:ets2dcd(Tab); + ok = mnesia_log:ets2dcd(Tab); _ -> ignore end - end, + end, mnesia_index:init_index(Tab, Storage), snmpify(Tab, Storage), set({Tab, load_node}, node()), @@ -84,7 +83,7 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == disc_copies -> do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == ram_copies -> Args = [{keypos, 2}, public, named_table, Type], - case Reason of + case Reason of {dumper, _} -> %% Resources allready allocated ignore; _ -> @@ -94,12 +93,12 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == ram_copies -> Repair = mnesia_monitor:get_env(auto_repair), case mnesia_monitor:use_dir() of true -> - case mnesia_lib:exists(Fname) of + case mnesia_lib:exists(Fname) of true -> mnesia_log:dcd2ets(Tab, Repair); false -> case mnesia_lib:exists(Datname) of true -> - mnesia_lib:dets_to_ets(Tab, Tab, Datname, + mnesia_lib:dets_to_ets(Tab, Tab, Datname, Type, Repair, no); false -> false @@ -154,11 +153,11 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == disc_only_copies - %% Disable rehashing of table %% Release read lock on table %% Send table to receiver in chunks -%% +%% %% Grab read lock on table %% Block dirty updates %% Update wherabouts -%% +%% %% Cancel the update subscription %% Process the subscription events %% Optionally dump to disc @@ -166,7 +165,7 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == disc_only_copies - %% Release read lock on table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --define(MAX_TRANSFER_SIZE, 7500). +-define(MAX_TRANSFER_SIZE, 7500). -define(MAX_RAM_FILE_SIZE, 1000000). -define(MAX_RAM_TRANSFERS, (?MAX_RAM_FILE_SIZE div ?MAX_TRANSFER_SIZE) + 1). -define(MAX_NOPACKETS, 20). @@ -187,14 +186,14 @@ try_net_load_table(Tab, Reason, Ns, Cs) -> do_get_network_copy(Tab, _Reason, _Ns, unknown, _Cs) -> verbose("Local table copy of ~p has recently been deleted, ignored.~n", [Tab]), {not_loaded, storage_unknown}; -do_get_network_copy(Tab, Reason, Ns, Storage, Cs) -> +do_get_network_copy(Tab, Reason, Ns, Storage, Cs) -> [Node | Tail] = Ns, case lists:member(Node,val({current, db_nodes})) of true -> dbg_out("Getting table ~p (~p) from node ~p: ~p~n", [Tab, Storage, Node, Reason]), ?eval_debug_fun({?MODULE, do_get_network_copy}, - [{tab, Tab}, {reason, Reason}, + [{tab, Tab}, {reason, Reason}, {nodes, Ns}, {storage, Storage}]), case init_receiver(Node, Tab, Storage, Cs, Reason) of ok -> @@ -208,7 +207,7 @@ do_get_network_copy(Tab, Reason, Ns, Storage, Cs) -> restart -> try_net_load_table(Tab, Reason, Tail ++ [Node], Cs); down -> - try_net_load_table(Tab, Reason, Tail, Cs) + try_net_load_table(Tab, Reason, Tail, Cs) end; false -> try_net_load_table(Tab, Reason, Tail, Cs) @@ -223,10 +222,10 @@ do_snmpify(Tab, Us, Storage) -> Snmp = mnesia_snmp_hook:create_table(Us, Tab, Storage), set({Tab, {index, snmp}}, Snmp). -%% Start the recieiver +%% Start the recieiver init_receiver(Node, Tab, Storage, Cs, Reas={dumper,add_table_copy}) -> case start_remote_sender(Node, Tab, Storage) of - {SenderPid, TabSize, DetsData} -> + {SenderPid, TabSize, DetsData} -> start_receiver(Tab,Storage,Cs,SenderPid,TabSize,DetsData,Reas); Else -> Else @@ -234,21 +233,21 @@ init_receiver(Node, Tab, Storage, Cs, Reas={dumper,add_table_copy}) -> init_receiver(Node, Tab,Storage,Cs,Reason) -> %% Grab a schema lock to avoid deadlock between table_loader and schema_commit dumping. %% Both may grab tables-locks in different order. - Load = - fun() -> - {_,Tid,Ts} = get(mnesia_activity_state), + Load = + fun() -> + {_,Tid,Ts} = get(mnesia_activity_state), mnesia_locker:rlock(Tid, Ts#tidstore.store, {schema, Tab}), - %% Check that table still exists + %% Check that table still exists Active = val({Tab, active_replicas}), %% Check that we havn't loaded it already case val({Tab,where_to_read}) == node() of true -> ok; _ -> - %% And that sender still got a copy - %% (something might have happend while + %% And that sender still got a copy + %% (something might have happend while %% we where waiting for the lock) true = lists:member(Node, Active), - {SenderPid, TabSize, DetsData} = + {SenderPid, TabSize, DetsData} = start_remote_sender(Node,Tab,Storage), Init = table_init_fun(SenderPid), Args = [self(),Tab,Storage,Cs,SenderPid, @@ -258,18 +257,18 @@ init_receiver(Node, Tab,Storage,Cs,Reason) -> wait_on_load_complete(Pid) end end, - Res = + Res = case mnesia:transaction(Load, 20) of - {atomic, {error,Result}} when - element(1,Reason) == dumper -> + {atomic, {error,Result}} when + element(1,Reason) == dumper -> {error,Result}; - {atomic, {error,Result}} -> + {atomic, {error,Result}} -> fatal("Cannot create table ~p: ~p~n", [[Tab, Storage], Result]); {atomic, Result} -> Result; {aborted, nomore} -> restart; - {aborted, _Reas} -> - verbose("Receiver failed on ~p from ~p:~nReason: ~p~n", + {aborted, _Reas} -> + verbose("Receiver failed on ~p from ~p:~nReason: ~p~n", [Tab,Node,_Reas]), down %% either this node or sender is dying end, @@ -279,7 +278,7 @@ init_receiver(Node, Tab,Storage,Cs,Reason) -> start_remote_sender(Node,Tab,Storage) -> mnesia_controller:start_remote_sender(Node, Tab, self(), Storage), put(mnesia_table_sender_node, {Tab, Node}), - receive + receive {SenderPid, {first, TabSize}} -> {SenderPid, TabSize, false}; {SenderPid, {first, TabSize, DetsData}} -> @@ -291,22 +290,14 @@ start_remote_sender(Node,Tab,Storage) -> end. table_init_fun(SenderPid) -> - PConv = mnesia_monitor:needs_protocol_conversion(node(SenderPid)), - MeMyselfAndI = self(), fun(read) -> - Receiver = - if - PConv == true -> - MeMyselfAndI ! {actual_tabrec, self()}, - MeMyselfAndI; %% Old mnesia - PConv == false -> self() - end, + Receiver = self(), SenderPid ! {Receiver, more}, get_data(SenderPid, Receiver) end. %% Add_table_copy get's it's own locks. -start_receiver(Tab,Storage,Cs,SenderPid,TabSize,DetsData,{dumper,add_table_copy}) -> +start_receiver(Tab,Storage,Cs,SenderPid,TabSize,DetsData,{dumper,add_table_copy}) -> Init = table_init_fun(SenderPid), case do_init_table(Tab,Storage,Cs,SenderPid,TabSize,DetsData,self(), Init) of Err = {error, _} -> @@ -317,8 +308,8 @@ start_receiver(Tab,Storage,Cs,SenderPid,TabSize,DetsData,{dumper,add_table_copy} end. spawned_receiver(ReplyTo,Tab,Storage,Cs, SenderPid,TabSize,DetsData, Init) -> - process_flag(trap_exit, true), - Done = do_init_table(Tab,Storage,Cs, + process_flag(trap_exit, true), + Done = do_init_table(Tab,Storage,Cs, SenderPid,TabSize,DetsData, ReplyTo, Init), ReplyTo ! {self(),Done}, @@ -327,17 +318,17 @@ spawned_receiver(ReplyTo,Tab,Storage,Cs, SenderPid,TabSize,DetsData, Init) -> exit(normal). wait_on_load_complete(Pid) -> - receive - {Pid, Res} -> + receive + {Pid, Res} -> Res; - {'EXIT', Pid, Reason} -> + {'EXIT', Pid, Reason} -> exit(Reason); - Else -> + Else -> Pid ! Else, wait_on_load_complete(Pid) end. -do_init_table(Tab,Storage,Cs,SenderPid, +do_init_table(Tab,Storage,Cs,SenderPid, TabSize,DetsInfo,OrigTabRec,Init) -> case create_table(Tab, TabSize, Storage, Cs) of {Storage,Tab} -> @@ -345,11 +336,9 @@ do_init_table(Tab,Storage,Cs,SenderPid, Node = node(SenderPid), put(mnesia_table_receiver, {Tab, Node, SenderPid}), mnesia_tm:block_tab(Tab), - PConv = mnesia_monitor:needs_protocol_conversion(Node), - - case init_table(Tab,Storage,Init,PConv,DetsInfo,SenderPid) of - ok -> - tab_receiver(Node,Tab,Storage,Cs,PConv,OrigTabRec); + case init_table(Tab,Storage,Init,DetsInfo,SenderPid) of + ok -> + tab_receiver(Node,Tab,Storage,Cs,OrigTabRec); Reason -> Msg = "[d]ets:init table failed", verbose("~s: ~p: ~p~n", [Msg, Tab, Reason]), @@ -360,7 +349,7 @@ do_init_table(Tab,Storage,Cs,SenderPid, end. create_table(Tab, TabSize, Storage, Cs) -> - if + if Storage == disc_only_copies -> mnesia_lib:lock_table(Tab), Tmp = mnesia_lib:tab2tmp(Tab), @@ -390,54 +379,30 @@ create_table(Tab, TabSize, Storage, Cs) -> end end. -tab_receiver(Node, Tab, Storage, Cs, PConv, OrigTabRec) -> +tab_receiver(Node, Tab, Storage, Cs, OrigTabRec) -> receive - {SenderPid, {no_more, DatBin}} when PConv == false -> + {SenderPid, {no_more, DatBin}} -> finish_copy(Storage,Tab,Cs,SenderPid,DatBin,OrigTabRec); - - %% Protocol conversion hack - {SenderPid, {no_more, DatBin}} when is_pid(PConv) -> - PConv ! {SenderPid, no_more}, - receive - {old_init_table_complete, ok} -> - finish_copy(Storage, Tab, Cs, SenderPid, DatBin,OrigTabRec); - {old_init_table_complete, Reason} -> - Msg = "OLD: [d]ets:init table failed", - verbose("~s: ~p: ~p~n", [Msg, Tab, Reason]), - down(Tab, Storage) - end; - - {actual_tabrec, Pid} -> - tab_receiver(Node, Tab, Storage, Cs, Pid,OrigTabRec); - - {SenderPid, {more, [Recs]}} when is_pid(PConv) -> - PConv ! {SenderPid, {more, Recs}}, %% Forward Msg to OldNodes - tab_receiver(Node, Tab, Storage, Cs, PConv,OrigTabRec); - {'EXIT', PConv, Reason} -> %% [d]ets:init process crashed - Msg = "Receiver crashed", - verbose("~s: ~p: ~p~n", [Msg, Tab, Reason]), - down(Tab, Storage); - %% Protocol conversion hack {copier_done, Node} -> verbose("Sender of table ~p crashed on node ~p ~n", [Tab, Node]), down(Tab, Storage); - + {'EXIT', Pid, Reason} -> handle_exit(Pid, Reason), - tab_receiver(Node, Tab, Storage, Cs, PConv,OrigTabRec) + tab_receiver(Node, Tab, Storage, Cs, OrigTabRec) end. make_table_fun(Pid, TabRec) -> fun(close) -> ok; (read) -> - get_data(Pid, TabRec) + get_data(Pid, TabRec) end. get_data(Pid, TabRec) -> - receive + receive {Pid, {more_z, CompressedRecs}} when is_binary(CompressedRecs) -> Pid ! {TabRec, more}, {zlib_uncompress(CompressedRecs), make_table_fun(Pid,TabRec)}; @@ -448,7 +413,7 @@ get_data(Pid, TabRec) -> end_of_input; {copier_done, Node} -> case node(Pid) of - Node -> + Node -> {copier_done, Node}; _ -> get_data(Pid, TabRec) @@ -458,10 +423,10 @@ get_data(Pid, TabRec) -> get_data(Pid, TabRec) end. -init_table(Tab, disc_only_copies, Fun, false, DetsInfo,Sender) -> +init_table(Tab, disc_only_copies, Fun, DetsInfo,Sender) -> ErtsVer = erlang:system_info(version), case DetsInfo of - {ErtsVer, DetsData} -> + {ErtsVer, DetsData} -> Res = (catch dets:is_compatible_bchunk_format(Tab, DetsData)), case Res of {'EXIT',{undef,[{dets,_,_}|_]}} -> @@ -481,28 +446,19 @@ init_table(Tab, disc_only_copies, Fun, false, DetsInfo,Sender) -> _ -> dets:init_table(Tab, Fun) end; -init_table(Tab, _, Fun, false, _DetsInfo,_) -> +init_table(Tab, _, Fun, _DetsInfo,_) -> case catch ets:init_table(Tab, Fun) of true -> ok; {'EXIT', Else} -> Else - end; -init_table(Tab, Storage, Fun, true, _DetsInfo, Sender) -> %% Old Nodes - spawn_link(?MODULE, old_node_init_table, - [Tab, Storage, Fun, self(), false, Sender]), - ok. + end. -old_node_init_table(Tab, Storage, Fun, TabReceiver, DetsInfo,Sender) -> - Res = init_table(Tab, Storage, Fun, false, DetsInfo,Sender), - TabReceiver ! {old_init_table_complete, Res}, - unlink(TabReceiver), - ok. finish_copy(Storage,Tab,Cs,SenderPid,DatBin,OrigTabRec) -> TabRef = {Storage, Tab}, subscr_receiver(TabRef, Cs#cstruct.record_name), case handle_last(TabRef, Cs#cstruct.type, DatBin) of - ok -> + ok -> mnesia_index:init_index(Tab, Storage), snmpify(Tab, Storage), %% OrigTabRec must not be the spawned tab-receiver @@ -534,7 +490,7 @@ subscr_receiver(TabRef = {_, Tab}, RecName) -> ok end. -handle_event(TabRef, write, Rec) -> +handle_event(TabRef, write, Rec) -> db_put(TabRef, Rec); handle_event(TabRef, delete, {_Tab, Key}) -> db_erase(TabRef, Key); @@ -545,8 +501,8 @@ handle_event(TabRef, clear_table, {_Tab, _Key}) -> handle_last({disc_copies, Tab}, _Type, nobin) -> Ret = mnesia_log:ets2dcd(Tab), - Fname = mnesia_lib:tab2dat(Tab), - case mnesia_lib:exists(Fname) of + Fname = mnesia_lib:tab2dat(Tab), + case mnesia_lib:exists(Fname) of true -> %% Remove old .DAT files. file:delete(Fname); false -> @@ -653,31 +609,29 @@ send_table(Pid, Tab, RemoteS) -> {error, {no_exists, Tab}}; Storage -> %% Send first - TabSize = mnesia:table_info(Tab, size), - Pconvert = mnesia_monitor:needs_protocol_conversion(node(Pid)), + TabSize = mnesia:table_info(Tab, size), KeysPerTransfer = calc_nokeys(Storage, Tab), ChunkData = dets:info(Tab, bchunk_format), - UseDetsChunk = - Storage == RemoteS andalso - Storage == disc_only_copies andalso - ChunkData /= undefined andalso - Pconvert == false, - if + UseDetsChunk = + Storage == RemoteS andalso + Storage == disc_only_copies andalso + ChunkData /= undefined, + if UseDetsChunk == true -> DetsInfo = erlang:system_info(version), Pid ! {self(), {first, TabSize, {DetsInfo, ChunkData}}}; true -> Pid ! {self(), {first, TabSize}} end, - + %% Debug info put(mnesia_table_sender, {Tab, node(Pid), Pid}), {Init, Chunk} = reader_funcs(UseDetsChunk, Tab, Storage, KeysPerTransfer), - + SendIt = fun() -> prepare_copy(Pid, Tab, Storage), - send_more(Pid, 1, Chunk, Init(), Tab, Pconvert), + send_more(Pid, 1, Chunk, Init(), Tab), finish_copy(Pid, Tab, Storage, RemoteS) end, @@ -698,7 +652,7 @@ send_table(Pid, Tab, RemoteS) -> {error, Reason} end end. - + prepare_copy(Pid, Tab, Storage) -> Trans = fun() -> @@ -717,11 +671,11 @@ prepare_copy(Pid, Tab, Storage) -> update_where_to_write(Tab, Node) -> case val({Tab, access_mode}) of - read_only -> + read_only -> ignore; - read_write -> + read_write -> Current = val({current, db_nodes}), - Ns = + Ns = case lists:member(Node, Current) of true -> Current; false -> [Node | Current] @@ -729,27 +683,27 @@ update_where_to_write(Tab, Node) -> update_where_to_write(Ns, Tab, Node) end. -update_where_to_write([], _, _) -> +update_where_to_write([], _, _) -> ok; update_where_to_write([H|T], Tab, AddNode) -> - rpc:call(H, mnesia_controller, call, + rpc:call(H, mnesia_controller, call, [{update_where_to_write, [add, Tab, AddNode], self()}]), update_where_to_write(T, Tab, AddNode). -send_more(Pid, N, Chunk, DataState, Tab, OldNode) -> +send_more(Pid, N, Chunk, DataState, Tab) -> receive {NewPid, more} -> - case send_packet(N - 1, NewPid, Chunk, DataState, OldNode) of - New when is_integer(New) -> + case send_packet(N - 1, NewPid, Chunk, DataState) of + New when is_integer(New) -> New - 1; NewData -> - send_more(NewPid, ?MAX_NOPACKETS, Chunk, NewData, Tab, OldNode) + send_more(NewPid, ?MAX_NOPACKETS, Chunk, NewData, Tab) end; {_NewPid, {old_protocol, Tab}} -> Storage = val({Tab, storage_type}), - {Init, NewChunk} = + {Init, NewChunk} = reader_funcs(false, Tab, Storage, calc_nokeys(Storage, Tab)), - send_more(Pid, 1, NewChunk, Init(), Tab, OldNode); + send_more(Pid, 1, NewChunk, Init(), Tab); {copier_done, Node} when Node == node(Pid)-> verbose("Receiver of table ~p crashed on ~p (more)~n", [Tab, Node]), @@ -770,7 +724,7 @@ dets_bchunk(Tab, Chunk) -> %% Arrg case dets:bchunk(Tab, Chunk) of {Cont, Data} -> {Data, Cont}; Else -> Else - end. + end. zlib_compress(Data, Level) -> BinData = term_to_binary(Data), @@ -793,28 +747,20 @@ compression_level() -> Val -> Val end. -send_packet(N, Pid, _Chunk, '$end_of_table', OldNode) -> - case OldNode of - true -> ignore; %% Old nodes can't handle the new no_more - false -> Pid ! {self(), no_more} - end, +send_packet(N, Pid, _Chunk, '$end_of_table') -> + Pid ! {self(), no_more}, N; -send_packet(N, Pid, Chunk, {[], Cont}, OldNode) -> - send_packet(N, Pid, Chunk, Chunk(Cont), OldNode); -send_packet(N, Pid, Chunk, {Recs, Cont}, OldNode) when N < ?MAX_NOPACKETS -> - case OldNode of - true -> - Pid ! {self(), {more, [Recs]}}; %% Old need's wrapping list - false -> - case compression_level() of - 0 -> - Pid ! {self(), {more, Recs}}; - Level -> - Pid ! {self(), {more_z, zlib_compress(Recs, Level)}} - end +send_packet(N, Pid, Chunk, {[], Cont}) -> + send_packet(N, Pid, Chunk, Chunk(Cont)); +send_packet(N, Pid, Chunk, {Recs, Cont}) when N < ?MAX_NOPACKETS -> + case compression_level() of + 0 -> + Pid ! {self(), {more, Recs}}; + Level -> + Pid ! {self(), {more_z, zlib_compress(Recs, Level)}} end, - send_packet(N+1, Pid, Chunk, Chunk(Cont), OldNode); -send_packet(_N, _Pid, _Chunk, DataState, _OldNode) -> + send_packet(N+1, Pid, Chunk, Chunk(Cont)); +send_packet(_N, _Pid, _Chunk, DataState) -> DataState. finish_copy(Pid, Tab, Storage, RemoteS) -> @@ -855,5 +801,5 @@ dat2bin(_Tab, _LocalS, _RemoteS) -> handle_exit(Pid, Reason) when node(Pid) == node() -> exit(Reason); -handle_exit(_Pid, _Reason) -> %% Not from our node, this will be handled by +handle_exit(_Pid, _Reason) -> %% Not from our node, this will be handled by ignore. %% mnesia_down soon. diff --git a/lib/mnesia/src/mnesia_monitor.erl b/lib/mnesia/src/mnesia_monitor.erl index b6eda9ad3a..e110ad3241 100644 --- a/lib/mnesia/src/mnesia_monitor.erl +++ b/lib/mnesia/src/mnesia_monitor.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. +%% Copyright Ericsson AB 1996-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -76,13 +76,13 @@ -include("mnesia.hrl"). --record(state, {supervisor, pending_negotiators = [], +-record(state, {supervisor, pending_negotiators = [], going_down = [], tm_started = false, early_connects = [], connecting, mq = []}). --define(current_protocol_version, {7,6}). +-define(current_protocol_version, {8,0}). --define(previous_protocol_version, {7,5}). +-define(previous_protocol_version, {7,6}). start() -> gen_server:start_link({local, ?MODULE}, ?MODULE, @@ -151,12 +151,12 @@ check_protocol([{Node, {accept, Mon, Version, Protocol}} | Tail], Protocols) -> case lists:member(Protocol, Protocols) of true -> case Protocol == protocol_version() of - true -> + true -> set({protocol, Node}, {Protocol, false}); false -> set({protocol, Node}, {Protocol, true}) end, - [node(Mon) | check_protocol(Tail, Protocols)]; + [node(Mon) | check_protocol(Tail, Protocols)]; false -> verbose("Failed to connect with ~p. ~p protocols rejected. " "expected version = ~p, expected protocol = ~p~n", @@ -179,7 +179,7 @@ check_protocol([], [Protocol | _Protocols]) -> set(protocol_version, Protocol), []. -protocol_version() -> +protocol_version() -> case ?catch_val(protocol_version) of {'EXIT', _} -> ?current_protocol_version; Version -> Version @@ -189,14 +189,14 @@ protocol_version() -> %% preferred protocols are first in the list acceptable_protocol_versions() -> [protocol_version(), ?previous_protocol_version]. - + needs_protocol_conversion(Node) -> case {?catch_val({protocol, Node}), protocol_version()} of {{'EXIT', _}, _} -> false; - {{_, Bool}, ?current_protocol_version} -> + {{_, Bool}, ?current_protocol_version} -> Bool; - {{_, Bool}, _} -> + {{_, Bool}, _} -> not Bool end. @@ -255,15 +255,15 @@ terminate_proc(Who, Reason, _State) -> %%---------------------------------------------------------------------- init([Parent]) -> process_flag(trap_exit, true), - ?ets_new_table(mnesia_gvar, [set, public, named_table]), - ?ets_new_table(mnesia_stats, [set, public, named_table]), + ?ets_new_table(mnesia_gvar, [set, public, named_table]), + ?ets_new_table(mnesia_stats, [set, public, named_table]), set(subscribers, []), set(activity_subscribers, []), mnesia_lib:verbose("~p starting: ~p~n", [?MODULE, self()]), Version = mnesia:system_info(version), set(version, Version), dbg_out("Version: ~p~n", [Version]), - + case catch process_config_args(env()) of ok -> mnesia_lib:set({'$$$_report', current_pos}, 0), @@ -283,7 +283,7 @@ init([Parent]) -> set(checkpoints, []), set(pending_checkpoints, []), set(pending_checkpoint_pids, []), - + {ok, #state{supervisor = Parent}}; {'EXIT', Reason} -> mnesia_lib:report_fatal("Bad configuration: ~p~n", [Reason]), @@ -398,9 +398,9 @@ handle_call({unsafe_close_log, Name}, _From, State) -> disk_log:close(Name), {reply, ok, State}; -handle_call({negotiate_protocol, Mon, _Version, _Protocols}, _From, State) +handle_call({negotiate_protocol, Mon, _Version, _Protocols}, _From, State) when State#state.tm_started == false -> - State2 = State#state{early_connects = [node(Mon) | State#state.early_connects]}, + State2 = State#state{early_connects = [node(Mon) | State#state.early_connects]}, {reply, {node(), {reject, self(), uninitialized, uninitialized}}, State2}; %% From remote monitor.. @@ -412,7 +412,7 @@ handle_call({negotiate_protocol, Mon, Version, Protocols}, From, State) true -> accept_protocol(Mon, MyVersion, Protocol, From, State); false -> - %% in this release we should be able to handle the previous + %% in this release we should be able to handle the previous %% protocol case hd(Protocols) of ?previous_protocol_version -> @@ -427,7 +427,7 @@ handle_call({negotiate_protocol, Mon, Version, Protocols}, From, State) end; %% Local request to negotiate with other monitors (nodes). -handle_call({negotiate_protocol, Nodes}, From, State) -> +handle_call({negotiate_protocol, Nodes}, From, State) -> case mnesia_lib:intersect(State#state.going_down, Nodes) of [] -> spawn_link(?MODULE, negotiate_protocol_impl, [Nodes, From]), @@ -461,7 +461,7 @@ accept_protocol(Mon, Version, Protocol, From, State) -> %% No need for wait link(Mon), %% link to remote Monitor case Protocol == protocol_version() of - true -> + true -> set({protocol, Node}, {Protocol, false}); false -> set({protocol, Node}, {Protocol, true}) @@ -509,7 +509,7 @@ handle_cast({disconnect, Node}, State) -> ignore; undefined -> ignore; - RemoteMon when is_pid(RemoteMon) -> + RemoteMon when is_pid(RemoteMon) -> unlink(RemoteMon) end, {noreply, State}; @@ -534,7 +534,7 @@ handle_info({'EXIT', Pid, R}, State) when Pid == State#state.supervisor -> dbg_out("~p was ~p by supervisor~n",[?MODULE, R]), {stop, R, State}; -handle_info({'EXIT', Pid, fatal}, State) when node(Pid) == node() -> +handle_info({'EXIT', Pid, fatal}, State) when node(Pid) == node() -> dbg_out("~p got FATAL ERROR from: ~p~n",[?MODULE, Pid]), exit(State#state.supervisor, shutdown), {noreply, State}; @@ -550,7 +550,7 @@ handle_info(Msg = {'EXIT',Pid,_}, State) -> Node /= node() -> {noreply, State#state{mq = State#state.mq ++ [{info, Msg}]}}; true -> - %% We have probably got an exit signal from + %% We have probably got an exit signal from %% disk_log or dets Hint = "Hint: check that the disk still is writable", fatal("~p got unexpected info: ~p; ~p~n", @@ -567,10 +567,10 @@ handle_info({nodeup, Node}, State) -> %% Let's check if Mnesia is running there in order %% to detect if the network has been partitioned %% due to communication failure. - + HasDown = mnesia_recover:has_mnesia_down(Node), ImRunning = mnesia_lib:is_running(), - + if %% If I'm not running the test will be made later. HasDown == true, ImRunning == yes -> @@ -589,7 +589,7 @@ handle_info({disk_log, _Node, Log, Info}, State) -> {truncated, _No} -> ok; _ -> - mnesia_lib:important("Warning Log file ~p error reason ~s~n", + mnesia_lib:important("Warning Log file ~p error reason ~s~n", [Log, disk_log:format_error(Info)]) end, {noreply, State}; @@ -681,38 +681,38 @@ env() -> send_compressed ]. -default_env(access_module) -> +default_env(access_module) -> mnesia; -default_env(auto_repair) -> +default_env(auto_repair) -> true; -default_env(backup_module) -> +default_env(backup_module) -> mnesia_backup; -default_env(debug) -> +default_env(debug) -> none; default_env(dir) -> Name = lists:concat(["Mnesia.", node()]), filename:absname(Name); -default_env(dump_log_load_regulation) -> +default_env(dump_log_load_regulation) -> false; -default_env(dump_log_time_threshold) -> +default_env(dump_log_time_threshold) -> timer:minutes(3); -default_env(dump_log_update_in_place) -> +default_env(dump_log_update_in_place) -> true; default_env(dump_log_write_threshold) -> 1000; -default_env(embedded_mnemosyne) -> +default_env(embedded_mnemosyne) -> false; -default_env(event_module) -> +default_env(event_module) -> mnesia_event; -default_env(extra_db_nodes) -> +default_env(extra_db_nodes) -> []; -default_env(ignore_fallback_at_startup) -> +default_env(ignore_fallback_at_startup) -> false; default_env(fallback_error_function) -> {mnesia, lkill}; -default_env(max_wait_for_decision) -> +default_env(max_wait_for_decision) -> infinity; -default_env(schema_location) -> +default_env(schema_location) -> opt_disc; default_env(core_dir) -> false; @@ -732,7 +732,7 @@ check_type(Env, Val) -> NewVal -> NewVal end. - + do_check_type(access_module, A) when is_atom(A) -> A; do_check_type(auto_repair, B) -> bool(B); do_check_type(backup_module, B) when is_atom(B) -> B; @@ -749,7 +749,7 @@ do_check_type(dump_log_update_in_place, B) -> bool(B); do_check_type(dump_log_write_threshold, I) when is_integer(I), I > 0 -> I; do_check_type(event_module, A) when is_atom(A) -> A; do_check_type(ignore_fallback_at_startup, B) -> bool(B); -do_check_type(fallback_error_function, {Mod, Func}) +do_check_type(fallback_error_function, {Mod, Func}) when is_atom(Mod), is_atom(Func) -> {Mod, Func}; do_check_type(embedded_mnemosyne, B) -> bool(B); do_check_type(extra_db_nodes, L) when is_list(L) -> @@ -804,8 +804,8 @@ detect_inconcistency(Nodes, Context) -> has_remote_mnesia_down(Node) -> HasDown = mnesia_recover:has_mnesia_down(Node), Master = mnesia_recover:get_master_nodes(schema), - if - HasDown == true, Master == [] -> + if + HasDown == true, Master == [] -> {true, node()}; true -> {false, node()} diff --git a/lib/mnesia/src/mnesia_schema.erl b/lib/mnesia/src/mnesia_schema.erl index fef72ad39c..05be474aea 100644 --- a/lib/mnesia/src/mnesia_schema.erl +++ b/lib/mnesia/src/mnesia_schema.erl @@ -100,7 +100,7 @@ ]). %% Needed outside to be able to use/set table_properties -%% from user (not supported) +%% from user (not supported) -export([schema_transaction/1, insert_schema_ops/2, do_create_table/1, @@ -118,9 +118,9 @@ %% Here comes the init function which also resides in %% this module, it is called upon by the trans server %% at startup of the system -%% +%% %% We have a meta table which looks like -%% {table, schema, +%% {table, schema, %% {type, set}, %% {disc_copies, all}, %% {arity, 2} @@ -149,14 +149,14 @@ exit_on_error(GoodRes) -> val(Var) -> case ?catch_val(Var) of - {'EXIT', Reason} -> mnesia_lib:other_val(Var, Reason); - Value -> Value + {'EXIT', Reason} -> mnesia_lib:other_val(Var, Reason); + Value -> Value end. %% This function traverses all cstructs in the schema and %% sets all values in mnesia_gvar accordingly for each table/cstruct -set_schema('$end_of_table') -> +set_schema('$end_of_table') -> []; set_schema(Tab) -> do_set_schema(Tab), @@ -253,8 +253,8 @@ version() -> incr_version(Cs) -> {{Major, Minor}, _} = Cs#cstruct.version, Nodes = mnesia_lib:intersect(val({schema, disc_copies}), - mnesia_lib:cs_to_nodes(Cs)), - V = + mnesia_lib:cs_to_nodes(Cs)), + V = case Nodes -- val({Cs#cstruct.name, active_replicas}) of [] -> {Major + 1, 0}; % All replicas are active _ -> {Major, Minor + 1} % Some replicas are inactive @@ -359,7 +359,7 @@ delete_schema2() -> {error, Reason} -> {error, Reason} end. - + ensure_no_schema([H|T]) when is_atom(H) -> case rpc:call(H, ?MODULE, remote_read_schema, []) of {badrpc, Reason} -> @@ -407,7 +407,7 @@ opt_create_dir(UseDir, Dir) when UseDir == true-> check_can_write(Dir); false -> case file:make_dir(Dir) of - ok -> + ok -> verbose("Create Directory ~p~n", [Dir]), ok; {error, Reason} -> @@ -417,7 +417,7 @@ opt_create_dir(UseDir, Dir) when UseDir == true-> end; opt_create_dir(false, _) -> {error, {has_no_disc, node()}}. - + check_can_write(Dir) -> case file:read_file_info(Dir) of {ok, FI} when FI#file_info.type == directory, @@ -450,7 +450,7 @@ read_schema(Keep) -> read_schema(Keep, IgnoreFallback) -> lock_schema(), - Res = + Res = case mnesia:system_info(is_running) of yes -> {ok, ram, get_create_list(schema)}; @@ -477,7 +477,7 @@ read_disc_schema(Keep, IgnoreFallback) -> case mnesia_bup:fallback_exists() of true when IgnoreFallback == false, Running /= yes -> mnesia_bup:fallback_to_schema(); - _ -> + _ -> %% If we're running, we read the schema file even %% if fallback exists Dat = mnesia_lib:tab2dat(schema), @@ -499,7 +499,7 @@ read_disc_schema(Keep, IgnoreFallback) -> end. do_read_disc_schema(Fname, Keep) -> - T = + T = case Keep of false -> Args = [{keypos, 2}, public, set], @@ -523,7 +523,7 @@ do_read_disc_schema(Fname, Keep) -> get_initial_schema(SchemaStorage, Nodes) -> Cs = #cstruct{name = schema, record_name = schema, - attributes = [table, cstruct]}, + attributes = [table, cstruct]}, Cs2 = case SchemaStorage of ram_copies -> Cs#cstruct{ram_copies = Nodes}; @@ -532,7 +532,7 @@ get_initial_schema(SchemaStorage, Nodes) -> cs2list(Cs2). read_cstructs_from_disc() -> - %% Assumptions: + %% Assumptions: %% - local schema lock in global %% - use_dir is true %% - Mnesia is not running @@ -552,14 +552,14 @@ read_cstructs_from_disc() -> end, Cstructs = dets:traverse(Tab, Fun), dets:close(Tab), - {ok, Cstructs}; + {ok, Cstructs}; {error, Reason} -> {error, Reason} end; false -> {error, "No schema file exists"} end. - + %% We run a very special type of transactions when we %% we want to manipulate the schema. @@ -593,20 +593,20 @@ schema_transaction(Fun) -> %% This process may dump the transaction log, and should %% therefore not be run in an application process -%% +%% schema_coordinator(Client, _Fun, undefined) -> Res = {aborted, {node_not_running, node()}}, Client ! {transaction_done, Res, self()}, unlink(Client); - + schema_coordinator(Client, Fun, Controller) when is_pid(Controller) -> %% Do not trap exit in order to automatically die %% when the controller dies link(Controller), unlink(Client), - - %% Fulfull the transaction even if the client dies + + %% Fulfull the transaction even if the client dies Res = mnesia:transaction(Fun), Client ! {transaction_done, Res, self()}, unlink(Controller), % Avoids spurious exit message @@ -619,7 +619,7 @@ schema_coordinator(Client, Fun, Controller) when is_pid(Controller) -> insert_schema_ops({_Mod, _Tid, Ts}, SchemaIOps) -> do_insert_schema_ops(Ts#tidstore.store, SchemaIOps). - + do_insert_schema_ops(Store, [Head | Tail]) -> ?ets_insert(Store, Head), do_insert_schema_ops(Store, Tail); @@ -628,15 +628,56 @@ do_insert_schema_ops(_Store, []) -> cs2list(Cs) when is_record(Cs, cstruct) -> Tags = record_info(fields, cstruct), - rec2list(Tags, 2, Cs); + rec2list(Tags, Tags, 2, Cs); cs2list(CreateList) when is_list(CreateList) -> - CreateList. - -rec2list([Tag | Tags], Pos, Rec) -> + CreateList; +%% 4.4.19 +cs2list(Cs) when element(1, Cs) == cstruct, tuple_size(Cs) == 18 -> + Tags = [name,type,ram_copies,disc_copies,disc_only_copies, + load_order,access_mode,majority,index,snmp,local_content, + record_name,attributes,user_properties,frag_properties, + cookie,version], + rec2list(Tags, Tags, 2, Cs); +%% 4.4.18 and earlier +cs2list(Cs) when element(1, Cs) == cstruct, tuple_size(Cs) == 17 -> + Tags = [name,type,ram_copies,disc_copies,disc_only_copies, + load_order,access_mode,index,snmp,local_content, + record_name,attributes,user_properties,frag_properties, + cookie,version], + rec2list(Tags, Tags, 2, Cs). + +cs2list(false, Cs) -> + cs2list(Cs); +cs2list(ver4_4_18, Cs) -> + Orig = record_info(fields, cstruct), + Tags = [name,type,ram_copies,disc_copies,disc_only_copies, + load_order,access_mode,index,snmp,local_content, + record_name,attributes,user_properties,frag_properties, + cookie,version], + rec2list(Tags, Orig, 2, Cs); +cs2list(ver4_4_19, Cs) -> + Orig = record_info(fields, cstruct), + Tags = [name,type,ram_copies,disc_copies,disc_only_copies, + load_order,access_mode,majority,index,snmp,local_content, + record_name,attributes,user_properties,frag_properties, + cookie,version], + rec2list(Tags, Orig, 2, Cs). + +rec2list([Tag | Tags], [Tag | Orig], Pos, Rec) -> Val = element(Pos, Rec), - [{Tag, Val} | rec2list(Tags, Pos + 1, Rec)]; -rec2list([], _Pos, _Rec) -> - []. + [{Tag, Val} | rec2list(Tags, Orig, Pos + 1, Rec)]; +rec2list([], _, _Pos, _Rec) -> + []; +rec2list(Tags, [_|Orig], Pos, Rec) -> + rec2list(Tags, Orig, Pos+1, Rec). + +api_list2cs(List) when is_list(List) -> + Name = pick(unknown, name, List, must), + Keys = check_keys(Name, List, record_info(fields, cstruct)), + check_duplicates(Name, Keys), + list2cs(List); +api_list2cs(Other) -> + mnesia:abort({badarg, Other}). list2cs(List) when is_list(List) -> Name = pick(unknown, name, List, must), @@ -667,10 +708,7 @@ list2cs(List) when is_list(List) -> Frag = pick(Name, frag_properties, List, []), verify({alt, [nil, list]}, mnesia_lib:etype(Frag), - {badarg, Name, {frag_properties, Frag}}), - - Keys = check_keys(Name, List, record_info(fields, cstruct)), - check_duplicates(Name, Keys), + {badarg, Name, {frag_properties, Frag}}), #cstruct{name = Name, ram_copies = Rc, disc_copies = Dc, @@ -687,9 +725,7 @@ list2cs(List) when is_list(List) -> user_properties = lists:sort(UserProps), frag_properties = lists:sort(Frag), cookie = Cookie, - version = Version}; -list2cs(Other) -> - mnesia:abort({badarg, Other}). + version = Version}. pick(Tab, Key, List, Default) -> case lists:keysearch(Key, 1, List) of @@ -708,7 +744,7 @@ attr_tab_to_pos(_Tab, Pos) when is_integer(Pos) -> Pos; attr_tab_to_pos(Tab, Attr) -> attr_to_pos(Attr, val({Tab, attributes})). - + %% Convert attribute name to integer if neccessary attr_to_pos(Pos, _Attrs) when is_integer(Pos) -> Pos; @@ -723,7 +759,7 @@ attr_to_pos(Attr, [_ | Attrs], Pos) -> attr_to_pos(Attr, Attrs, Pos + 1); attr_to_pos(Attr, _, _) -> mnesia:abort({bad_type, Attr}). - + check_keys(Tab, [{Key, _Val} | Tail], Items) -> case lists:member(Key, Items) of true -> [Key | check_keys(Tab, Tail, Items)]; @@ -759,7 +795,7 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> {bad_type, Tab, {type, Type}}), %% Currently ordered_set is not supported for disk_only_copies. - if + if Type == ordered_set, Cs#cstruct.disc_only_copies /= [] -> mnesia:abort({bad_type, Tab, {not_supported, Type, disc_only_copies}}); true -> @@ -776,10 +812,10 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> Arity = length(Attrs) + 1, verify(true, Arity > 2, {bad_type, Tab, {attributes, Attrs}}), - + lists:foldl(fun(Attr,_Other) when Attr == snmp -> mnesia:abort({bad_type, Tab, {attributes, [Attr]}}); - (Attr,Other) -> + (Attr,Other) -> verify(atom, mnesia_lib:etype(Attr), {bad_type, Tab, {attributes, [Attr]}}), verify(false, lists:member(Attr, Other), @@ -792,7 +828,7 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> Index = Cs#cstruct.index, verify({alt, [nil, list]}, mnesia_lib:etype(Index), {bad_type, Tab, {index, Index}}), - + IxFun = fun(Pos) -> verify(true, fun() -> @@ -807,7 +843,7 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> {bad_type, Tab, {index, [Pos]}}) end, lists:foreach(IxFun, Index), - + LC = Cs#cstruct.local_content, verify({alt, [true, false]}, LC, {bad_type, Tab, {local_content, LC}}), @@ -834,7 +870,7 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> lists:foreach(CheckProp, Cs#cstruct.user_properties), case Cs#cstruct.cookie of - {{MegaSecs, Secs, MicroSecs}, _Node} + {{MegaSecs, Secs, MicroSecs}, _Node} when is_integer(MegaSecs), is_integer(Secs), is_integer(MicroSecs), is_atom(node) -> ok; @@ -870,15 +906,15 @@ verify_nodes(Cs) -> end, verify(integer, mnesia_lib:etype(LoadOrder), {bad_type, Tab, {load_order, LoadOrder}}), - + Nodes = Ram ++ Disc ++ DiscOnly, verify(list, mnesia_lib:etype(Nodes), {combine_error, Tab, [{ram_copies, []}, {disc_copies, []}, {disc_only_copies, []}]}), verify(false, has_duplicates(Nodes), {combine_error, Tab, Nodes}), - AtomCheck = fun(N) -> verify(atom, mnesia_lib:etype(N), {bad_type, Tab, N}) end, + AtomCheck = fun(N) -> verify(atom, mnesia_lib:etype(N), {bad_type, Tab, N}) end, lists:foreach(AtomCheck, Nodes). - + verify(Expected, Fun, Error) when is_function(Fun) -> do_verify(Expected, catch Fun(), Error); verify(Expected, Actual, Error) -> @@ -909,7 +945,7 @@ ensure_active(Cs, What) -> W = {Tab, What}, ensure_non_empty(W), Nodes = mnesia_lib:intersect(val({schema, disc_copies}), - mnesia_lib:cs_to_nodes(Cs)), + mnesia_lib:cs_to_nodes(Cs)), case Nodes -- val(W) of [] -> ok; @@ -936,7 +972,7 @@ ensure_non_empty({Tab, Vhat}) -> ensure_not_active(Tab = schema, Node) -> Active = val({Tab, active_replicas}), - case lists:member(Node, Active) of + case lists:member(Node, Active) of false when Active =/= [] -> ok; false -> @@ -970,7 +1006,7 @@ create_table(TabDef) -> do_multi_create_table(TabDef) -> get_tid_ts_and_lock(schema, write), ensure_writable(schema), - Cs = list2cs(TabDef), + Cs = api_list2cs(TabDef), case Cs#cstruct.frag_properties of [] -> do_create_table(Cs); @@ -999,7 +1035,7 @@ unsafe_make_create_table(Cs) -> {_Mod, Tid, Ts} = get_tid_ts_and_lock(schema, none), verify_cstruct(Cs), Tab = Cs#cstruct.name, - + %% Check that we have all disc replica nodes running DiscNodes = Cs#cstruct.disc_copies ++ Cs#cstruct.disc_only_copies, RunningNodes = val({current, db_nodes}), @@ -1017,7 +1053,7 @@ unsafe_make_create_table(Cs) -> check_if_exists(Tab) -> TidTs = get_tid_ts_and_lock(schema, write), {_, _, Ts} = TidTs, - Store = Ts#tidstore.store, + Store = Ts#tidstore.store, ets:foldl( fun({op, create_table, [{name, T}|_]}, _Acc) when T==Tab -> true; @@ -1054,7 +1090,7 @@ make_delete_table(Tab, Mode) -> %% nodes etc. TidTs = get_tid_ts_and_lock(schema, write), {_, _, Ts} = TidTs, - Store = Ts#tidstore.store, + Store = Ts#tidstore.store, Deleted = ets:select_delete( Store, [{{op,'$1',[{name,Tab}|'_']}, [{'or', @@ -1077,9 +1113,9 @@ make_delete_table(Tab, Mode) -> [] -> [make_delete_table2(Tab)]; _Props -> - %% Check if it is a base table - mnesia_frag:lookup_frag_hash(Tab), - + %% Check if it is a base table + mnesia_frag:lookup_frag_hash(Tab), + %% Check for foreigners F = mnesia_frag:lookup_foreigners(Tab), verify([], F, {combine_error, @@ -1101,7 +1137,7 @@ make_delete_table2(Tab) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Change fragmentation of a table - + change_table_frag(Tab, Change) -> schema_transaction(fun() -> do_change_table_frag(Tab, Change) end). @@ -1112,7 +1148,7 @@ do_change_table_frag(Tab, Change) when is_atom(Tab), Tab /= schema -> ok; do_change_table_frag(Tab, _Change) -> mnesia:abort({bad_type, Tab}). - + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Clear a table @@ -1150,7 +1186,7 @@ make_add_table_copy(Tab, Node, Storage) -> verify(false, lists:member(Node, Ns), {already_exists, Tab, Node}), Cs2 = new_cs(Cs, Node, Storage, add), verify_cstruct(Cs2), - + %% Check storage and if node is running IsRunning = lists:member(Node, val({current, db_nodes})), if @@ -1177,21 +1213,21 @@ del_table_copy(Tab, Node) -> do_del_table_copy(Tab, Node) when is_atom(Node) -> TidTs = get_tid_ts_and_lock(schema, write), -%% get_tid_ts_and_lock(Tab, write), +%% get_tid_ts_and_lock(Tab, write), insert_schema_ops(TidTs, make_del_table_copy(Tab, Node)); do_del_table_copy(Tab, Node) -> mnesia:abort({badarg, Tab, Node}). - + make_del_table_copy(Tab, Node) -> ensure_writable(schema), Cs = incr_version(val({Tab, cstruct})), Storage = mnesia_lib:schema_cs_to_storage_type(Node, Cs), - Cs2 = new_cs(Cs, Node, Storage, del), + Cs2 = new_cs(Cs, Node, Storage, del), case mnesia_lib:cs_to_nodes(Cs2) of [] when Tab == schema -> mnesia:abort({combine_error, Tab, "Last replica"}); [] -> - ensure_active(Cs), + ensure_active(Cs), dbg_out("Last replica deleted in table ~p~n", [Tab]), make_delete_table(Tab, whole_table); _ when Tab == schema -> @@ -1210,14 +1246,14 @@ remove_node_from_tabs([], _Node) -> []; remove_node_from_tabs([schema|Rest], Node) -> remove_node_from_tabs(Rest, Node); -remove_node_from_tabs([Tab|Rest], Node) -> - {Cs, IsFragModified} = +remove_node_from_tabs([Tab|Rest], Node) -> + {Cs, IsFragModified} = mnesia_frag:remove_node(Node, incr_version(val({Tab, cstruct}))), case mnesia_lib:schema_cs_to_storage_type(Node, Cs) of unknown -> case IsFragModified of true -> - [{op, change_table_frag, {del_node, Node}, cs2list(Cs)} | + [{op, change_table_frag, {del_node, Node}, cs2list(Cs)} | remove_node_from_tabs(Rest, Node)]; false -> remove_node_from_tabs(Rest, Node) @@ -1246,7 +1282,7 @@ new_cs(Cs, Node, ram_copies, del) -> new_cs(Cs, Node, disc_copies, del) -> Cs#cstruct{disc_copies = lists:delete(Node , Cs#cstruct.disc_copies)}; new_cs(Cs, Node, disc_only_copies, del) -> - Cs#cstruct{disc_only_copies = + Cs#cstruct{disc_only_copies = lists:delete(Node , Cs#cstruct.disc_only_copies)}; new_cs(Cs, _Node, Storage, _Op) -> mnesia:abort({badarg, Cs#cstruct.name, Storage}). @@ -1278,7 +1314,7 @@ make_move_table(Tab, FromNode, ToNode) -> Running = val({current, db_nodes}), Storage = mnesia_lib:schema_cs_to_storage_type(FromNode, Cs), verify(true, lists:member(ToNode, Running), {not_active, schema, ToNode}), - + Cs2 = new_cs(Cs, ToNode, Storage, add), Cs3 = new_cs(Cs2, FromNode, Storage, del), verify_cstruct(Cs3), @@ -1306,7 +1342,7 @@ make_change_table_copy_type(Tab, Node, unknown) -> make_change_table_copy_type(Tab, Node, ToS) -> ensure_writable(schema), Cs = incr_version(val({Tab, cstruct})), - FromS = mnesia_lib:storage_type_at_node(Node, Tab), + FromS = mnesia_lib:storage_type_at_node(Node, Tab), case compare_storage_type(false, FromS, ToS) of {same, _} -> @@ -1320,12 +1356,12 @@ make_change_table_copy_type(Tab, Node, ToS) -> Cs2 = new_cs(Cs, Node, FromS, del), Cs3 = new_cs(Cs2, Node, ToS, add), verify_cstruct(Cs3), - + [{op, change_table_copy_type, Node, FromS, ToS, cs2list(Cs3)}]. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% change index functions .... -%% Pos is allready added by 1 in both of these functions +%% Pos is allready added by 1 in both of these functions add_table_index(Tab, Pos) -> schema_transaction(fun() -> do_add_table_index(Tab, Pos) end). @@ -1412,14 +1448,14 @@ make_del_snmp(Tab) -> [{op, del_snmp, cs2list(Cs2)}]. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% +%% -transform_table(Tab, Fun, NewAttrs, NewRecName) - when is_function(Fun), is_list(NewAttrs), is_atom(NewRecName) -> +transform_table(Tab, Fun, NewAttrs, NewRecName) + when is_function(Fun), is_list(NewAttrs), is_atom(NewRecName) -> schema_transaction(fun() -> do_transform_table(Tab, Fun, NewAttrs, NewRecName) end); -transform_table(Tab, ignore, NewAttrs, NewRecName) - when is_list(NewAttrs), is_atom(NewRecName) -> +transform_table(Tab, ignore, NewAttrs, NewRecName) + when is_list(NewAttrs), is_atom(NewRecName) -> schema_transaction(fun() -> do_transform_table(Tab, ignore, NewAttrs, NewRecName) end); transform_table(Tab, Fun, NewAttrs, NewRecName) -> @@ -1438,7 +1474,7 @@ make_transform(Tab, Fun, NewAttrs, NewRecName) -> ensure_active(Cs), ensure_writable(Tab), case mnesia_lib:val({Tab, index}) of - [] -> + [] -> Cs2 = Cs#cstruct{attributes = NewAttrs, record_name = NewRecName}, verify_cstruct(Cs2), [{op, transform, Fun, cs2list(Cs2)}]; @@ -1464,7 +1500,7 @@ make_transform(Tab, Fun, NewAttrs, NewRecName) -> end. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% +%% change_table_access_mode(Tab, Mode) -> schema_transaction(fun() -> do_change_table_access_mode(Tab, Mode) end). @@ -1598,9 +1634,9 @@ change_prop_in_existing_op(Tab, Prop, How, Store) -> false -> false end. - -update_existing_op([{op, Op, L = [{name,Tab}|_], _OldProp}|Ops], - Tab, Prop, How, Acc) when Op == write_property; + +update_existing_op([{op, Op, L = [{name,Tab}|_], _OldProp}|Ops], + Tab, Prop, How, Acc) when Op == write_property; Op == delete_property -> %% Apparently, mnesia_dumper doesn't care about OldProp here -- just L, %% so we will throw away OldProp (not that it matters...) and insert Prop. @@ -1625,7 +1661,7 @@ update_existing_op([], _, _, _, _) -> do_read_table_property(Tab, Key) -> TidTs = get_tid_ts_and_lock(schema, read), {_, _, Ts} = TidTs, - Store = Ts#tidstore.store, + Store = Ts#tidstore.store, Props = ets:foldl( fun({op, create_table, [{name, T}|Opts]}, _Acc) when T==Tab -> @@ -1689,7 +1725,7 @@ do_delete_table_property(Tab, PropKey) -> [Tab,PropKey]), %% this must be an existing table get_tid_ts_and_lock(Tab, none), - insert_schema_ops(TidTs, + insert_schema_ops(TidTs, make_delete_table_properties(Tab, [PropKey])) end. @@ -1711,17 +1747,17 @@ make_delete_table_properties(_Tab, [], _Cs) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Ensure that the transaction can be committed even +%% Ensure that the transaction can be committed even %% if the node crashes and Mnesia is restarted prepare_commit(Tid, Commit, WaitFor) -> case Commit#commit.schema_ops of [] -> {false, Commit, optional}; OrigOps -> - {Modified, Ops, DumperMode} = + {Modified, Ops, DumperMode} = prepare_ops(Tid, OrigOps, WaitFor, false, [], optional), InitBy = schema_prepare, - GoodRes = {Modified, + GoodRes = {Modified, Commit#commit{schema_ops = lists:reverse(Ops)}, DumperMode}, case DumperMode of @@ -1737,7 +1773,7 @@ prepare_commit(Tid, Commit, WaitFor) -> end end, case Ops of - [] -> + [] -> ignore; _ -> %% We need to grab a dumper lock here, the log may not @@ -1749,20 +1785,20 @@ prepare_commit(Tid, Commit, WaitFor) -> prepare_ops(Tid, [Op | Ops], WaitFor, Changed, Acc, DumperMode) -> case prepare_op(Tid, Op, WaitFor) of - {true, mandatory} -> + {true, mandatory} -> prepare_ops(Tid, Ops, WaitFor, Changed, [Op | Acc], mandatory); - {true, optional} -> + {true, optional} -> prepare_ops(Tid, Ops, WaitFor, Changed, [Op | Acc], DumperMode); - {true, Ops2, mandatory} -> + {true, Ops2, mandatory} -> prepare_ops(Tid, Ops, WaitFor, true, Ops2 ++ Acc, mandatory); - {true, Ops2, optional} -> + {true, Ops2, optional} -> prepare_ops(Tid, Ops, WaitFor, true, Ops2 ++ Acc, DumperMode); - {false, optional} -> + {false, optional} -> prepare_ops(Tid, Ops, WaitFor, true, Acc, DumperMode) end; prepare_ops(_Tid, [], _WaitFor, Changed, Acc, DumperMode) -> {Changed, Acc, DumperMode}. - + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Prepare for commit %% returns true if Op should be included, i.e. unmodified @@ -1781,8 +1817,8 @@ prepare_op(_Tid, {op, rec, unknown, Rec}, _WaitFor) -> prepare_op(_Tid, {op, announce_im_running, Node, SchemaDef, Running, RemoteRunning}, _WaitFor) -> SchemaCs = list2cs(SchemaDef), - if - Node == node() -> %% Announce has already run on local node + if + Node == node() -> %% Announce has already run on local node ignore; %% from do_merge_schema true -> %% If a node has restarted it may still linger in db_nodes, @@ -1794,9 +1830,9 @@ prepare_op(_Tid, {op, announce_im_running, Node, SchemaDef, Running, RemoteRunni end, {false, optional}; -prepare_op(_Tid, {op, sync_trans}, {part, CoordPid}) -> +prepare_op(_Tid, {op, sync_trans}, {part, CoordPid}) -> CoordPid ! {sync_trans, self()}, - receive + receive {sync_trans, CoordPid} -> {false, optional}; {mnesia_down, _Node} = Else -> @@ -1807,7 +1843,7 @@ prepare_op(_Tid, {op, sync_trans}, {part, CoordPid}) -> mnesia:abort(Else) end; -prepare_op(_Tid, {op, sync_trans}, {coord, Nodes}) -> +prepare_op(_Tid, {op, sync_trans}, {coord, Nodes}) -> case receive_sync(Nodes, []) of {abort, Reason} -> mnesia_lib:verbose("sync_op terminated due to ~p~n", [Reason]), @@ -1838,7 +1874,7 @@ prepare_op(Tid, {op, create_table, TabDef}, _WaitFor) -> create_ram_table(Tab, Cs#cstruct.type), create_disc_table(Tab), insert_cstruct(Tid, Cs, false), - {true, optional}; + {true, optional}; disc_only_copies -> mnesia_lib:set({Tab, create_table},true), create_disc_only_table(Tab,Cs#cstruct.type), @@ -1857,15 +1893,15 @@ prepare_op(Tid, {op, add_table_copy, Storage, Node, TabDef}, _WaitFor) -> if Tab == schema -> {true, optional}; - + Node == node() -> - case mnesia_lib:val({schema, storage_type}) of - ram_copies when Storage /= ram_copies -> + case mnesia_lib:val({schema, storage_type}) of + ram_copies when Storage /= ram_copies -> Error = {combine_error, Tab, "has no disc", Node}, mnesia:abort(Error); _ -> ok - end, + end, %% Tables are created by mnesia_loader get_network code insert_cstruct(Tid, Cs, true), case mnesia_controller:get_network_copy(Tab, Cs) of @@ -1902,22 +1938,22 @@ prepare_op(Tid, {op, add_table_copy, Storage, Node, TabDef}, _WaitFor) -> prepare_op(Tid, {op, del_table_copy, _Storage, Node, TabDef}, _WaitFor) -> Cs = list2cs(TabDef), Tab = Cs#cstruct.name, - + if %% Schema table lock is always required to run a schema op. %% No need to look it. - node(Tid#tid.pid) == node(), Tab /= schema -> + node(Tid#tid.pid) == node(), Tab /= schema -> Self = self(), Pid = spawn_link(fun() -> lock_del_table(Tab, Node, Cs, Self) end), put(mnesia_lock, Pid), - receive - {Pid, updated} -> + receive + {Pid, updated} -> {true, optional}; {Pid, FailReason} -> mnesia:abort(FailReason); {'EXIT', Pid, Reason} -> mnesia:abort(Reason) - end; + end; true -> {true, optional} end; @@ -1928,12 +1964,12 @@ prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}, _WaitFor) Tab = Cs#cstruct.name, NotActive = mnesia_lib:not_active_here(Tab), - - if + + if NotActive == true -> mnesia:abort({not_active, Tab, node()}); - - Tab == schema -> + + Tab == schema -> case {FromS, ToS} of {ram_copies, disc_copies} -> case mnesia:system_info(schema_location) of @@ -1943,7 +1979,7 @@ prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}, _WaitFor) mnesia:abort({combine_error, Tab, node(), "schema_location must be opt_disc"}) end, - Dir = mnesia_lib:dir(), + Dir = mnesia_lib:dir(), case opt_create_dir(true, Dir) of ok -> purge_dir(Dir, []), @@ -1967,18 +2003,18 @@ prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}, _WaitFor) _ -> mnesia:abort({combine_error, Tab, ToS}) end; - - FromS == ram_copies -> + + FromS == ram_copies -> case mnesia_monitor:use_dir() of - true -> + true -> Dat = mnesia_lib:tab2dcd(Tab), case mnesia_lib:exists(Dat) of true -> mnesia:abort({combine_error, Tab, node(), "Table dump exists"}); false -> - case ToS of - disc_copies -> + case ToS of + disc_copies -> mnesia_log:ets2dcd(Tab, dmp); disc_only_copies -> mnesia_dumper:raw_named_dump_table(Tab, dmp) @@ -1988,7 +2024,7 @@ prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}, _WaitFor) false -> mnesia:abort({has_no_disc, node()}) end; - + FromS == disc_copies, ToS == disc_only_copies -> mnesia_dumper:raw_named_dump_table(Tab, dmp); FromS == disc_only_copies -> @@ -2020,7 +2056,7 @@ prepare_op(_Tid, {op, dump_table, unknown, TabDef}, _WaitFor) -> case lists:member(node(), Cs#cstruct.ram_copies) of true -> case mnesia_monitor:use_dir() of - true -> + true -> mnesia_log:ets2dcd(Tab, dmp), Size = mnesia:table_info(Tab, size), {true, [{op, dump_table, Size, TabDef}], optional}; @@ -2058,7 +2094,7 @@ prepare_op(_Tid, {op, transform, Fun, TabDef}, _WaitFor) -> mnesia_lib:db_fixtable(Storage, Tab, true), Key = mnesia_lib:db_first(Tab), Op = {op, transform, Fun, TabDef}, - case catch transform_objs(Fun, Tab, RecName, + case catch transform_objs(Fun, Tab, RecName, Key, NewArity, Storage, Type, [Op]) of {'EXIT', Reason} -> mnesia_lib:db_fixtable(Storage, Tab, false), @@ -2072,7 +2108,7 @@ prepare_op(_Tid, {op, transform, Fun, TabDef}, _WaitFor) -> prepare_op(_Tid, {op, merge_schema, TabDef}, _WaitFor) -> Cs = list2cs(TabDef), case verify_merge(Cs) of - ok -> + ok -> {true, optional}; Error -> verbose("Merge_Schema ~p failed on ~p: ~p~n", [_Tid,node(),Error]), @@ -2093,7 +2129,7 @@ create_ram_table(Tab, Type) -> create_disc_table(Tab) -> File = mnesia_lib:tab2dcd(Tab), file:delete(File), - FArg = [{file, File}, {name, {mnesia,create}}, + FArg = [{file, File}, {name, {mnesia,create}}, {repair, false}, {mode, read_write}], case mnesia_monitor:open_log(FArg) of {ok,Log} -> @@ -2124,7 +2160,7 @@ receive_sync([], Pids) -> receive_sync(Nodes, Pids) -> receive {sync_trans, Pid} -> - Node = node(Pid), + Node = node(Pid), receive_sync(lists:delete(Node, Nodes), [Pid | Pids]); Else -> {abort, Else} @@ -2140,16 +2176,16 @@ lock_del_table(Tab, Node, Cs, Father) -> false; ({badrpc, {'EXIT', {undef, _}}}) -> %% This will be the case we talks with elder nodes - %% than 3.8.2, they will set where_to_read without - %% getting a lock. + %% than 3.8.2, they will set where_to_read without + %% getting a lock. false; (_) -> true end, case lists:filter(Filter, Res) of - [] -> + [] -> Father ! {self(), updated}, - %% When transaction is commited the process dies + %% When transaction is commited the process dies %% and the lock is released. receive _ -> ok end; Err -> @@ -2166,7 +2202,7 @@ lock_del_table(Tab, Node, Cs, Father) -> exit(normal). set_where_to_read(Tab, Node, Cs) -> - case mnesia_lib:val({Tab, where_to_read}) of + case mnesia_lib:val({Tab, where_to_read}) of Node -> case Cs#cstruct.local_content of true -> @@ -2185,16 +2221,16 @@ transform_objs(_Fun, _Tab, _RT, '$end_of_table', _NewArity, _Storage, _Type, Acc transform_objs(Fun, Tab, RecName, Key, A, Storage, Type, Acc) -> Objs = mnesia_lib:db_get(Tab, Key), NextKey = mnesia_lib:db_next_key(Tab, Key), - Oid = {Tab, Key}, + Oid = {Tab, Key}, NewObjs = {Ws, Ds} = transform_obj(Tab, RecName, Key, Fun, Objs, A, Type, [], []), - if - NewObjs == {[], []} -> + if + NewObjs == {[], []} -> transform_objs(Fun, Tab, RecName, NextKey, A, Storage, Type, Acc); - Type == bag -> + Type == bag -> transform_objs(Fun, Tab, RecName, NextKey, A, Storage, Type, [{op, rec, Storage, {Oid, Ws, write}}, {op, rec, Storage, {Oid, [Oid], delete}} | Acc]); - Ds == [] -> + Ds == [] -> %% Type is set or ordered_set, no need to delete the record first transform_objs(Fun, Tab, RecName, NextKey, A, Storage, Type, [{op, rec, Storage, {Oid, Ws, write}} | Acc]); @@ -2215,15 +2251,15 @@ transform_obj(Tab, RecName, Key, Fun, [Obj|Rest], NewArity, Type, Ws, Ds) -> NewObj == Obj -> transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, Type, Ws, Ds); RecName == element(1, NewObj), Key == element(2, NewObj) -> - transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, + transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, Type, [NewObj | Ws], Ds); - NewObj == delete -> - case Type of + NewObj == delete -> + case Type of bag -> %% Just don't write that object - transform_obj(Tab, RecName, Key, Fun, Rest, - NewArity, Type, Ws, Ds); + transform_obj(Tab, RecName, Key, Fun, Rest, + NewArity, Type, Ws, Ds); _ -> - transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, + transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, Type, Ws, [NewObj | Ds]) end; true -> @@ -2247,7 +2283,7 @@ undo_prepare_commit(Tid, Commit) -> %% Undo in reverse order undo_prepare_ops(Tid, [Op | Ops]) -> - case element(1, Op) of + case element(1, Op) of TheOp when TheOp /= op, TheOp /= restore_op -> undo_prepare_ops(Tid, Ops); _ -> @@ -2274,7 +2310,7 @@ undo_prepare_op(Tid, {op, create_table, TabDef}) -> mnesia_lib:unset({Tab, create_table}), delete_cstruct(Tid, Cs), case mnesia_lib:cs_to_storage_type(node(), Cs) of - unknown -> + unknown -> ok; ram_copies -> ram_delete_table(Tab, ram_copies); @@ -2289,7 +2325,7 @@ undo_prepare_op(Tid, {op, create_table, TabDef}) -> %% disc_delete_table(Tab, Storage), file:delete(Dat) end; - + undo_prepare_op(Tid, {op, add_table_copy, Storage, Node, TabDef}) -> Cs = list2cs(TabDef), Tab = Cs#cstruct.name, @@ -2314,21 +2350,21 @@ undo_prepare_op(Tid, {op, add_table_copy, Storage, Node, TabDef}) -> Cs2 = new_cs(Cs, Node, Storage, del), insert_cstruct(Tid, Cs2, true) % Don't care about the version end; - -undo_prepare_op(_Tid, {op, del_table_copy, _, Node, TabDef}) + +undo_prepare_op(_Tid, {op, del_table_copy, _, Node, TabDef}) when Node == node() -> Cs = list2cs(TabDef), Tab = Cs#cstruct.name, mnesia_lib:set({Tab, where_to_read}, Node); -undo_prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}) +undo_prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}) when N == node() -> Cs = list2cs(TabDef), Tab = Cs#cstruct.name, mnesia_checkpoint:tm_change_table_copy_type(Tab, ToS, FromS), Dmp = mnesia_lib:tab2dmp(Tab), - + case {FromS, ToS} of {ram_copies, disc_copies} when Tab == schema -> file:delete(Dmp), @@ -2382,9 +2418,9 @@ ram_delete_table(Tab, Storage) -> ignore; disc_only_copies -> ignore; - _Else -> + _Else -> %% delete possible index files and data ..... - %% Got to catch this since if no info has been set in the + %% Got to catch this since if no info has been set in the %% mnesia_gvar it will crash catch mnesia_index:del_transient(Tab, Storage), case ?catch_val({Tab, {index, snmp}}) of @@ -2454,7 +2490,7 @@ has_known_suffix(File, [Suffix | Tail], false) -> has_known_suffix(File, Tail, lists:suffix(Suffix, File)); has_known_suffix(_File, [], Bool) -> Bool. - + known_suffixes() -> real_suffixes() ++ tmp_suffixes(). real_suffixes() -> [".DAT", ".LOG", ".BUP", ".DCL", ".DCD"]. @@ -2477,11 +2513,11 @@ info2(Tab, [{frag_hash, _V} | Tail]) -> % Ignore frag_hash info2(Tab, [{P, V} | Tail]) -> io:format("~-20w -> ~p~n",[P,V]), info2(Tab, Tail); -info2(_, []) -> +info2(_, []) -> io:format("~n", []). get_table_properties(Tab) -> - case catch mnesia_lib:db_match_object(ram_copies, + case catch mnesia_lib:db_match_object(ram_copies, mnesia_gvar, {{Tab, '_'}, '_'}) of {'EXIT', _} -> mnesia:abort({no_exists, Tab, all}); @@ -2509,9 +2545,9 @@ get_table_properties(Tab) -> recs = error_recs }). -restore(Opaque) -> +restore(Opaque) -> restore(Opaque, [], mnesia_monitor:get_env(backup_module)). -restore(Opaque, Args) when is_list(Args) -> +restore(Opaque, Args) when is_list(Args) -> restore(Opaque, Args, mnesia_monitor:get_env(backup_module)); restore(_Opaque, BadArg) -> {aborted, {badarg, BadArg}}. @@ -2522,7 +2558,7 @@ restore(Opaque, Args, Module) when is_list(Args), is_atom(Module) -> case mnesia_bup:read_schema(R#r.module, Opaque) of {error, Reason} -> {aborted, Reason}; - BupSchema -> + BupSchema -> schema_transaction(fun() -> do_restore(R, BupSchema) end) end; {'EXIT', Reason} -> @@ -2556,8 +2592,8 @@ check_restore_arg({keep_tables, List}, R) when is_list(List) -> check_restore_arg({skip_tables, List}, R) when is_list(List) -> TableList = [{Tab, skip_tables} || Tab <- List], R#r{table_options = R#r.table_options ++ TableList}; -check_restore_arg({default_op, Op}, R) -> - case Op of +check_restore_arg({default_op, Op}, R) -> + case Op of clear_tables -> ok; recreate_tables -> ok; keep_tables -> ok; @@ -2588,12 +2624,12 @@ restore_items([Rec | Recs], Header, Schema, R) -> case lists:keysearch(Tab, 1, R#r.tables) of {value, {Tab, Where0, Snmp, RecName}} -> Where = case Where0 of - undefined -> + undefined -> val({Tab, where_to_commit}); _ -> Where0 end, - {Rest, NRecs} = restore_tab_items([Rec | Recs], Tab, + {Rest, NRecs} = restore_tab_items([Rec | Recs], Tab, RecName, Where, Snmp, R#r.recs, R#r.insert_op), restore_items(Rest, Header, Schema, R#r{recs = NRecs}); @@ -2601,12 +2637,12 @@ restore_items([Rec | Recs], Header, Schema, R) -> Rest = skip_tab_items(Recs, Tab), restore_items(Rest, Header, Schema, R) end; - + restore_items([], _Header, _Schema, R) -> R. restore_func(Tab, R) -> - case lists:keysearch(Tab, 1, R#r.table_options) of + case lists:keysearch(Tab, 1, R#r.table_options) of {value, {Tab, OP}} -> OP; false -> @@ -2618,24 +2654,24 @@ where_to_commit(Tab, CsList) -> Disc = [{N, disc_copies} || N <- pick(Tab, disc_copies, CsList, [])], DiscO = [{N, disc_only_copies} || N <- pick(Tab, disc_only_copies, CsList, [])], Ram ++ Disc ++ DiscO. - + %% Changes of the Meta info of schema itself is not allowed restore_schema([{schema, schema, _List} | Schema], R) -> restore_schema(Schema, R); restore_schema([{schema, Tab, List} | Schema], R) -> case restore_func(Tab, R) of - clear_tables -> + clear_tables -> do_clear_table(Tab), - Snmp = val({Tab, snmp}), - RecName = val({Tab, record_name}), + Snmp = val({Tab, snmp}), + RecName = val({Tab, record_name}), R2 = R#r{tables = [{Tab, undefined, Snmp, RecName} | R#r.tables]}, restore_schema(Schema, R2); - recreate_tables -> + recreate_tables -> case ?catch_val({Tab, cstruct}) of - {'EXIT', _} -> + {'EXIT', _} -> TidTs = {_Mod, Tid, Ts} = get(mnesia_activity_state), RunningNodes = val({current, db_nodes}), - Nodes = mnesia_lib:intersect(mnesia_lib:cs_to_nodes(list2cs(List)), + Nodes = mnesia_lib:intersect(mnesia_lib:cs_to_nodes(list2cs(List)), RunningNodes), mnesia_locker:wlock_no_exist(Tid, Ts#tidstore.store, Tab, Nodes), TidTs; @@ -2643,20 +2679,20 @@ restore_schema([{schema, Tab, List} | Schema], R) -> TidTs = get_tid_ts_and_lock(Tab, write) end, NC = {cookie, ?unique_cookie}, - List2 = lists:keyreplace(cookie, 1, List, NC), + List2 = lists:keyreplace(cookie, 1, List, NC), Where = where_to_commit(Tab, List2), Snmp = pick(Tab, snmp, List2, []), RecName = pick(Tab, record_name, List2, Tab), insert_schema_ops(TidTs, [{op, restore_recreate, List2}]), R2 = R#r{tables = [{Tab, Where, Snmp, RecName} | R#r.tables]}, restore_schema(Schema, R2); - keep_tables -> + keep_tables -> get_tid_ts_and_lock(Tab, write), Snmp = val({Tab, snmp}), - RecName = val({Tab, record_name}), + RecName = val({Tab, record_name}), R2 = R#r{tables = [{Tab, undefined, Snmp, RecName} | R#r.tables]}, restore_schema(Schema, R2); - skip_tables -> + skip_tables -> restore_schema(Schema, R) end; @@ -2667,7 +2703,7 @@ restore_schema([{schema, Tab} | Schema], R) -> restore_schema([], R) -> R. -restore_tab_items([Rec | Rest], Tab, RecName, Where, Snmp, Recs, Op) +restore_tab_items([Rec | Rest], Tab, RecName, Where, Snmp, Recs, Op) when element(1, Rec) == Tab -> NewRecs = Op(Rec, Recs, RecName, Where, Snmp), restore_tab_items(Rest, Tab, RecName, Where, Snmp, NewRecs, Op); @@ -2675,7 +2711,7 @@ restore_tab_items([Rec | Rest], Tab, RecName, Where, Snmp, Recs, Op) restore_tab_items(Rest, _Tab, _RecName, _Where, _Snmp, Recs, _Op) -> {Rest, Recs}. -skip_tab_items([Rec| Rest], Tab) +skip_tab_items([Rec| Rest], Tab) when element(1, Rec) == Tab -> skip_tab_items(Rest, Tab); skip_tab_items(Recs, _) -> @@ -2710,7 +2746,6 @@ merge_schema() -> merge_schema(UserFun) -> schema_transaction(fun() -> UserFun(fun(Arg) -> do_merge_schema(Arg) end) end). - do_merge_schema(LockTabs0) -> {_Mod, Tid, Ts} = get_tid_ts_and_lock(schema, write), LockTabs = [{T, tab_to_nodes(T)} || T <- LockTabs0], @@ -2732,14 +2767,14 @@ do_merge_schema(LockTabs0) -> [mnesia_locker:wlock_no_exist( Tid, Store, T, mnesia_lib:intersect(Ns, OtherNodes)) || {T,Ns} <- LockTabs], - case rpc:call(Node, mnesia_controller, get_cstructs, []) of + case fetch_cstructs(Node) of {cstructs, Cstructs, RemoteRunning1} -> LockedAlready = Running ++ [Node], {New, Old} = mnesia_recover:connect_nodes(RemoteRunning1), RemoteRunning = mnesia_lib:intersect(New ++ Old, RemoteRunning1), - if + if RemoteRunning /= RemoteRunning1 -> - mnesia_lib:error("Mnesia on ~p could not connect to node(s) ~p~n", + mnesia_lib:error("Mnesia on ~p could not connect to node(s) ~p~n", [node(), RemoteRunning1 -- RemoteRunning]), mnesia:abort({node_not_running, RemoteRunning1 -- RemoteRunning}); true -> ok @@ -2749,24 +2784,24 @@ do_merge_schema(LockTabs0) -> [mnesia_locker:wlock_no_exist(Tid, Store, T, mnesia_lib:intersect(Ns,NeedsLock)) || {T,Ns} <- LockTabs], - {value, SchemaCs} = - lists:keysearch(schema, #cstruct.name, Cstructs), + NeedsConversion = need_old_cstructs(NeedsLock ++ LockedAlready), + {value, SchemaCs} = lists:keysearch(schema, #cstruct.name, Cstructs), + SchemaDef = cs2list(NeedsConversion, SchemaCs), %% Announce that Node is running - A = [{op, announce_im_running, node(), - cs2list(SchemaCs), Running, RemoteRunning}], + A = [{op, announce_im_running, node(), SchemaDef, Running, RemoteRunning}], do_insert_schema_ops(Store, A), - + %% Introduce remote tables to local node - do_insert_schema_ops(Store, make_merge_schema(Node, Cstructs)), - + do_insert_schema_ops(Store, make_merge_schema(Node, NeedsConversion, Cstructs)), + %% Introduce local tables to remote nodes Tabs = val({schema, tables}), Ops = [{op, merge_schema, get_create_list(T)} || T <- Tabs, not lists:keymember(T, #cstruct.name, Cstructs)], do_insert_schema_ops(Store, Ops), - + %% Ensure that the txn will be committed on all nodes NewNodes = RemoteRunning -- Running, mnesia_lib:set(prepare_op, {announce_im_running,NewNodes}), @@ -2782,19 +2817,49 @@ do_merge_schema(LockTabs0) -> not_merged end. +fetch_cstructs(Node) -> + case mnesia_monitor:needs_protocol_conversion(Node) of + true -> + case rpc:call(Node, mnesia_controller, get_cstructs, []) of + {cstructs, Cs0, RR} -> + {cstructs, [list2cs(cs2list(Cs)) || Cs <- Cs0], RR}; + Err -> Err + end; + false -> + rpc:call(Node, mnesia_controller, get_remote_cstructs, []) + end. + +need_old_cstructs(Nodes) -> + Filter = fun(Node) -> not mnesia_monitor:needs_protocol_conversion(Node) end, + case lists:dropwhile(Filter, Nodes) of + [] -> false; + [Node|_] -> + case rpc:call(Node, mnesia_lib, val, [{schema,cstruct}]) of + #cstruct{} -> + %% mnesia_lib:warning("Mnesia on ~p do not need to convert cstruct (~p)~n", + %% [node(), Node]), + false; + {badrpc, _} -> + need_old_cstructs(lists:delete(Node,Nodes)); + Cs when element(1, Cs) == cstruct, tuple_size(Cs) == 17 -> + ver4_4_18; % Without majority + Cs when element(1, Cs) == cstruct, tuple_size(Cs) == 18 -> + ver4_4_19 % With majority + end + end. + tab_to_nodes(Tab) when is_atom(Tab) -> Cs = val({Tab, cstruct}), mnesia_lib:cs_to_nodes(Cs). -make_merge_schema(Node, [Cs | Cstructs]) -> - Ops = do_make_merge_schema(Node, Cs), - Ops ++ make_merge_schema(Node, Cstructs); -make_merge_schema(_Node, []) -> +make_merge_schema(Node, NeedsConv, [Cs | Cstructs]) -> + Ops = do_make_merge_schema(Node, NeedsConv, Cs), + Ops ++ make_merge_schema(Node, NeedsConv, Cstructs); +make_merge_schema(_Node, _, []) -> []. %% Merge definitions of schema table -do_make_merge_schema(Node, RemoteCs) - when RemoteCs#cstruct.name == schema -> +do_make_merge_schema(Node, NeedsConv, RemoteCs = #cstruct{name = schema}) -> Cs = val({schema, cstruct}), Masters = mnesia_recover:get_master_nodes(schema), HasRemoteMaster = lists:member(Node, Masters), @@ -2804,15 +2869,15 @@ do_make_merge_schema(Node, RemoteCs) StCsLocal = mnesia_lib:cs_to_storage_type(node(), Cs), StRcsLocal = mnesia_lib:cs_to_storage_type(node(), RemoteCs), StCsRemote = mnesia_lib:cs_to_storage_type(Node, Cs), - StRcsRemote = mnesia_lib:cs_to_storage_type(Node, RemoteCs), - + StRcsRemote = mnesia_lib:cs_to_storage_type(Node, RemoteCs), + if Cs#cstruct.cookie == RemoteCs#cstruct.cookie, Cs#cstruct.version == RemoteCs#cstruct.version -> %% Great, we have the same cookie and version %% and do not need to merge cstructs []; - + Cs#cstruct.cookie /= RemoteCs#cstruct.cookie, Cs#cstruct.disc_copies /= [], RemoteCs#cstruct.disc_copies /= [] -> @@ -2823,14 +2888,14 @@ do_make_merge_schema(Node, RemoteCs) HasRemoteMaster == false -> %% Choose local cstruct, %% since it's the master - [{op, merge_schema, cs2list(Cs)}]; + [{op, merge_schema, cs2list(NeedsConv, Cs)}]; HasRemoteMaster == true, HasLocalMaster == false -> %% Choose remote cstruct, %% since it's the master - [{op, merge_schema, cs2list(RemoteCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, RemoteCs)}]; + true -> Str = io_lib:format("Incompatible schema cookies. " "Please, restart from old backup." @@ -2838,12 +2903,12 @@ do_make_merge_schema(Node, RemoteCs) [Node, cs2list(RemoteCs), node(), cs2list(Cs)]), throw(Str) end; - + StCsLocal /= StRcsLocal, StRcsLocal /= unknown, StCsLocal /= ram_copies -> Str = io_lib:format("Incompatible schema storage types (local). " "on ~w storage ~w, on ~w storage ~w~n", [node(), StCsLocal, Node, StRcsLocal]), - throw(Str); + throw(Str); StCsRemote /= StRcsRemote, StCsRemote /= unknown, StRcsRemote /= ram_copies -> Str = io_lib:format("Incompatible schema storage types (remote). " "on ~w cs ~w, on ~w rcs ~w~n", @@ -2854,27 +2919,27 @@ do_make_merge_schema(Node, RemoteCs) %% Choose local cstruct, %% since it involves disc nodes MergedCs = merge_cstructs(Cs, RemoteCs, Force), - [{op, merge_schema, cs2list(MergedCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}]; + RemoteCs#cstruct.disc_copies /= [] -> %% Choose remote cstruct, %% since it involves disc nodes MergedCs = merge_cstructs(RemoteCs, Cs, Force), - [{op, merge_schema, cs2list(MergedCs)}]; + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}]; Cs > RemoteCs -> %% Choose remote cstruct MergedCs = merge_cstructs(RemoteCs, Cs, Force), - [{op, merge_schema, cs2list(MergedCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}]; + true -> %% Choose local cstruct MergedCs = merge_cstructs(Cs, RemoteCs, Force), - [{op, merge_schema, cs2list(MergedCs)}] + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}] end; %% Merge definitions of normal table -do_make_merge_schema(Node, RemoteCs) -> +do_make_merge_schema(Node, NeedsConv, RemoteCs = #cstruct{}) -> Tab = RemoteCs#cstruct.name, Masters = mnesia_recover:get_master_nodes(schema), HasRemoteMaster = lists:member(Node, Masters), @@ -2883,27 +2948,27 @@ do_make_merge_schema(Node, RemoteCs) -> case ?catch_val({Tab, cstruct}) of {'EXIT', _} -> %% A completely new table, created while Node was down - [{op, merge_schema, cs2list(RemoteCs)}]; + [{op, merge_schema, cs2list(NeedsConv, RemoteCs)}]; Cs when Cs#cstruct.cookie == RemoteCs#cstruct.cookie -> if Cs#cstruct.version == RemoteCs#cstruct.version -> %% We have exactly the same version of the %% table def []; - + Cs#cstruct.version > RemoteCs#cstruct.version -> %% Oops, we have different versions %% of the table def, lets merge them. %% The only changes that may have occurred %% is that new replicas may have been added. MergedCs = merge_cstructs(Cs, RemoteCs, Force), - [{op, merge_schema, cs2list(MergedCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}]; + Cs#cstruct.version < RemoteCs#cstruct.version -> %% Oops, we have different versions %% of the table def, lets merge them MergedCs = merge_cstructs(RemoteCs, Cs, Force), - [{op, merge_schema, cs2list(MergedCs)}] + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}] end; Cs -> %% Different cookies, not possible to merge @@ -2912,14 +2977,14 @@ do_make_merge_schema(Node, RemoteCs) -> HasRemoteMaster == false -> %% Choose local cstruct, %% since it's the master - [{op, merge_schema, cs2list(Cs)}]; + [{op, merge_schema, cs2list(NeedsConv, Cs)}]; HasRemoteMaster == true, HasLocalMaster == false -> %% Choose remote cstruct, %% since it's the master - [{op, merge_schema, cs2list(RemoteCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, RemoteCs)}]; + true -> Str = io_lib:format("Bad cookie in table definition" " ~w: ~w = ~w, ~w = ~w~n", @@ -2989,7 +3054,7 @@ compare_storage_type(true, One, Another) -> compare_storage_type(false, Another, One); compare_storage_type(false, _One, _Another) -> incompatible. - + change_storage_type(N, ram_copies, Cs) -> Nodes = [N | Cs#cstruct.ram_copies], Cs#cstruct{ram_copies = mnesia_lib:uniq(Nodes)}; @@ -3071,14 +3136,14 @@ verify_merge(RemoteCs) -> if StCsLocal == StRcsLocal -> ok; StCsLocal == unknown -> ok; - (StRcsLocal == unknown), (HasRemoteMaster == false) -> + (StRcsLocal == unknown), (HasRemoteMaster == false) -> {merge_error, Cs, RemoteCs}; %% Trust the merger true -> ok end end. -announce_im_running([N | Ns], SchemaCs) -> +announce_im_running([N | Ns], SchemaCs) -> {L1, L2} = mnesia_recover:connect_nodes([N]), case lists:member(N, L1) or lists:member(N, L2) of true -> @@ -3095,7 +3160,7 @@ announce_im_running([], _) -> unannounce_im_running([N | Ns]) -> mnesia_lib:del({current, db_nodes}, N), - mnesia_controller:del_active_replica(schema, N), + mnesia_controller:del_active_replica(schema, N), unannounce_im_running(Ns); unannounce_im_running([]) -> ok. diff --git a/lib/observer/src/Makefile b/lib/observer/src/Makefile index 2d06cb6bc4..3875b62101 100644 --- a/lib/observer/src/Makefile +++ b/lib/observer/src/Makefile @@ -56,13 +56,16 @@ TARGET_FILES= $(MODULES:%=$(EBIN)/%.$(EMULATOR)) $(APP_TARGET) $(APPUP_TARGET) PRIVDIR= ../priv WEBTOOLFILES= $(PRIVDIR)/crashdump_viewer.tool BINDIR= $(PRIVDIR)/bin +ifeq ($(findstring win32,$(TARGET)),win32) +WIN32_EXECUTABLES= $(BINDIR)/etop.bat $(BINDIR)/getop.bat $(BINDIR)/cdv.bat +else +WIN32_EXECUTABLES= +endif EXECUTABLES= \ $(BINDIR)/etop \ $(BINDIR)/getop \ $(BINDIR)/cdv \ - $(BINDIR)/etop.bat \ - $(BINDIR)/getop.bat \ - $(BINDIR)/cdv.bat + $(WIN32_EXECUTABLES) CDVDIR= $(PRIVDIR)/crashdump_viewer GIF_FILES= \ $(CDVDIR)/collapsd.gif \ diff --git a/lib/odbc/c_src/odbcserver.c b/lib/odbc/c_src/odbcserver.c index 11e311d72d..ab2d7fe210 100644 --- a/lib/odbc/c_src/odbcserver.c +++ b/lib/odbc/c_src/odbcserver.c @@ -772,6 +772,7 @@ static db_result_msg db_param_query(byte *buffer, db_state *state) } associated_result_set(state) = FALSE; param_query(state) = TRUE; + out_params(state) = FALSE; msg = encode_empty_message(); diff --git a/lib/odbc/test/odbc_data_type_SUITE.erl b/lib/odbc/test/odbc_data_type_SUITE.erl index 323190dd99..d61a91f973 100644 --- a/lib/odbc/test/odbc_data_type_SUITE.erl +++ b/lib/odbc/test/odbc_data_type_SUITE.erl @@ -89,17 +89,15 @@ init_per_group(GroupName, Config) when GroupName == fixed_char; end; init_per_group(unicode, Config) -> - %% Uses parameterized queries - case {os:type(), erlang:system_info(wordsize)} of + case {os:type(), erlang:system_info({wordsize, external})} of {{unix, _}, 4} -> Config; {{unix, _}, _} -> - {skip, "Not supported by driver"}; + {skip, "Postgres drivers pre version psqlODBC 08.04.0200 have utf8-problems"}; _ -> Config end; - init_per_group(_GroupName, Config) -> Config. diff --git a/lib/odbc/test/odbc_test_lib.erl b/lib/odbc/test/odbc_test_lib.erl index 2d6bf5fcac..4d7d1ae2fa 100644 --- a/lib/odbc/test/odbc_test_lib.erl +++ b/lib/odbc/test/odbc_test_lib.erl @@ -97,10 +97,13 @@ linux_issue() -> string:tokens(binary_to_list(Binary), " "). is_sles11(IssueTokens) -> - lists:member(11, IssueTokens). + lists:member("11", IssueTokens). is_sles10(IssueTokens) -> - lists:member(10, IssueTokens). + lists:member("10", IssueTokens). is_sles9(IssueTokens) -> - lists:member(9, IssueTokens). + lists:member("9", IssueTokens). + +is_ubuntu(IssueTokens) -> + lists:member("Ubuntu", IssueTokens). diff --git a/lib/orber/include/Makefile b/lib/orber/include/Makefile deleted file mode 100644 index 219b7085e6..0000000000 --- a/lib/orber/include/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1998-2009. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -# -# -include $(ERL_TOP)/make/target.mk - -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Application version -# ---------------------------------------------------- -include ../vsn.mk -VSN=$(ORBER_VSN) - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/orber-$(VSN) - -# ---------------------------------------------------- -# Target Specs -# ---------------------------------------------------- - -EXTERNAL_HRL_FILES= ../include/corba.hrl \ - ../include/ifr_types.hrl \ - ../include/orber_pi.hrl - -# ---------------------------------------------------- -# FLAGS -# ---------------------------------------------------- - -# ---------------------------------------------------- -# Targets -# ---------------------------------------------------- -debug opt clean docs: - - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - - -release_spec: opt - $(INSTALL_DIR) $(RELSYSDIR)/include - $(INSTALL_DATA) $(EXTERNAL_HRL_FILES) $(RELSYSDIR)/include - - -release_docs_spec: - - diff --git a/lib/os_mon/c_src/cpu_sup.c b/lib/os_mon/c_src/cpu_sup.c index fbf318c614..e3bdbd1489 100644 --- a/lib/os_mon/c_src/cpu_sup.c +++ b/lib/os_mon/c_src/cpu_sup.c @@ -191,7 +191,10 @@ int main(int argc, char** argv) { static cpu_t *read_procstat(FILE *fp, cpu_t *cpu) { char buffer[BUFFERSIZE]; - fgets(buffer, BUFFERSIZE, fp); + if (fgets(buffer, BUFFERSIZE, fp) == NULL) { + memset(cpu, 0, sizeof(cpu_t)); + return cpu; + } sscanf(buffer, "cpu%u %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", &(cpu->id), &(cpu->user), @@ -223,7 +226,11 @@ static void util_measure(unsigned int **result_vec, int *result_sz) { return; } - fgets(buffer, BUFFERSIZE, fp); /*ignore read*/ + /*ignore read*/ + if (fgets(buffer, BUFFERSIZE, fp) == NULL) { + *result_sz = 0; + return; + } rv = *result_vec; rv[0] = no_of_cpus; rv[1] = CU_VALUES; @@ -447,8 +454,12 @@ static void sendv(unsigned int data[], int ints) { } static void error(char* err_msg) { - write(FD_ERR, err_msg, strlen(err_msg)); - write(FD_ERR, "\n", 1); + /* + * if we get error here we have trouble, + * silence unnecessary warnings + */ + if(write(FD_ERR, err_msg, strlen(err_msg))); + if(write(FD_ERR, "\n", 1)); exit(-1); } diff --git a/lib/parsetools/src/leex.erl b/lib/parsetools/src/leex.erl index 942e9928b1..cdf20461d9 100644 --- a/lib/parsetools/src/leex.erl +++ b/lib/parsetools/src/leex.erl @@ -73,12 +73,15 @@ %%% Interface to erl_compile. compile(Input0, Output0, - #options{warning = WarnLevel, verbose=Verbose, includes=Includes}) -> + #options{warning = WarnLevel, verbose=Verbose, includes=Includes, + specific=Specific}) -> Input = assure_extension(shorten_filename(Input0), ".xrl"), Output = assure_extension(shorten_filename(Output0), ".erl"), Includefile = lists:sublist(Includes, 1), + Werror = proplists:get_bool(warnings_as_errors, Specific), Opts = [{scannerfile,Output},{includefile,Includefile},{verbose,Verbose}, - {report_errors,true},{report_warnings,WarnLevel > 0}], + {report_errors,true},{report_warnings,WarnLevel > 0}, + {warnings_as_errors, Werror}], case file(Input, Opts) of {ok, _} -> ok; @@ -107,7 +110,7 @@ file(File, Opts0) -> St = try {ok,REAs,Actions,Code,St2} = parse_file(St1), {DFA,DF} = make_dfa(REAs, St2), - case werr(St2) of + case werror(St2) of false -> St3 = out_file(St2, DFA, DF, Actions, Code), case lists:member(dfa_graph, St3#leex.opts) of @@ -259,9 +262,9 @@ leex_ret(St) -> report_warnings(St), Es = pack_errors(St#leex.errors), Ws = pack_warnings(St#leex.warnings), - Werr = werr(St), + Werror = werror(St), if - Werr -> + Werror -> do_error_return(St, Es, Ws); Es =:= [] -> case member(return_warnings, St#leex.opts) of @@ -278,9 +281,9 @@ do_error_return(St, Es, Ws) -> false -> error end. -werr(St) -> - member(warnings_as_errors, St#leex.opts) - andalso length(St#leex.warnings) > 0. +werror(St) -> + St#leex.warnings =/= [] + andalso member(warnings_as_errors, St#leex.opts). pack_errors([{File,_} | _] = Es) -> [{File, flatmap(fun({_,E}) -> [E] end, sort(Es))}]; @@ -304,15 +307,24 @@ report_errors(St) -> end, report_errors, St#leex.opts). report_warnings(St) -> - when_opt(fun () -> - foreach(fun({File,{none,Mod,W}}) -> - io:fwrite("~s: Warning: ~s\n", - [File,Mod:format_error(W)]); - ({File,{Line,Mod,W}}) -> - io:fwrite("~s:~w: Warning: ~s\n", - [File,Line,Mod:format_error(W)]) - end, sort(St#leex.warnings)) - end, report_warnings, St#leex.opts). + Werror = member(warnings_as_errors, St#leex.opts), + Prefix = case Werror of + true -> ""; + false -> "Warning: " + end, + ReportWerror = Werror andalso member(report_errors, St#leex.opts), + ShouldReport = member(report_warnings, St#leex.opts) orelse ReportWerror, + when_bool(fun () -> + foreach(fun({File,{none,Mod,W}}) -> + io:fwrite("~s: ~s~s\n", + [File,Prefix, + Mod:format_error(W)]); + ({File,{Line,Mod,W}}) -> + io:fwrite("~s:~w: ~s~s\n", + [File,Line,Prefix, + Mod:format_error(W)]) + end, sort(St#leex.warnings)) + end, ShouldReport). -spec add_error(_, #leex{}) -> no_return(). add_error(E, St) -> @@ -360,6 +372,12 @@ when_opt(Do, Opt, Opts) -> false -> ok end. +when_bool(Do, Bool) -> + case Bool of + true -> Do(); + false -> ok + end. + verbose_print(St, Format, Args) -> when_opt(fun () -> io:fwrite(Format, Args) end, verbose, St#leex.opts). diff --git a/lib/parsetools/src/yecc.erl b/lib/parsetools/src/yecc.erl index 72cff3af92..354d56527d 100644 --- a/lib/parsetools/src/yecc.erl +++ b/lib/parsetools/src/yecc.erl @@ -133,12 +133,15 @@ %%% Interface to erl_compile. compile(Input0, Output0, - #options{warning = WarnLevel, verbose=Verbose, includes=Includes}) -> + #options{warning = WarnLevel, verbose=Verbose, includes=Includes, + specific=Specific}) -> Input = shorten_filename(Input0), Output = shorten_filename(Output0), Includefile = lists:sublist(Includes, 1), + Werror = proplists:get_bool(warnings_as_errors, Specific), Opts = [{parserfile,Output}, {includefile,Includefile}, {verbose,Verbose}, - {report_errors, true}, {report_warnings, WarnLevel > 0}], + {report_errors, true}, {report_warnings, WarnLevel > 0}, + {warnings_as_errors, Werror}], case file(Input, Opts) of {ok, _OutFile} -> ok; @@ -411,15 +414,15 @@ infile(Parent, Infilex, Options) -> {error, Reason} -> add_error(St0#yecc.infile, none, {file_error, Reason}, St0) end, - case {St#yecc.errors, werr(St)} of + case {St#yecc.errors, werror(St)} of {[], false} -> ok; _ -> _ = file:delete(St#yecc.outfile) end, Parent ! {self(), yecc_ret(St)}. -werr(St) -> - member(warnings_as_errors, St#yecc.options) - andalso length(St#yecc.warnings) > 0. +werror(St) -> + St#yecc.warnings =/= [] + andalso member(warnings_as_errors, St#yecc.options). outfile(St0) -> case file:open(St0#yecc.outfile, [write, delayed_write]) of @@ -783,9 +786,9 @@ yecc_ret(St0) -> report_warnings(St), Es = pack_errors(St#yecc.errors), Ws = pack_warnings(St#yecc.warnings), - Werr = werr(St), + Werror = werror(St), if - Werr -> + Werror -> do_error_return(St, Es, Ws); Es =:= [] -> case member(return_warnings, St#yecc.options) of @@ -849,14 +852,22 @@ report_errors(St) -> end. report_warnings(St) -> - case member(report_warnings, St#yecc.options) of + Werror = member(warnings_as_errors, St#yecc.options), + Prefix = case Werror of + true -> ""; + false -> "Warning: " + end, + ReportWerror = Werror andalso member(report_errors, St#yecc.options), + case member(report_warnings, St#yecc.options) orelse ReportWerror of true -> foreach(fun({File,{none,Mod,W}}) -> - io:fwrite(<<"~s: Warning: ~s\n">>, - [File,Mod:format_error(W)]); + io:fwrite(<<"~s: ~s~s\n">>, + [File,Prefix, + Mod:format_error(W)]); ({File,{Line,Mod,W}}) -> - io:fwrite(<<"~s:~w: Warning: ~s\n">>, - [File,Line,Mod:format_error(W)]) + io:fwrite(<<"~s:~w: ~s~s\n">>, + [File,Line,Prefix, + Mod:format_error(W)]) end, sort(St#yecc.warnings)); false -> ok diff --git a/lib/parsetools/test/leex_SUITE.erl b/lib/parsetools/test/leex_SUITE.erl index 48312445ef..1e50aedf07 100644 --- a/lib/parsetools/test/leex_SUITE.erl +++ b/lib/parsetools/test/leex_SUITE.erl @@ -152,6 +152,7 @@ file(Config) when is_list(Config) -> ?line writable(Dotfile), file:delete(Dotfile), + ok = file:delete(Scannerfile), Warn = <<"Definitions.1998\n" "D = [0-9]\n" "Rules.\n" @@ -159,11 +160,15 @@ file(Config) when is_list(Config) -> "Erlang code.\n">>, ok = file:write_file(Filename, Warn), error = leex:file(Filename, [warnings_as_errors]), + false = filelib:is_regular(Scannerfile), error = leex:file(Filename, [return_warnings,warnings_as_errors]), - {ok,Scannerfile,[{Filename,[{1,leex,ignored_characters}]}]} = - leex:file(Filename, [return_warnings]), + false = filelib:is_regular(Scannerfile), {error,_,[{Filename,[{1,leex,ignored_characters}]}]} = - leex:file(Filename, [return_errors,warnings_as_errors]), + leex:file(Filename, [return_errors,warnings_as_errors]), + false = filelib:is_regular(Scannerfile), + {ok,Scannerfile,[{Filename,[{1,leex,ignored_characters}]}]} = + leex:file(Filename, [return_warnings]), + true = filelib:is_regular(Scannerfile), file:delete(Filename), ok. diff --git a/lib/parsetools/test/yecc_SUITE.erl b/lib/parsetools/test/yecc_SUITE.erl index 0133524950..a5f66b48e9 100644 --- a/lib/parsetools/test/yecc_SUITE.erl +++ b/lib/parsetools/test/yecc_SUITE.erl @@ -173,6 +173,7 @@ syntax(Config) when is_list(Config) -> %% Report errors. Very simple test of format_error/1. Ret = [return, {report, true}], Filename = filename:join(Dir, "file.yrl"), + Parserfile = filename:join(Dir, "file.erl"), Parserfile1 = filename:join(Dir, "a file"), ?line ok = file:write_file(Filename, <<"">>), @@ -248,12 +249,17 @@ syntax(Config) when is_list(Config) -> yecc:file(Filename, Ret), %% Bad declaration with warnings_as_errors. + ok = file:delete(Parserfile), error = yecc:file(Filename, [warnings_as_errors]), + false = filelib:is_regular(Parserfile), error = yecc:file(Filename, [return_warnings,warnings_as_errors]), - {ok,_,[{_,[{2,yecc,bad_declaration}]}]} = - yecc:file(Filename, [return_warnings]), + false = filelib:is_regular(Parserfile), {error,_,[{_,[{2,yecc,bad_declaration}]}]} = yecc:file(Filename, [return_errors,warnings_as_errors]), + false = filelib:is_regular(Parserfile), + {ok,_,[{_,[{2,yecc,bad_declaration}]}]} = + yecc:file(Filename, [return_warnings]), + true = filelib:is_regular(Parserfile), %% Bad declaration. ?line ok = file:write_file(Filename, diff --git a/lib/sasl/doc/src/release_handler.xml b/lib/sasl/doc/src/release_handler.xml index 4a973bc5ed..5ac0dc1acc 100644 --- a/lib/sasl/doc/src/release_handler.xml +++ b/lib/sasl/doc/src/release_handler.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1996</year><year>2009</year> + <year>1996</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -159,9 +159,12 @@ old reboot_old permanent <funcs> <func> <name>check_install_release(Vsn) -> {ok, OtherVsn, Descr} | {error, Reason}</name> + <name>check_install_release(Vsn,Opts) -> {ok, OtherVsn, Descr} | {error, Reason}</name> <fsummary>Check installation of a release in the system.</fsummary> <type> <v>Vsn = OtherVsn = string()</v> + <v>Opts = [Opt]</v> + <v>Opt = purge</v> <v>Descr = term()</v> <v>Reason = term()</v> </type> @@ -179,6 +182,11 @@ old reboot_old permanent upgrade script.</p> <p>Returns the same as <c>install_release/1</c>. <c>Descr</c> defaults to "" if no <c>relup</c> file is found.</p> + <p>If the option <c>purge</c> is given, all old code that can + be soft purged will be purged after all other checks are + successfully completed. This can be useful in order to + reduce the time needed by <seealso + marker="#install_release/1">install_release</seealso>.</p> </desc> </func> <func> @@ -299,6 +307,24 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). <c>{update_paths,true}</c>, afterwards <c>code:lib_dir(myapp)</c> will return <c>/home/user/myapp-1.0</c>.</p> + <note> + <p>Installing a new release might be quite time consuming if + there are many processes in the system. The reason is that + each process must be checked for references to old code + before a module can be purged. This check might lead to + garbage collections and copying of data.</p> + <p>If you wish to speed up the execution of + <c>install_release</c>, then you may call <seealso + marker="#check_install_release/1">check_install_release</seealso> + first, using the option <c>purge</c>. This will do the same + check for old code, and then purge all modules that can be + soft purged. The purged modules will then no longer have any + old code, and <c>install_release</c> will not need to do the + checks.</p> + <p>Obviously, this will not reduce the overall time for the + upgrade, but it will allow checks and purge to be executed + in the background before the real upgrade is started.</p> + </note> </desc> </func> <func> diff --git a/lib/sasl/doc/src/systools.xml b/lib/sasl/doc/src/systools.xml index 883c9c372b..8c1c327d74 100644 --- a/lib/sasl/doc/src/systools.xml +++ b/lib/sasl/doc/src/systools.xml @@ -45,7 +45,8 @@ <v>Name = string()</v> <v>UpFrom = DownTo = [Name | {Name,Descr}]</v> <v> Descr = term()</v> - <v>Opt = {path,[Dir]} | restart_emulator | silent | noexec | {outdir,Dir}</v> + <v>Opt = {path,[Dir]} | restart_emulator | silent | noexec | {outdir,Dir} + | warnings_as_errors</v> <v> Dir = string()</v> <v>Result = ok | error | {ok,Relup,Module,Warnings} | {error,Module,Error}</v> <v> Relup - see relup(4)</v> @@ -122,6 +123,8 @@ <p>If the option <c>noexec</c> is provided, the function returns the same values as for <c>silent</c> but no <c>relup</c> file is created.</p> + <p>If the option <c>warnings_as_errors</c> is provided, warnings + are treated as errors.</p> </desc> </func> <func> @@ -130,7 +133,8 @@ <fsummary>Generate a boot script <c>.script/.boot</c>.</fsummary> <type> <v>Name = string()</v> - <v>Opt = src_tests | {path,[Dir]} | local | {variables,[Var]} | exref | {exref,[App]}] | silent | {outdir,Dir}</v> + <v>Opt = src_tests | {path,[Dir]} | local | {variables,[Var]} | exref | {exref,[App]}] + | silent | {outdir,Dir} | warnings_as_errors</v> <v> Dir = string()</v> <v> Var = {VarName,Prefix}</v> <v> VarName = Prefix = string()</v> @@ -232,6 +236,8 @@ Warnings and errors can be converted to strings by calling <c>Module:format_warning(Warnings)</c> or <c>Module:format_error(Error)</c>.</p> + <p>If the option <c>warnings_as_errors</c> is provided, warnings + are treated as errors.</p> </desc> </func> <func> diff --git a/lib/sasl/src/release_handler.erl b/lib/sasl/src/release_handler.erl index ab54b1d00b..bc08f94dff 100644 --- a/lib/sasl/src/release_handler.erl +++ b/lib/sasl/src/release_handler.erl @@ -25,8 +25,8 @@ -export([start_link/0, create_RELEASES/1, create_RELEASES/2, create_RELEASES/4, unpack_release/1, - check_install_release/1, install_release/1, install_release/2, - remove_release/1, + check_install_release/1, check_install_release/2, + install_release/1, install_release/2, remove_release/1, which_releases/0, make_permanent/1, reboot_old_release/1, set_unpacked/2, set_removed/1, install_file/2]). -export([upgrade_app/2, downgrade_app/2, downgrade_app/3, @@ -149,15 +149,35 @@ unpack_release(ReleaseName) -> %%----------------------------------------------------------------- %% Purpose: Checks the relup script for the specified version. %% The release must be unpacked. +%% Options = [purge] - all old code that can be soft purged +%% will be purged if all checks succeeds. This can be usefull +%% in order to reduce time needed in the following call to +%% install_release. %% Returns: {ok, FromVsn, Descr} | {error, Reason} -%% Reason = {already_installed, Vsn} | +%% Reason = {illegal_option, IllegalOpt} | +%% {already_installed, Vsn} | %% {bad_relup_file, RelFile} | %% {no_such_release, Vsn} | %% {no_such_from_vsn, Vsn} | %% exit_reason() %%----------------------------------------------------------------- check_install_release(Vsn) -> - call({check_install_release, Vsn}). + check_install_release(Vsn, []). + +check_install_release(Vsn, Opts) -> + case check_check_install_options(Opts, false) of + {ok,Purge} -> + call({check_install_release, Vsn, Purge}); + Error -> + Error + end. + +check_check_install_options([purge|Opts], _) -> + check_check_install_options(Opts, true); +check_check_install_options([Illegal|_],_Purge) -> + {error,{illegal_option,Illegal}}; +check_check_install_options([],Purge) -> + {ok,Purge}. %%----------------------------------------------------------------- @@ -541,11 +561,12 @@ handle_call({unpack_release, ReleaseName}, _From, S) handle_call({unpack_release, _ReleaseName}, _From, S) -> {reply, {error, client_node}, S}; -handle_call({check_install_release, Vsn}, _From, S) -> +handle_call({check_install_release, Vsn, Purge}, _From, S) -> case catch do_check_install_release(S#state.rel_dir, Vsn, S#state.releases, - S#state.masters) of + S#state.masters, + Purge) of {ok, CurrentVsn, Descr} -> {reply, {ok, CurrentVsn, Descr}, S}; {error, Reason} -> @@ -855,7 +876,7 @@ check_path_response(Path, {ok, _Info}) -> check_path_response(Path, {error, _Reason}) -> throw({error, {no_such_directory, Path}}). -do_check_install_release(RelDir, Vsn, Releases, Masters) -> +do_check_install_release(RelDir, Vsn, Releases, Masters, Purge) -> case lists:keysearch(Vsn, #release.vsn, Releases) of {value, #release{status = current}} -> {error, {already_installed, Vsn}}; @@ -880,7 +901,20 @@ do_check_install_release(RelDir, Vsn, Releases, Masters) -> case get_rh_script(LatestRelease, Release, RelDir, Masters) of {ok, {CurrentVsn, Descr, Script}} -> case catch check_script(Script, Libs) of - ok -> + {ok,SoftPurgeMods} when Purge=:=true -> + %% Get modules with brutal_purge + %% instructions, but that can be + %% soft purged + {ok,BrutalPurgeMods} = + release_handler_1:check_old_processes( + Script,brutal_purge), + lists:foreach( + fun(Mod) -> + catch erlang:purge_module(Mod) + end, + SoftPurgeMods ++ BrutalPurgeMods), + {ok, CurrentVsn, Descr}; + {ok,_} -> {ok, CurrentVsn, Descr}; Else -> Else @@ -1967,7 +2001,7 @@ safe_write_file_m(File, Data, Masters) -> %% 'update_paths' option to release_handler:install_release/2 if the %% code path shall be updated then. %% ----------------------------------------------------------------- -get_new_libs([{App,Vsn,LibDir}|CurrentLibs], NewLibs) -> +get_new_libs([{App,Vsn,_LibDir}|CurrentLibs], NewLibs) -> case lists:keyfind(App,1,NewLibs) of {App,NewVsn,_} = LibInfo when NewVsn =/= Vsn -> [LibInfo | get_new_libs(CurrentLibs,NewLibs)]; diff --git a/lib/sasl/src/release_handler_1.erl b/lib/sasl/src/release_handler_1.erl index ff62f847ac..ef95606bb5 100644 --- a/lib/sasl/src/release_handler_1.erl +++ b/lib/sasl/src/release_handler_1.erl @@ -19,7 +19,8 @@ -module(release_handler_1). %% External exports --export([eval_script/1, eval_script/5, check_script/2]). +-export([eval_script/1, eval_script/5, + check_script/2, check_old_processes/2]). -export([get_current_vsn/1]). %% exported because used in a test case -record(eval_state, {bins = [], stopped = [], suspended = [], apps = [], @@ -47,17 +48,20 @@ %%% This is a low-level release handler. %%%----------------------------------------------------------------- check_script(Script, LibDirs) -> - case catch check_old_processes(Script) of - ok -> + case catch check_old_processes(Script,soft_purge) of + {ok, PurgeMods} -> {Before, _After} = split_instructions(Script), case catch lists:foldl(fun(Instruction, EvalState1) -> eval(Instruction, EvalState1) end, #eval_state{libdirs = LibDirs}, Before) of - EvalState2 when is_record(EvalState2, eval_state) -> ok; - {error, Error} -> {error, Error}; - Other -> {error, Other} + EvalState2 when is_record(EvalState2, eval_state) -> + {ok,PurgeMods}; + {error, Error} -> + {error, Error}; + Other -> + {error, Other} end; {error, Mod} -> {error, {old_processes, Mod}} @@ -68,8 +72,8 @@ eval_script(Script) -> eval_script(Script, [], [], [], []). eval_script(Script, Apps, LibDirs, NewLibs, Opts) -> - case catch check_old_processes(Script) of - ok -> + case catch check_old_processes(Script,soft_purge) of + {ok,_} -> {Before, After} = split_instructions(Script), case catch lists:foldl(fun(Instruction, EvalState1) -> eval(Instruction, EvalState1) @@ -112,32 +116,63 @@ split_instructions([], Before) -> {[], lists:reverse(Before)}. %%----------------------------------------------------------------- -%% Func: check_old_processes/1 +%% Func: check_old_processes/2 %% Args: Script = [instruction()] +%% PrePurgeMethod = soft_purge | brutal_purge %% Purpose: Check if there is any process that runs an old version -%% of a module that should be soft_purged, (i.e. not purged -%% at all if there is any such process). Returns {error, Mod} -%% if so, ok otherwise. -%% Returns: ok | {error, Mod} +%% of a module that should be purged according to PrePurgeMethod. +%% Returns a list of modules that can be soft_purged. +%% +%% If PrePurgeMethod == soft_purge, the function will succeed +%% only if there is no process running old code of any of the +%% modules. Else it will throw {error,Mod}, where Mod is the +%% first module found that can not be soft_purged. +%% +%% If PrePurgeMethod == brutal_purge, the function will +%% always succeed and return a list of all modules that are +%% specified in the script with PrePurgeMethod brutal_purge, +%% but that can be soft_purged. +%% +%% Returns: {ok,PurgeMods} | {error, Mod} +%% PurgeMods = [Mod] %% Mod = atom() %%----------------------------------------------------------------- -check_old_processes(Script) -> - lists:foreach(fun({load, {Mod, soft_purge, _PostPurgeMethod}}) -> - check_old_code(Mod); - ({remove, {Mod, soft_purge, _PostPurgeMethod}}) -> - check_old_code(Mod); - (_) -> ok - end, - Script). +check_old_processes(Script,PrePurgeMethod) -> + Procs = erlang:processes(), + {ok,lists:flatmap( + fun({load, {Mod, PPM, _PostPurgeMethod}}) when PPM==PrePurgeMethod -> + check_old_code(Mod,Procs,PrePurgeMethod); + ({remove, {Mod, PPM, _PostPurgeMethod}}) when PPM==PrePurgeMethod -> + check_old_code(Mod,Procs,PrePurgeMethod); + (_) -> [] + end, + Script)}. + +check_old_code(Mod,Procs,PrePurgeMethod) -> + case erlang:check_old_code(Mod) of + true when PrePurgeMethod==soft_purge -> + do_check_old_code(Mod,Procs); + true when PrePurgeMethod==brutal_purge -> + case catch do_check_old_code(Mod,Procs) of + {error,Mod} -> []; + R -> R + end; + false -> + [] + end. + + +do_check_old_code(Mod,Procs) -> + lists:foreach( + fun(Pid) -> + case erlang:check_process_code(Pid, Mod) of + false -> ok; + true -> throw({error, Mod}) + end + end, + Procs), + [Mod]. -check_old_code(Mod) -> - lists:foreach(fun(Pid) -> - case erlang:check_process_code(Pid, Mod) of - false -> ok; - true -> throw({error, Mod}) - end - end, - erlang:processes()). %%----------------------------------------------------------------- %% An unpurged module is a module for which there exist an old diff --git a/lib/sasl/src/systools_lib.erl b/lib/sasl/src/systools_lib.erl index f951647b79..1b6ea125d9 100644 --- a/lib/sasl/src/systools_lib.erl +++ b/lib/sasl/src/systools_lib.erl @@ -24,7 +24,7 @@ %% -export([file_term2binary/2, read_term/1, read_term_from_stream/2, - get_dirs/1, get_path/1]). + get_dirs/1, get_path/1, werror/2]). -include_lib("kernel/include/file.hrl"). @@ -219,6 +219,7 @@ flat([H|T], Ack) -> flat(T, [H|Ack]); flat([], Ack) -> lists:reverse(Ack). - - + +werror(Options, Warnings) -> + lists:member(warnings_as_errors, Options) andalso Warnings =/= []. diff --git a/lib/sasl/src/systools_make.erl b/lib/sasl/src/systools_make.erl index 7489ee58d2..7f400f5cce 100644 --- a/lib/sasl/src/systools_make.erl +++ b/lib/sasl/src/systools_make.erl @@ -44,10 +44,12 @@ %%----------------------------------------------------------------- %% Create a boot script from a release file. -%% Options is a list of {path, Path} | silent | local where path sets -%% the search path, silent supresses error message printing on console, -%% local generates a script with references to the directories there -%% the applications are found. +%% Options is a list of {path, Path} | silent | local +%% | warnings_as_errors +%% where path sets the search path, silent supresses error message +%% printing on console, local generates a script with references +%% to the directories there the applications are found, +%% and warnings_as_errors treats warnings as errors. %% %% New options: {path,Path} can contain wildcards %% src_tests @@ -85,11 +87,16 @@ make_script(RelName, Output, Flags) when is_list(RelName), ModTestP = {member(src_tests, Flags),xref_p(Flags)}, case get_release(RelName, Path, ModTestP, machine(Flags)) of {ok, Release, Appls, Warnings} -> - case generate_script(Output,Release,Appls,Flags) of - ok -> + case systools_lib:werror(Flags, Warnings) of + true -> return(ok,Warnings,Flags); - Error -> - return(Error,Warnings,Flags) + false -> + case generate_script(Output,Release,Appls,Flags) of + ok -> + return(ok,Warnings,Flags); + Error -> + return(Error,Warnings,Flags) + end end; Error -> return(Error,[],Flags) @@ -130,10 +137,21 @@ get_outdir(Flags) -> return(ok,Warnings,Flags) -> case member(silent,Flags) of true -> - {ok,?MODULE,Warnings}; + case systools_lib:werror(Flags, Warnings) of + true -> + error; + false -> + {ok,?MODULE,Warnings} + end; _ -> - io:format("~s",[format_warning(Warnings)]), - ok + case member(warnings_as_errors,Flags) of + true -> + io:format("~s",[format_warning(Warnings, true)]), + error; + false -> + io:format("~s",[format_warning(Warnings)]), + ok + end end; return({error,Mod,Error},_,Flags) -> case member(silent,Flags) of @@ -1612,9 +1630,9 @@ var_dir(_Dir, _, _, []) -> false. appDir(AppDir) -> - case reverse(filename:split(AppDir)) of - ["ebin"|Dir] -> filename:join(reverse(Dir)); - _ -> AppDir + case filename:basename(AppDir) of + "ebin" -> filename:dirname(AppDir); + _ -> AppDir end. add_modules(Modules, Tar, AppDir, ToDir, Ext) -> @@ -1833,78 +1851,89 @@ get_flag(_,_) -> false. %% Check Options for make_script check_args_script(Args) -> cas(Args, - {undef, undef, undef, undef, undef, undef, undef, undef, []}). + {undef, undef, undef, undef, undef, undef, undef, undef, + undef, []}). -cas([], {_Path,_Sil,_Loc,_Test,_Var,_Mach,_Xref,_XrefApps, X}) -> +cas([], {_Path,_Sil,_Loc,_Test,_Var,_Mach,_Xref,_XrefApps,_Werror, X}) -> X; %%% path --------------------------------------------------------------- -cas([{path, P} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_list(P) -> +cas([{path, P} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_list(P) -> case check_path(P) of ok -> - cas(Args, {P, Sil, Loc, Test, Var, Mach, Xref, XrefApps,X}); + cas(Args, {P, Sil, Loc, Test, Var, Mach, Xref, XrefApps, + Werror, X}); error -> cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, - X++[{path,P}]}) + Werror, X++[{path,P}]}) end; %%% silent ------------------------------------------------------------- -cas([silent | Args], {Path, _Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) -> - cas(Args, {Path, silent, Loc, Test, Var, Mach, Xref, XrefApps, X}); +cas([silent | Args], {Path, _Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, silent, Loc, Test, Var, Mach, Xref, XrefApps, + Werror, X}); %%% local -------------------------------------------------------------- -cas([local | Args], {Path, Sil, _Loc, Test, Var, Mach, - Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, local, Test, Var, Mach, Xref, XrefApps, X}); +cas([local | Args], {Path, Sil, _Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, Sil, local, Test, Var, Mach, Xref, XrefApps, + Werror, X}); %%% src_tests ------------------------------------------------------- -cas([src_tests | Args], {Path, Sil, Loc, _Test, Var, Mach, - Xref, XrefApps, X}) -> +cas([src_tests | Args], {Path, Sil, Loc, _Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> cas(Args, - {Path, Sil, Loc, src_tests, Var, Mach, Xref, XrefApps,X}); + {Path, Sil, Loc, src_tests, Var, Mach, Xref, Werror, XrefApps,X}); %%% variables ---------------------------------------------------------- -cas([{variables, V} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_list(V) -> +cas([{variables, V} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_list(V) -> case check_vars(V) of ok -> cas(Args, - {Path, Sil, Loc, Test, V, Mach, Xref, XrefApps, X}); + {Path, Sil, Loc, Test, V, Mach, Xref, XrefApps, Werror, X}); error -> cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, - X++[{variables, V}]}) + Werror, X++[{variables, V}]}) end; %%% machine ------------------------------------------------------------ -cas([{machine, M} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_atom(M) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, X}); +cas([{machine, M} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_atom(M) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, X}); %%% exref -------------------------------------------------------------- -cas([exref | Args], {Path, Sil, Loc, Test, Var, Mach, - _Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, exref, XrefApps, X}); +cas([exref | Args], {Path, Sil, Loc, Test, Var, Mach, _Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, exref, XrefApps, Werror, X}); %%% exref Apps --------------------------------------------------------- -cas([{exref, Apps} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_list(Apps) -> +cas([{exref, Apps} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_list(Apps) -> case check_apps(Apps) of ok -> cas(Args, {Path, Sil, Loc, Test, Var, Mach, - Xref, Apps, X}); + Xref, Apps, Werror, X}); error -> cas(Args, {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X++[{exref, Apps}]}) + Xref, XrefApps, Werror, X++[{exref, Apps}]}) end; %%% outdir Dir --------------------------------------------------------- -cas([{outdir, Dir} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_list(Dir) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, X}); +cas([{outdir, Dir} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_list(Dir) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, X}); %%% otp_build (secret, not documented) --------------------------------- -cas([otp_build | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, X}); +cas([otp_build | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, X}); %%% no_module_tests (kept for backwards compatibility, but ignored) ---- -cas([no_module_tests | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps,X}); +cas([no_module_tests | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, X}); +%%% warnings_as_errors (kept for backwards compatibility, but ignored) ---- +cas([warnings_as_errors | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, _Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, + warnings_as_errors, X}); %%% ERROR -------------------------------------------------------------- -cas([Y | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps,X++[Y]}). +cas([Y | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, + Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, + X++[Y]}). @@ -2030,7 +2059,6 @@ check_apps([H|T]) when is_atom(H) -> check_apps(_) -> error. - %% Format error format_error(badly_formatted_release) -> @@ -2144,21 +2172,31 @@ form_tar_err({add, File, Error}) -> %% Format warning format_warning(Warnings) -> - map(fun({warning,W}) -> form_warn(W) end, Warnings). - -form_warn({source_not_found,{Mod,_,App,_,_}}) -> - io_lib:format("*WARNING* ~p: Source code not found: ~p.erl~n", - [App,Mod]); -form_warn({{parse_error, File},{_,_,App,_,_}}) -> - io_lib:format("*WARNING* ~p: Parse error: ~p~n", - [App,File]); -form_warn({obj_out_of_date,{Mod,_,App,_,_}}) -> - io_lib:format("*WARNING* ~p: Object code (~p) out of date~n",[App,Mod]); -form_warn({exref_undef, Undef}) -> - F = fun({M,F,A}) -> - io_lib:format("*WARNING* Undefined function ~p:~p/~p~n", - [M,F,A]) + format_warning(Warnings, false). + +format_warning(Warnings, Werror) -> + Prefix = case Werror of + true -> + ""; + false -> + "*WARNING* " + end, + map(fun({warning,W}) -> form_warn(Prefix, W) end, Warnings). + +form_warn(Prefix, {source_not_found,{Mod,_,App,_,_}}) -> + io_lib:format("~s~p: Source code not found: ~p.erl~n", + [Prefix,App,Mod]); +form_warn(Prefix, {{parse_error, File},{_,_,App,_,_}}) -> + io_lib:format("~s~p: Parse error: ~p~n", + [Prefix,App,File]); +form_warn(Prefix, {obj_out_of_date,{Mod,_,App,_,_}}) -> + io_lib:format("~s~p: Object code (~p) out of date~n", + [Prefix,App,Mod]); +form_warn(Prefix, {exref_undef, Undef}) -> + F = fun({M,F,A}) -> + io_lib:format("~sUndefined function ~p:~p/~p~n", + [Prefix,M,F,A]) end, map(F, Undef); -form_warn(What) -> - io_lib:format("*WARNING* ~p~n", [What]). +form_warn(Prefix, What) -> + io_lib:format("~s ~p~n", [Prefix,What]). diff --git a/lib/sasl/src/systools_relup.erl b/lib/sasl/src/systools_relup.erl index ec5486226c..6d9e922900 100644 --- a/lib/sasl/src/systools_relup.erl +++ b/lib/sasl/src/systools_relup.erl @@ -122,7 +122,7 @@ %% rel_filename() = description() = string() %% Opts = [opt()] %% opt() = {path, [path()]} | silent | noexec | restart_emulator -%% | {outdir, string()} +%% | {outdir, string()} | warnings_as_errors %% path() = [string()] %% Ret = ok | error | {ok, Relup, Module, Warnings} | {error, Module, Error} %% @@ -139,8 +139,9 @@ %% %% The option `path' sets search path, `silent' suppresses printing of %% error messages to the console, `noexec' inhibits the creation of -%% the output "relup" file, and restart_emulator ensures that the new -%% emulator is restarted (as the final step). +%% the output "relup" file, restart_emulator ensures that the new +%% emulator is restarted (as the final step), and `warnings_as_errors' +%% treats warnings as errors. %% ---------------------------------------------------------------- mk_relup(TopRelFile, BaseUpRelDcs, BaseDnRelDcs) -> mk_relup(TopRelFile, BaseUpRelDcs, BaseDnRelDcs, []). @@ -153,14 +154,29 @@ mk_relup(TopRelFile, BaseUpRelDcs, BaseDnRelDcs, Opts) -> {false, false} -> case R of {ok, _Res, _Mod, Ws} -> - print_warnings(Ws), - ok; + print_warnings(Ws, Opts), + case systools_lib:werror(Opts, Ws) of + true -> + error; + false -> + ok + end; Other -> print_error(Other), error end; - _ -> - R + _ -> + case R of + {ok, _Res, _Mod, Ws} -> + case systools_lib:werror(Opts, Ws) of + true -> + error; + false -> + R + end; + R -> + R + end end; BadArg -> erlang:error({badarg, BadArg}) @@ -195,7 +211,12 @@ do_mk_relup(TopRelFile, BaseUpRelDcs, BaseDnRelDcs, Path, Opts) -> {Dn, Ws2} = foreach_baserel_dn(TopRel, TopApps, BaseDnRelDcs, Path, Opts, Ws1), Relup = {TopRel#release.vsn, Up, Dn}, - write_relup_file(Relup, Opts), + case systools_lib:werror(Opts, Ws2) of + true -> + ok; + false -> + write_relup_file(Relup, Opts) + end, {ok, Relup, ?MODULE, Ws2}; Other -> throw(Other) @@ -527,20 +548,29 @@ format_error(Error) -> io:format("~p~n", [Error]). -print_warnings(Ws) when is_list(Ws) -> - lists:foreach(fun(W) -> print_warning(W) end, Ws); -print_warnings(W) -> - print_warning(W). +print_warnings(Ws, Opts) when is_list(Ws) -> + lists:foreach(fun(W) -> print_warning(W, Opts) end, Ws); +print_warnings(W, Opts) -> + print_warning(W, Opts). -print_warning(W) -> - S = format_warning(W), +print_warning(W, Opts) -> + Prefix = case lists:member(warnings_as_errors, Opts) of + true -> + ""; + false -> + "*WARNING* " + end, + S = format_warning(Prefix, W), io:format("~s", [S]). -format_warning({erts_vsn_changed, {Rel1, Rel2}}) -> - io_lib:format("*WARNING* The ERTS version changed between ~p and ~p~n", - [Rel1, Rel2]); -format_warning(What) -> - io_lib:format("*WARNING* ~p~n",[What]). +format_warning(W) -> + format_warning("*WARNING* ", W). + +format_warning(Prefix, {erts_vsn_changed, {Rel1, Rel2}}) -> + io_lib:format("~sThe ERTS version changed between ~p and ~p~n", + [Prefix, Rel1, Rel2]); +format_warning(Prefix, What) -> + io_lib:format("~s~p~n",[Prefix, What]). get_reason({error, {open, _, _}}) -> open; diff --git a/lib/sasl/test/release_handler_SUITE.erl b/lib/sasl/test/release_handler_SUITE.erl index 9c7733b7ec..b44da72d35 100644 --- a/lib/sasl/test/release_handler_SUITE.erl +++ b/lib/sasl/test/release_handler_SUITE.erl @@ -55,7 +55,10 @@ win32_cases() -> %% Cases that can be run on all platforms cases() -> - [otp_2740, otp_2760, otp_5761, otp_9402, otp_9417, instructions, eval_appup]. + [otp_2740, otp_2760, otp_5761, otp_9402, otp_9417, + otp_9395_check_old_code, otp_9395_check_and_purge, + otp_9395_update_many_mods, otp_9395_rm_many_mods, + instructions, eval_appup]. groups() -> [{release,[], @@ -556,7 +559,7 @@ otp_2760(Conf) -> LibDir = filename:join([DataDir,app1_app2,lib1]), Rel1 = create_and_install_fake_first_release(Dir,[{app1,"1.0",LibDir}]), - Rel2 = create_fake_upgrade_release(Dir,"after",[],{Rel1,Rel1,[LibDir]}), + Rel2 = create_fake_upgrade_release(Dir,"after",[],{[Rel1],[Rel1],[LibDir]}), Rel2Dir = filename:dirname(Rel2), %% Start a node with Rel1.boot and check that the app1 module is loaded @@ -569,9 +572,12 @@ otp_2760(Conf) -> {ok, []} = rpc:call(Node, release_handler_1, eval_script, [Script]), false = rpc:call(Node, code, is_loaded, [app1]), - true = stop_node(Node), ok. +otp_2760(cleanup,_Conf) -> + stop_node(node_name(otp_2760)). + + %% Test upgrade using other filesystem than the defined in OTP and %% option {update_paths, true} otp_5761(Conf) when is_list(Conf) -> @@ -597,7 +603,7 @@ otp_5761(Conf) when is_list(Conf) -> "2", [{app1,"2.0",LibDir2}, {app2,"1.0",LibDir2}], - {Rel1,Rel1,[LibDir1]}), + {[Rel1],[Rel1],[LibDir1]}), Rel1Dir = filename:dirname(Rel1), Rel2Dir = filename:dirname(Rel2), @@ -653,10 +659,11 @@ otp_5761(Conf) when is_list(Conf) -> App11Dir = rpc:call(Node, code, lib_dir, [app1]), App2aDir = rpc:call(Node, code, lib_dir, [app2]), - %% Stop the slave node - true = stop_node(Node), ok. +otp_5761(cleanup,_Conf) -> + stop_node(node_name(otp_5761)). + %% When a new version of an application is added, but no module is %% changed - the path was not updated - i.e. code:priv_dir would point @@ -673,7 +680,7 @@ otp_9402(Conf) when is_list(Conf) -> Rel2 = create_fake_upgrade_release(Dir, "2", [{a,"1.2",LibDir}], - {Rel1,Rel1,[LibDir]}), + {[Rel1],[Rel1],[LibDir]}), Rel1Dir = filename:dirname(Rel1), Rel2Dir = filename:dirname(Rel2), @@ -722,6 +729,9 @@ otp_9402(Conf) when is_list(Conf) -> ok. +otp_9402(cleanup,_Conf) -> + stop_node(node_name(otp_9402)). + %% When a module is deleted in an appup instruction, the upgrade %% failed if the module was not loaded. @@ -737,7 +747,7 @@ otp_9417(Conf) when is_list(Conf) -> Rel2 = create_fake_upgrade_release(Dir, "2", [{b,"2.0",LibDir}], - {Rel1,Rel1,[LibDir]}), + {[Rel1],[Rel1],[LibDir]}), Rel1Dir = filename:dirname(Rel1), Rel2Dir = filename:dirname(Rel2), @@ -777,6 +787,282 @@ otp_9417(Conf) when is_list(Conf) -> {file,BServerBeam} = rpc:call(Node,code,is_loaded,[b_server]), ok. +otp_9417(cleanup,_Conf) -> + stop_node(node_name(otp_9417)). + + +%% OTP-9395 - performance problems when there are MANY processes +%% Test that the procedure of checking for old code before an upgrade +%% can be started is "very much faster" when there is no old code in +%% the system. +otp_9395_check_old_code(Conf) when is_list(Conf) -> + + NProcs = 1000, + MPath = filename:join([?config(data_dir,Conf),"lib","many_mods-1.0","ebin"]), + code:add_path(MPath), + + %% Start NProc processes, each referencing each module + {Modules,Pids} = m:start(NProcs), + + %% Load each module again in order to get old code + [code:load_file(Mod) || Mod <- Modules], + true = erlang:check_old_code(m10), + + S = [point_of_no_return | + [{remove,{M,soft_purge,soft_purge}} || M <- Modules]], + + %% Do the old code check, then purge, and redo + {T1,{ok,PurgeMods}} = timer:tc(release_handler_1,check_script,[S,[]]), + true = (lists:sort(PurgeMods) == lists:sort(Modules)), + [code:purge(M) || M <- PurgeMods], + {T2,{ok,[]}} = timer:tc(release_handler_1,check_script,[S,[]]), + + %% Cleanup + lists:foreach(fun(Pid) -> Pid ! stop end, Pids), + lists:foreach(fun(Mod) -> code:purge(Mod), + code:delete(Mod), + code:purge(Mod) + end, Modules), + code:del_path(MPath), + + %% Test that second run was much faster than the first + if T2 > 0 -> + X = T1/T2, + ct:log("~p procs, ~p mods -> ~n" + "\tWith old code: ~.2f sec~n" + "\tAfter purge: ~.2f sec~n" + "\tT1/T2: ~.2f", + [NProcs,length(Modules),T1/1000000,T2/1000000,X]), + if X < 1000 -> + ct:fail({not_enough_improvement_after_purge,round(X)}); + true -> + ok + end; + T1 > 0 -> %% Means T1/T2 = infinite + ok; + true -> + ct:fail({unexpected_values,T1,T2}) + end, + ok. + + +%% OTP-9395 - performance problems when there are MANY processes +%% Added option 'purge' to check_install_release +otp_9395_check_and_purge(Conf) when is_list(Conf) -> + %% Set some paths + PrivDir = priv_dir(Conf), + Dir = filename:join(PrivDir,"otp_9395_check_and_purge"), + LibDir = filename:join(?config(data_dir, Conf), "lib"), + + %% Create the releases + Rel1 = create_and_install_fake_first_release(Dir, + [{b,"1.0",LibDir}]), + Rel2 = create_fake_upgrade_release(Dir, + "2", + [{b,"2.0",LibDir}], + {[Rel1],[Rel1],[LibDir]}), + Rel1Dir = filename:dirname(Rel1), + Rel2Dir = filename:dirname(Rel2), + + %% Start a slave node + {ok, Node} = t_start_node(otp_9395_check_and_purge, Rel1, + filename:join(Rel1Dir,"sys.config")), + + %% Make sure there is old code for b_lib and b_server + rpc:call(Node,code,load_file,[b_lib]), + rpc:call(Node,code,load_file,[b_lib]), + rpc:call(Node,code,load_file,[b_server]), + rpc:call(Node,code,load_file,[b_server]), + true = rpc:call(Node,erlang,check_old_code,[b_lib]), + true = rpc:call(Node,erlang,check_old_code,[b_server]), + + %% Unpack second release, which removes b_lib module and loads b_server + {ok, RelVsn2} = + rpc:call(Node, release_handler, set_unpacked, + [Rel2++".rel", [{b,"2.0",LibDir}]]), + ok = rpc:call(Node, release_handler, install_file, + [RelVsn2, filename:join(Rel2Dir, "relup")]), + ok = rpc:call(Node, release_handler, install_file, + [RelVsn2, filename:join(Rel2Dir, "start.boot")]), + ok = rpc:call(Node, release_handler, install_file, + [RelVsn2, filename:join(Rel2Dir, "sys.config")]), + + %% Do check_install_release, and check that old code still exists + {ok, _RelVsn1, []} = + rpc:call(Node, release_handler, check_install_release, [RelVsn2]), + true = rpc:call(Node,erlang,check_old_code,[b_lib]), + true = rpc:call(Node,erlang,check_old_code,[b_server]), + + %% Do check_install_release with option 'purge' and check that old + %% code is gone + {ok, _RelVsn1, []} = + rpc:call(Node, release_handler, check_install_release, [RelVsn2,[purge]]), + false = rpc:call(Node,erlang,check_old_code,[b_lib]), + false = rpc:call(Node,erlang,check_old_code,[b_server]), + + ok. + +otp_9395_check_and_purge(cleanup,_Conf) -> + stop_node(node_name(otp_9395_check_and_purge)). + + +%% OTP-9395 - performance problems when there are MANY processes +%% Upgrade which updates many modules (brutal_purge) +otp_9395_update_many_mods(Conf) when is_list(Conf) -> + %% Set some paths + PrivDir = priv_dir(Conf), + Dir = filename:join(PrivDir,"otp_9395_update_many_mods"), + LibDir = filename:join(?config(data_dir, Conf), "lib"), + + %% Create the releases + Rel1 = create_and_install_fake_first_release(Dir, + [{many_mods,"1.0",LibDir}]), + Rel2 = create_fake_upgrade_release(Dir, + "2", + [{many_mods,"1.1",LibDir}], + {[Rel1],[Rel1],[LibDir]}), + Rel1Dir = filename:dirname(Rel1), + Rel2Dir = filename:dirname(Rel2), + + %% Start a slave node + {ok, Node} = t_start_node(otp_9395_update_many_mods, Rel1, + filename:join(Rel1Dir,"sys.config")), + + %% Start a lot of processes on the new node, all with refs to each + %% module that will be updated + NProcs = 1000, + {Modules,Pids1} = rpc:call(Node,m,start,[NProcs]), + + %% Then load modules in order to get old code + [rpc:call(Node,code,load_file,[Mod]) || Mod <- Modules], + true = rpc:call(Node,erlang,check_old_code,[m10]), + + %% Unpack second release, which updates all mX modules + {ok, RelVsn2} = + rpc:call(Node, release_handler, set_unpacked, + [Rel2++".rel", [{many_mods,"1.1",LibDir}]]), + ok = rpc:call(Node, release_handler, install_file, + [RelVsn2, filename:join(Rel2Dir, "relup")]), + ok = rpc:call(Node, release_handler, install_file, + [RelVsn2, filename:join(Rel2Dir, "start.boot")]), + ok = rpc:call(Node, release_handler, install_file, + [RelVsn2, filename:join(Rel2Dir, "sys.config")]), + + %% First, install release directly and check how much time it takes + {TInst0,{ok, _, []}} = + timer:tc(rpc,call,[Node, release_handler, install_release, [RelVsn2]]), + ct:log("install_release: ~.2f",[TInst0/1000000]), + + %% Restore to old release, spawn processes again and load to get old code + {_,RelVsn1} = init:script_id(), + {_TInst1,{ok, _, []}} = + timer:tc(rpc,call,[Node, release_handler, install_release, [RelVsn1]]), +% ct:log("install_release: ~.2f",[_TInst1/1000000]), + + [exit(Pid,kill) || Pid <- Pids1], + {Modules,_Pids2} = rpc:call(Node,m,start,[NProcs]), + [rpc:call(Node,code,load_file,[Mod]) || Mod <- Modules], + true = rpc:call(Node,erlang,check_old_code,[m10]), + + %% Run check_install_release with purge before install this time + {TCheck,{ok, _RelVsn1, []}} = + timer:tc(rpc,call,[Node, release_handler, check_install_release, + [RelVsn2,[purge]]]), + ct:log("check_install_release with purge: ~.2f",[TCheck/1000000]), + + %% Finally install release after check and purge, and check that + %% this install was faster than the first. + {TInst2,{ok, _RelVsn1, []}} = + timer:tc(rpc,call,[Node, release_handler, install_release, [RelVsn2]]), + ct:log("install_release: ~.2f",[TInst2/1000000]), + + true = (TInst2 < TInst0), + + ok. + +otp_9395_update_many_mods(cleanup,_Conf) -> + stop_node(node_name(otp_9395_update_many_mods)). + + +%% OTP-9395 - performance problems when there are MANY processes +%% Upgrade which removes many modules (brutal_purge) +otp_9395_rm_many_mods(Conf) when is_list(Conf) -> + %% Set some paths + PrivDir = priv_dir(Conf), + Dir = filename:join(PrivDir,"otp_9395_rm_many_mods"), + LibDir = filename:join(?config(data_dir, Conf), "lib"), + + %% Create the releases + Rel1 = create_and_install_fake_first_release(Dir, + [{many_mods,"1.0",LibDir}]), + Rel2 = create_fake_upgrade_release(Dir, + "2", + [{many_mods,"2.0",LibDir}], + {[Rel1],[Rel1],[LibDir]}), + Rel1Dir = filename:dirname(Rel1), + Rel2Dir = filename:dirname(Rel2), + + %% Start a slave node + {ok, Node} = t_start_node(otp_9395_rm_many_mods, Rel1, + filename:join(Rel1Dir,"sys.config")), + + %% Start a lot of processes on the new node, all with refs to each + %% module that will be updated + NProcs = 1000, + {Modules,Pids1} = rpc:call(Node,m,start,[NProcs]), + + %% Then load modules in order to get old code + [rpc:call(Node,code,load_file,[Mod]) || Mod <- Modules], + true = rpc:call(Node,erlang,check_old_code,[m10]), + + %% Unpack second release, which removes all mX modules + {ok, RelVsn2} = + rpc:call(Node, release_handler, set_unpacked, + [Rel2++".rel", [{many_mods,"2.0",LibDir}]]), + ok = rpc:call(Node, release_handler, install_file, + [RelVsn2, filename:join(Rel2Dir, "relup")]), + ok = rpc:call(Node, release_handler, install_file, + [RelVsn2, filename:join(Rel2Dir, "start.boot")]), + ok = rpc:call(Node, release_handler, install_file, + [RelVsn2, filename:join(Rel2Dir, "sys.config")]), + + %% First, install release directly and check how much time it takes + {TInst0,{ok, _, []}} = + timer:tc(rpc,call,[Node, release_handler, install_release, [RelVsn2]]), + ct:log("install_release: ~.2f",[TInst0/1000000]), + + %% Restore to old release, spawn processes again and load to get old code + {_,RelVsn1} = init:script_id(), + {_TInst1,{ok, _, []}} = + timer:tc(rpc,call,[Node, release_handler, install_release, [RelVsn1]]), +% ct:log("install_release: ~.2f",[_TInst1/1000000]), + + [exit(Pid,kill) || Pid <- Pids1], + {Modules,_Pids2} = rpc:call(Node,m,start,[NProcs]), + [rpc:call(Node,code,load_file,[Mod]) || Mod <- Modules], + true = rpc:call(Node,erlang,check_old_code,[m10]), + + %% Run check_install_release with purge before install this time + {TCheck,{ok, _RelVsn1, []}} = + timer:tc(rpc,call,[Node, release_handler, check_install_release, + [RelVsn2,[purge]]]), + ct:log("check_install_release with purge: ~.2f",[TCheck/1000000]), + + %% Finally install release after check and purge, and check that + %% this install was faster than the first. + {TInst2,{ok, _RelVsn1, []}} = + timer:tc(rpc,call,[Node, release_handler, install_release, [RelVsn2]]), + ct:log("install_release: ~.2f",[TInst2/1000000]), + + true = (TInst2 =< TInst0), + + ok. + +otp_9395_rm_many_mods(cleanup,_Conf) -> + stop_node(node_name(otp_9395_rm_many_mods)). + + + %% Test upgrade and downgrade of applications eval_appup(Conf) when is_list(Conf) -> @@ -1838,9 +2124,8 @@ create_fake_upgrade_release(Dir,RelVsn,AppDirs,{UpFrom,DownTo,ExtraLibs}) -> %% And a relup file so it can be upgraded to RelupPath = Paths ++ [filename:join([Lib,"*","ebin"]) || Lib <- ExtraLibs], - ok = systools:make_relup(Rel,[UpFrom],[DownTo], - [{path,RelupPath}, - {outdir,RelDir}]), + ok = systools:make_relup(Rel,UpFrom,DownTo,[{path,RelupPath}, + {outdir,RelDir}]), Rel. diff --git a/lib/sasl/test/release_handler_SUITE_data/Makefile.src b/lib/sasl/test/release_handler_SUITE_data/Makefile.src index a12e526d2e..9b07e7ce0a 100644 --- a/lib/sasl/test/release_handler_SUITE_data/Makefile.src +++ b/lib/sasl/test/release_handler_SUITE_data/Makefile.src @@ -13,7 +13,30 @@ LIB= \ lib/a-1.0/ebin/a_sup.@EMULATOR@ \ lib/b-1.0/ebin/b_server.@EMULATOR@ \ lib/b-1.0/ebin/b_lib.@EMULATOR@ \ - lib/b-2.0/ebin/b_server.@EMULATOR@ + lib/b-2.0/ebin/b_server.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m1.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m2.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m3.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m4.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m5.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m6.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m7.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m8.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m9.@EMULATOR@ \ + lib/many_mods-1.0/ebin/m10.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m1.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m2.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m3.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m4.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m5.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m6.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m7.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m8.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m9.@EMULATOR@ \ + lib/many_mods-1.1/ebin/m10.@EMULATOR@ \ + lib/many_mods-2.0/ebin/m.@EMULATOR@ APP= \ app1_app2/lib1/app1-1.0/ebin/app1_sup.@EMULATOR@ \ @@ -75,6 +98,52 @@ lib/b-1.0/ebin/b_lib.@EMULATOR@: lib/b-1.0/src/b_lib.erl lib/b-2.0/ebin/b_server.@EMULATOR@: lib/b-2.0/src/b_server.erl erlc $(EFLAGS) -olib/b-2.0/ebin lib/b-2.0/src/b_server.erl +lib/many_mods-1.0/ebin/m.@EMULATOR@: lib/many_mods-1.0/src/m.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m.erl +lib/many_mods-1.0/ebin/m1.@EMULATOR@: lib/many_mods-1.0/src/m1.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m1.erl +lib/many_mods-1.0/ebin/m2.@EMULATOR@: lib/many_mods-1.0/src/m2.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m2.erl +lib/many_mods-1.0/ebin/m3.@EMULATOR@: lib/many_mods-1.0/src/m3.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m3.erl +lib/many_mods-1.0/ebin/m4.@EMULATOR@: lib/many_mods-1.0/src/m4.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m4.erl +lib/many_mods-1.0/ebin/m5.@EMULATOR@: lib/many_mods-1.0/src/m5.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m5.erl +lib/many_mods-1.0/ebin/m6.@EMULATOR@: lib/many_mods-1.0/src/m6.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m6.erl +lib/many_mods-1.0/ebin/m7.@EMULATOR@: lib/many_mods-1.0/src/m7.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m7.erl +lib/many_mods-1.0/ebin/m8.@EMULATOR@: lib/many_mods-1.0/src/m8.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m8.erl +lib/many_mods-1.0/ebin/m9.@EMULATOR@: lib/many_mods-1.0/src/m9.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m9.erl +lib/many_mods-1.0/ebin/m10.@EMULATOR@: lib/many_mods-1.0/src/m10.erl + erlc $(EFLAGS) -olib/many_mods-1.0/ebin lib/many_mods-1.0/src/m10.erl +lib/many_mods-1.1/ebin/m.@EMULATOR@: lib/many_mods-1.1/src/m.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m.erl +lib/many_mods-1.1/ebin/m1.@EMULATOR@: lib/many_mods-1.1/src/m1.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m1.erl +lib/many_mods-1.1/ebin/m2.@EMULATOR@: lib/many_mods-1.1/src/m2.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m2.erl +lib/many_mods-1.1/ebin/m3.@EMULATOR@: lib/many_mods-1.1/src/m3.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m3.erl +lib/many_mods-1.1/ebin/m4.@EMULATOR@: lib/many_mods-1.1/src/m4.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m4.erl +lib/many_mods-1.1/ebin/m5.@EMULATOR@: lib/many_mods-1.1/src/m5.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m5.erl +lib/many_mods-1.1/ebin/m6.@EMULATOR@: lib/many_mods-1.1/src/m6.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m6.erl +lib/many_mods-1.1/ebin/m7.@EMULATOR@: lib/many_mods-1.1/src/m7.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m7.erl +lib/many_mods-1.1/ebin/m8.@EMULATOR@: lib/many_mods-1.1/src/m8.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m8.erl +lib/many_mods-1.1/ebin/m9.@EMULATOR@: lib/many_mods-1.1/src/m9.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m9.erl +lib/many_mods-1.1/ebin/m10.@EMULATOR@: lib/many_mods-1.1/src/m10.erl + erlc $(EFLAGS) -olib/many_mods-1.1/ebin lib/many_mods-1.1/src/m10.erl +lib/many_mods-2.0/ebin/m.@EMULATOR@: lib/many_mods-2.0/src/m.erl + erlc $(EFLAGS) -olib/many_mods-2.0/ebin lib/many_mods-2.0/src/m.erl app1_app2/lib1/app1-1.0/ebin/app1_sup.@EMULATOR@: app1_app2/lib1/app1-1.0/src/app1_sup.erl diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/README b/lib/sasl/test/release_handler_SUITE_data/lib/README index 667d21d4cf..639a4ca0fb 100644 --- a/lib/sasl/test/release_handler_SUITE_data/lib/README +++ b/lib/sasl/test/release_handler_SUITE_data/lib/README @@ -13,4 +13,21 @@ start version, includes b_lib and b_server b-2.0: can be upgraded to from b-1.0. -Removes b_lib and updates b_server +Removes b_lib (soft_purge) and updates b_server (brutal_purge) +* The diff in purge method is important for test "check_and_purge", in + order to check that the purge option to check_install_release works + for both methods. + +many_mods-1.0: +start version. +m:start/1 starts N procs, each calling Mod:bar() in all other modules (m1-m10). +m1-m10: implements bar() which returns a big constant. +The point is to get many processes with references to many modules, +and then load the modules again so that old code exists. See tests +otp_9395_update_many_mods and otp_9395_rm_many_mods. + +many_mods-1.1: +can be upgraded to from many_mods-1.0. Updates modules m1-m10. + +many_mods-2.0: +can be upgraded to from many_mods-1.0. Removes modules m1-m10.
\ No newline at end of file diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/b-2.0/ebin/b.appup b/lib/sasl/test/release_handler_SUITE_data/lib/b-2.0/ebin/b.appup index d261a37732..001255a88c 100644 --- a/lib/sasl/test/release_handler_SUITE_data/lib/b-2.0/ebin/b.appup +++ b/lib/sasl/test/release_handler_SUITE_data/lib/b-2.0/ebin/b.appup @@ -1,3 +1,6 @@ +%% -*- erlang -*- {"2.0", - [{"1.0",[{delete_module,b_lib}, {update,b_server,{advanced,[]}}]}], - [{"1.0",[{add_module,b_lib},{update,b_server,{advanced,[]}}]}]}. + [{"1.0",[{remove_module,b_lib,soft_purge,soft_purge,[]}, + {update,b_server,{advanced,[]}}]}], + [{"1.0",[{add_module,b_lib}, + {update,b_server,{advanced,[]}}]}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/ebin/many_mods.app b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/ebin/many_mods.app new file mode 100644 index 0000000000..aa39adfffa --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/ebin/many_mods.app @@ -0,0 +1,17 @@ +%% -*- erlang -*- +{application, many_mods, + [{description, "Application with many modules CXC 138 11"}, + {vsn, "1.0"}, + {modules, [{m, 1}, + {m1,1}, + {m2,1}, + {m3,1}, + {m4,1}, + {m5,1}, + {m6,1}, + {m7,1}, + {m8,1}, + {m9,1}, + {m10,1}]}, + {registered, []}, + {applications, [kernel, stdlib]}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m.erl new file mode 100644 index 0000000000..418102bebb --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m.erl @@ -0,0 +1,11 @@ +-module(m). +-compile(export_all). + +start(NProcs) -> + Modules = [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10], + Pids = [spawn_link(fun() -> + Cs = [M:bar() || M <- Modules], + receive stop -> Cs end + end) || + _ <- lists:seq(1,NProcs)], + {Modules,Pids}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m1.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m1.erl new file mode 100644 index 0000000000..cacc13f5d7 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m1.erl @@ -0,0 +1,4 @@ +-module(m1). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m10.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m10.erl new file mode 100644 index 0000000000..81e120b891 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m10.erl @@ -0,0 +1,4 @@ +-module(m10). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m2.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m2.erl new file mode 100644 index 0000000000..481276ba7b --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m2.erl @@ -0,0 +1,4 @@ +-module(m2). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m3.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m3.erl new file mode 100644 index 0000000000..9a04ed5fc9 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m3.erl @@ -0,0 +1,4 @@ +-module(m3). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m4.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m4.erl new file mode 100644 index 0000000000..90de9a30c9 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m4.erl @@ -0,0 +1,4 @@ +-module(m4). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m5.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m5.erl new file mode 100644 index 0000000000..8a9b690dfa --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m5.erl @@ -0,0 +1,4 @@ +-module(m5). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m6.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m6.erl new file mode 100644 index 0000000000..cd0d3977ed --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m6.erl @@ -0,0 +1,4 @@ +-module(m6). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m7.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m7.erl new file mode 100644 index 0000000000..1f79918d6e --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m7.erl @@ -0,0 +1,4 @@ +-module(m7). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m8.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m8.erl new file mode 100644 index 0000000000..2ce03a0b7e --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m8.erl @@ -0,0 +1,4 @@ +-module(m8). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m9.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m9.erl new file mode 100644 index 0000000000..1c5f72e628 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.0/src/m9.erl @@ -0,0 +1,4 @@ +-module(m9). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/ebin/many_mods.app b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/ebin/many_mods.app new file mode 100644 index 0000000000..36c50caf2f --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/ebin/many_mods.app @@ -0,0 +1,17 @@ +%% -*- erlang -*- +{application, many_mods, + [{description, "Application with many modules CXC 138 11"}, + {vsn, "1.1"}, + {modules, [{m, 1}, + {m1,1}, + {m2,1}, + {m3,1}, + {m4,1}, + {m5,1}, + {m6,1}, + {m7,1}, + {m8,1}, + {m9,1}, + {m10,1}]}, + {registered, []}, + {applications, [kernel, stdlib]}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/ebin/many_mods.appup b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/ebin/many_mods.appup new file mode 100644 index 0000000000..696435e06f --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/ebin/many_mods.appup @@ -0,0 +1,22 @@ +%% -*- erlang -*- +{"1.1", + [{"1.0",[{update,m1}, + {update,m2}, + {update,m3}, + {update,m4}, + {update,m5}, + {update,m6}, + {update,m7}, + {update,m8}, + {update,m9}, + {update,m10}]}], + [{"1.0",[{update,m1}, + {update,m2}, + {update,m3}, + {update,m4}, + {update,m5}, + {update,m6}, + {update,m7}, + {update,m8}, + {update,m9}, + {update,m10}]}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m.erl new file mode 100644 index 0000000000..418102bebb --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m.erl @@ -0,0 +1,11 @@ +-module(m). +-compile(export_all). + +start(NProcs) -> + Modules = [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10], + Pids = [spawn_link(fun() -> + Cs = [M:bar() || M <- Modules], + receive stop -> Cs end + end) || + _ <- lists:seq(1,NProcs)], + {Modules,Pids}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m1.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m1.erl new file mode 100644 index 0000000000..cacc13f5d7 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m1.erl @@ -0,0 +1,4 @@ +-module(m1). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m10.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m10.erl new file mode 100644 index 0000000000..81e120b891 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m10.erl @@ -0,0 +1,4 @@ +-module(m10). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m2.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m2.erl new file mode 100644 index 0000000000..481276ba7b --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m2.erl @@ -0,0 +1,4 @@ +-module(m2). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m3.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m3.erl new file mode 100644 index 0000000000..9a04ed5fc9 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m3.erl @@ -0,0 +1,4 @@ +-module(m3). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m4.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m4.erl new file mode 100644 index 0000000000..90de9a30c9 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m4.erl @@ -0,0 +1,4 @@ +-module(m4). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m5.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m5.erl new file mode 100644 index 0000000000..8a9b690dfa --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m5.erl @@ -0,0 +1,4 @@ +-module(m5). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m6.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m6.erl new file mode 100644 index 0000000000..cd0d3977ed --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m6.erl @@ -0,0 +1,4 @@ +-module(m6). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m7.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m7.erl new file mode 100644 index 0000000000..1f79918d6e --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m7.erl @@ -0,0 +1,4 @@ +-module(m7). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m8.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m8.erl new file mode 100644 index 0000000000..2ce03a0b7e --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m8.erl @@ -0,0 +1,4 @@ +-module(m8). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m9.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m9.erl new file mode 100644 index 0000000000..1c5f72e628 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-1.1/src/m9.erl @@ -0,0 +1,4 @@ +-module(m9). +-compile(export_all). +%% A module with a big constant... +bar() -> {now(),[{1,'1',"1"},{2,'2',"2"},{3,'3',"3"},{4,'4',"4"},{5,'5',"5"},{6,'6',"6"},{7,'7',"7"},{8,'8',"8"},{9,'9',"9"},{10,'10',"10"},{11,'11',"11"},{12,'12',"12"},{13,'13',"13"},{14,'14',"14"},{15,'15',"15"},{16,'16',"16"},{17,'17',"17"},{18,'18',"18"},{19,'19',"19"},{20,'20',"20"},{21,'21',"21"},{22,'22',"22"},{23,'23',"23"},{24,'24',"24"},{25,'25',"25"},{26,'26',"26"},{27,'27',"27"},{28,'28',"28"},{29,'29',"29"},{30,'30',"30"},{31,'31',"31"},{32,'32',"32"},{33,'33',"33"},{34,'34',"34"},{35,'35',"35"},{36,'36',"36"},{37,'37',"37"},{38,'38',"38"},{39,'39',"39"},{40,'40',"40"},{41,'41',"41"},{42,'42',"42"},{43,'43',"43"},{44,'44',"44"},{45,'45',"45"},{46,'46',"46"},{47,'47',"47"},{48,'48',"48"},{49,'49',"49"},{50,'50',"50"},{51,'51',"51"},{52,'52',"52"},{53,'53',"53"},{54,'54',"54"},{55,'55',"55"},{56,'56',"56"},{57,'57',"57"},{58,'58',"58"},{59,'59',"59"},{60,'60',"60"},{61,'61',"61"},{62,'62',"62"},{63,'63',"63"},{64,'64',"64"},{65,'65',"65"},{66,'66',"66"},{67,'67',"67"},{68,'68',"68"},{69,'69',"69"},{70,'70',"70"},{71,'71',"71"},{72,'72',"72"},{73,'73',"73"},{74,'74',"74"},{75,'75',"75"},{76,'76',"76"},{77,'77',"77"},{78,'78',"78"},{79,'79',"79"},{80,'80',"80"},{81,'81',"81"},{82,'82',"82"},{83,'83',"83"},{84,'84',"84"},{85,'85',"85"},{86,'86',"86"},{87,'87',"87"},{88,'88',"88"},{89,'89',"89"},{90,'90',"90"},{91,'91',"91"},{92,'92',"92"},{93,'93',"93"},{94,'94',"94"},{95,'95',"95"},{96,'96',"96"},{97,'97',"97"},{98,'98',"98"},{99,'99',"99"},{100,'100',"100"}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-2.0/ebin/many_mods.app b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-2.0/ebin/many_mods.app new file mode 100644 index 0000000000..98f6527750 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-2.0/ebin/many_mods.app @@ -0,0 +1,7 @@ +%% -*- erlang -*- +{application, many_mods, + [{description, "Application with many modules CXC 138 11"}, + {vsn, "2.0"}, + {modules, [{m, 1}]}, + {registered, []}, + {applications, [kernel, stdlib]}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-2.0/ebin/many_mods.appup b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-2.0/ebin/many_mods.appup new file mode 100644 index 0000000000..3a34db78c1 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-2.0/ebin/many_mods.appup @@ -0,0 +1,24 @@ +%% -*- erlang -*- +{"2.0", + [{"1.0",[{update,m}, + {delete_module,m1}, + {delete_module,m2}, + {delete_module,m3}, + {delete_module,m4}, + {delete_module,m5}, + {delete_module,m6}, + {delete_module,m7}, + {delete_module,m8}, + {delete_module,m9}, + {delete_module,m10}]}], + [{"1.0",[{update,m}, + {add_module,m1}, + {add_module,m2}, + {add_module,m3}, + {add_module,m4}, + {add_module,m5}, + {add_module,m6}, + {add_module,m7}, + {add_module,m8}, + {add_module,m9}, + {add_module,m10}]}]}. diff --git a/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-2.0/src/m.erl b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-2.0/src/m.erl new file mode 100644 index 0000000000..2edc1e6be4 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/lib/many_mods-2.0/src/m.erl @@ -0,0 +1,11 @@ +-module(m). +-compile(export_all). + +start(NProcs) -> + Modules = [], + Pids = [spawn_link(fun() -> + Cs = [M:bar() || M <- Modules], + receive stop -> Cs end + end) || + _ <- lists:seq(1,NProcs)], + {Modules,Pids}. diff --git a/lib/sasl/test/systools_SUITE.erl b/lib/sasl/test/systools_SUITE.erl index 9190b111ef..e352247d44 100644 --- a/lib/sasl/test/systools_SUITE.erl +++ b/lib/sasl/test/systools_SUITE.erl @@ -48,7 +48,7 @@ included_fail_script/1, included_bug_script/1, exref_script/1]). -export([ tar_options/1, normal_tar/1, no_mod_vsn_tar/1, variable_tar/1, src_tests_tar/1, shadow_tar/1, var_tar/1, - exref_tar/1, link_tar/1]). + exref_tar/1, link_tar/1, otp_9507/1]). -export([ normal_relup/1, abnormal_relup/1, no_appup_relup/1, bad_appup_relup/1, app_start_type_relup/1, otp_3065/1]). -export([ @@ -81,7 +81,7 @@ groups() -> {tar, [], [tar_options, normal_tar, no_mod_vsn_tar, variable_tar, src_tests_tar, shadow_tar, var_tar, - exref_tar, link_tar]}, + exref_tar, link_tar, otp_9507]}, {relup, [], [normal_relup, abnormal_relup, no_appup_relup, bad_appup_relup, app_start_type_relup]}, @@ -396,6 +396,7 @@ src_tests_script(Config) when is_list(Config) -> ?line PSAVE = code:get_path(), % Save path ?line {LatestDir, LatestName} = create_script(latest,Config), + ?line BootFile = LatestName ++ ".boot", ?line DataDir = filename:absname(?copydir), ?line LibDir = fname([DataDir, d_missing_src, lib]), @@ -416,14 +417,32 @@ src_tests_script(Config) when is_list(Config) -> ?line Erl2 = filename:join([P1,"..","src","db2.erl"]), ?line file:delete(Erl2), - %% Then make script - two warnings should be issued when - %% src_tests is given + %% Then make script + + %% .boot file should not exist + ?line ok = file:delete(BootFile), + ?line false = filelib:is_regular(BootFile), + %% With warnings_as_errors and src_tests option, an error should be issued + ?line error = + systools:make_script(LatestName, [silent, {path, N}, src_tests, + warnings_as_errors]), + ?line error = + systools:make_script(LatestName, [{path, N}, src_tests, + warnings_as_errors]), + + %% due to warnings_as_errors .boot file should still not exist + ?line false = filelib:is_regular(BootFile), + + %% Two warnings should be issued when src_tests is given %% 1. old object code for db1.beam %% 2. missing source code for db2.beam ?line {ok, _, [{warning,{obj_out_of_date,_}}, {warning,{source_not_found,_}}]} = systools:make_script(LatestName, [silent, {path, N}, src_tests]), + %% .boot file should exist now + ?line true = filelib:is_regular(BootFile), + %% Without the src_tests option, no warning should be issued ?line {ok, _, []} = systools:make_script(LatestName, [silent, {path, N}]), @@ -1066,6 +1085,48 @@ exref_tar(Config) when is_list(Config) -> ?line ok = file:set_cwd(OldDir), ok. + + +%% otp_9507 +%% +otp_9507(suite) -> []; +otp_9507(doc) -> + ["make_tar failed when path given as just 'ebin'."]; +otp_9507(Config) when is_list(Config) -> + ?line {ok, OldDir} = file:get_cwd(), + + ?line {LatestDir, LatestName} = create_script(latest_small,Config), + + ?line DataDir = filename:absname(?copydir), + ?line LibDir = fname([DataDir, d_normal, lib]), + ?line FeDir = fname([LibDir, 'fe-3.1']), + + ?line ok = file:set_cwd(FeDir), + + RelName = fname([LatestDir,LatestName]), + + ?line P1 = ["./ebin", + fname([DataDir, lib, kernel, ebin]), + fname([DataDir, lib, stdlib, ebin])], + ?line {ok, _, _} = systools:make_script(RelName, [silent, {path, P1}]), + ?line ok = systools:make_tar(RelName, [{path, P1}]), + ?line Content1 = tar_contents(RelName), + + ?line P2 = ["ebin", + fname([DataDir, lib, kernel, ebin]), + fname([DataDir, lib, stdlib, ebin])], + + %% Tickets solves the following line - it used to fail with + %% {function_clause,[{filename,join,[[]]},...} + ?line ok = systools:make_tar(RelName, [{path, P2}]), + ?line Content2 = tar_contents(RelName), + true = (Content1 == Content2), + + ?line ok = file:set_cwd(OldDir), + + ok. + + %% The relup stuff. %% %% @@ -1108,6 +1169,21 @@ normal_relup(Config) when is_list(Config) -> [{path, P}, silent]), ?line ok = check_relup([{db, "2.1"}], [{db, "1.0"}]), + %% file should not be written if warnings_as_errors is enabled. + %% delete before running tests. + ?line ok = file:delete("relup"), + + %% Check that warnings are treated as errors + ?line error = + systools:make_relup(LatestName, [LatestName2], [LatestName1], + [{path, P}, warnings_as_errors]), + ?line error = + systools:make_relup(LatestName, [LatestName2], [LatestName1], + [{path, P}, silent, warnings_as_errors]), + + %% relup file should not exist + ?line false = filelib:is_regular("relup"), + %% Check that warnings get through ?line ok = systools:make_relup(LatestName, [LatestName2], [LatestName1], [{path, P}]), @@ -1117,6 +1193,9 @@ normal_relup(Config) when is_list(Config) -> [{path, P}, silent]), ?line ok = check_relup([{fe, "3.1"}, {db, "2.1"}], [{db, "1.0"}]), + %% relup file should exist now + ?line true = filelib:is_regular("relup"), + ?line ok = file:set_cwd(OldDir), ok. diff --git a/lib/snmp/test/snmp_compiler_test.erl b/lib/snmp/test/snmp_compiler_test.erl index cee11ba97a..c964b08168 100644 --- a/lib/snmp/test/snmp_compiler_test.erl +++ b/lib/snmp/test/snmp_compiler_test.erl @@ -47,7 +47,7 @@ module_identity/1, agent_capabilities/1, module_compliance/1, - warnings_as_errors/1, + warnings_as_errors/1, otp_6150/1, otp_8574/1, @@ -101,7 +101,7 @@ all() -> module_identity, agent_capabilities, module_compliance, - warnings_as_errors, + warnings_as_errors, {group, tickets} ]. @@ -282,8 +282,8 @@ warnings_as_errors(Config) when is_list(Config) -> MibDir = ?config(mib_dir, Config), MibFile = join(MibDir, "OTP8574-MIB.mib"), OutFile = join(Dir, "OTP8574-MIB.bin"), - Opts = [{group_check, false}, - {outdir, Dir}, + Opts = [{group_check, false}, + {outdir, Dir}, {verbosity, trace}, relaxed_row_name_assign_check], {error, compilation_failed} = @@ -291,6 +291,7 @@ warnings_as_errors(Config) when is_list(Config) -> false = filelib:is_regular(OutFile), {ok, _} = snmpc:compile(MibFile, Opts), true = filelib:is_regular(OutFile), + ok = file:delete(OutFile), ok. diff --git a/lib/ssl/src/ssl.erl b/lib/ssl/src/ssl.erl index 46e4b98c98..59f8479a4c 100644 --- a/lib/ssl/src/ssl.erl +++ b/lib/ssl/src/ssl.erl @@ -49,9 +49,12 @@ inet_ssl, %% inet options for internal ssl socket cb %% Callback info }). --type option() :: socketoption() | ssloption() | transportoption(). --type socketoption() :: term(). %% See gen_tcp and inet, import spec later when there is one to import --type ssloption() :: {verify, verify_type()} | +-type connect_option() :: socket_connect_option() | ssl_option() | transport_option(). +-type socket_connect_option() :: gen_tcp:connect_option(). +-type listen_option() :: socket_listen_option() | ssl_option() | transport_option(). +-type socket_listen_option() :: gen_tcp:listen_option(). + +-type ssl_option() :: {verify, verify_type()} | {verify_fun, {fun(), InitialUserState::term()}} | {fail_if_no_peer_cert, boolean()} | {depth, integer()} | {cert, Der::binary()} | {certfile, path()} | {key, Der::binary()} | @@ -66,7 +69,7 @@ string(). % (according to old API) -type ssl_imp() :: new | old. --type transportoption() :: {CallbackModule::atom(), DataTag::atom(), ClosedTag::atom()}. +-type transport_option() :: {cb_info, {CallbackModule::atom(), DataTag::atom(), ClosedTag::atom()}}. %%-------------------------------------------------------------------- @@ -96,11 +99,11 @@ stop() -> application:stop(ssl). %%-------------------------------------------------------------------- --spec connect(host() | port(), [option()]) -> {ok, #sslsocket{}} | +-spec connect(host() | port(), [connect_option()]) -> {ok, #sslsocket{}} | {error, reason()}. --spec connect(host() | port(), [option()] | port_num(), timeout() | list()) -> +-spec connect(host() | port(), [connect_option()] | inet:port_number(), timeout() | list()) -> {ok, #sslsocket{}} | {error, reason()}. --spec connect(host() | port(), port_num(), list(), timeout()) -> +-spec connect(host() | port(), inet:port_number(), list(), timeout()) -> {ok, #sslsocket{}} | {error, reason()}. %% @@ -148,7 +151,7 @@ connect(Host, Port, Options0, Timeout) -> end. %%-------------------------------------------------------------------- --spec listen(port_num(), [option()]) ->{ok, #sslsocket{}} | {error, reason()}. +-spec listen(inet:port_number(), [listen_option()]) ->{ok, #sslsocket{}} | {error, reason()}. %% %% Description: Creates an ssl listen socket. @@ -214,9 +217,9 @@ transport_accept(#sslsocket{} = ListenSocket, Timeout) -> %%-------------------------------------------------------------------- -spec ssl_accept(#sslsocket{}) -> ok | {error, reason()}. --spec ssl_accept(#sslsocket{} | port(), timeout()| [option()]) -> +-spec ssl_accept(#sslsocket{} | port(), timeout()| [ssl_option() | transport_option()]) -> ok | {ok, #sslsocket{}} | {error, reason()}. --spec ssl_accept(port(), [option()], timeout()) -> {ok, #sslsocket{}} | {error, reason()}. +-spec ssl_accept(port(), [ssl_option()| transport_option()], timeout()) -> {ok, #sslsocket{}} | {error, reason()}. %% %% Description: Performs accept on an ssl listen socket. e.i. performs %% ssl handshake. @@ -373,7 +376,7 @@ select_part(plain, Cert, Opts) -> end. %%-------------------------------------------------------------------- --spec peername(#sslsocket{}) -> {ok, {tuple(), port_num()}} | {error, reason()}. +-spec peername(#sslsocket{}) -> {ok, {inet:ip_address(), inet:port_number()}} | {error, reason()}. %% %% Description: same as inet:peername/1. %%-------------------------------------------------------------------- @@ -402,7 +405,8 @@ cipher_suites(openssl) -> [ssl_cipher:openssl_suite_name(S) || S <- ssl_cipher:suites(Version)]. %%-------------------------------------------------------------------- --spec getopts(#sslsocket{}, [atom()]) -> {ok, [{atom(), term()}]} | {error, reason()}. +-spec getopts(#sslsocket{}, [gen_tcp:option_name()]) -> + {ok, [gen_tcp:option()]} | {error, reason()}. %% %% Description: Gets options %%-------------------------------------------------------------------- @@ -425,7 +429,7 @@ getopts(#sslsocket{} = Socket, OptionTags) -> ssl_broker:getopts(Socket, OptionTags). %%-------------------------------------------------------------------- --spec setopts(#sslsocket{}, [proplists:property()]) -> ok | {error, reason()}. +-spec setopts(#sslsocket{}, [gen_tcp:option()]) -> ok | {error, reason()}. %% %% Description: Sets options %%-------------------------------------------------------------------- @@ -466,7 +470,7 @@ shutdown(#sslsocket{pid = Pid, fd = new_ssl}, How) -> ssl_connection:shutdown(Pid, How). %%-------------------------------------------------------------------- --spec sockname(#sslsocket{}) -> {ok, {tuple(), port_num()}} | {error, reason()}. +-spec sockname(#sslsocket{}) -> {ok, {inet:ip_address(), inet:port_number()}} | {error, reason()}. %% %% Description: Same as inet:sockname/1 %%-------------------------------------------------------------------- diff --git a/lib/ssl/src/ssl_connection.erl b/lib/ssl/src/ssl_connection.erl index 79570c520a..cec81d551b 100644 --- a/lib/ssl/src/ssl_connection.erl +++ b/lib/ssl/src/ssl_connection.erl @@ -127,7 +127,7 @@ send(Pid, Data) -> recv(Pid, Length, Timeout) -> sync_send_all_state_event(Pid, {recv, Length}, Timeout). %%-------------------------------------------------------------------- --spec connect(host(), port_num(), port(), {#ssl_options{}, #socket_options{}}, +-spec connect(host(), inet:port_number(), port(), {#ssl_options{}, #socket_options{}}, pid(), tuple(), timeout()) -> {ok, #sslsocket{}} | {error, reason()}. %% @@ -141,7 +141,7 @@ connect(Host, Port, Socket, Options, User, CbInfo, Timeout) -> {error, ssl_not_started} end. %%-------------------------------------------------------------------- --spec ssl_accept(port_num(), port(), {#ssl_options{}, #socket_options{}}, +-spec ssl_accept(inet:port_number(), port(), {#ssl_options{}, #socket_options{}}, pid(), tuple(), timeout()) -> {ok, #sslsocket{}} | {error, reason()}. %% @@ -212,14 +212,14 @@ shutdown(ConnectionPid, How) -> new_user(ConnectionPid, User) -> sync_send_all_state_event(ConnectionPid, {new_user, User}). %%-------------------------------------------------------------------- --spec sockname(pid()) -> {ok, {tuple(), port_num()}} | {error, reason()}. +-spec sockname(pid()) -> {ok, {inet:ip_address(), inet:port_number()}} | {error, reason()}. %% %% Description: Same as inet:sockname/1 %%-------------------------------------------------------------------- sockname(ConnectionPid) -> sync_send_all_state_event(ConnectionPid, sockname). %%-------------------------------------------------------------------- --spec peername(pid()) -> {ok, {tuple(), port_num()}} | {error, reason()}. +-spec peername(pid()) -> {ok, {inet:ip_address(), inet:port_number()}} | {error, reason()}. %% %% Description: Same as inet:peername/1 %%-------------------------------------------------------------------- @@ -277,7 +277,7 @@ renegotiation(ConnectionPid) -> %%==================================================================== %%-------------------------------------------------------------------- --spec start_link(atom(), host(), port_num(), port(), list(), pid(), tuple()) -> +-spec start_link(atom(), host(), inet:port_number(), port(), list(), pid(), tuple()) -> {ok, pid()} | ignore | {error, reason()}. %% %% Description: Creates a gen_fsm process which calls Module:init/1 to @@ -1778,7 +1778,8 @@ format_reply(binary, _, N, Data) when N > 0 -> % Header mode format_reply(binary, _, _, Data) -> Data; format_reply(list, Packet, _, Data) - when Packet == http; Packet == {http, headers}; Packet == http_bin; Packet == {http_bin, headers} -> + when Packet == http; Packet == {http, headers}; Packet == http_bin; Packet == {http_bin, headers}; Packet == httph; + Packet == httph_bin-> Data; format_reply(list, _,_, Data) -> binary_to_list(Data). @@ -2090,7 +2091,9 @@ set_socket_opts(Socket, [{packet, Packet}| Opts], SockOpts, Other) when Packet = Packet == tpkt; Packet == line; Packet == http; - Packet == http_bin -> + Packet == httph; + Packet == http_bin; + Packet == httph_bin -> set_socket_opts(Socket, Opts, SockOpts#socket_options{packet = Packet}, Other); set_socket_opts(_, [{packet, _} = Opt| _], SockOpts, _) -> diff --git a/lib/ssl/src/ssl_handshake.erl b/lib/ssl/src/ssl_handshake.erl index 4e74aec4ac..453ea20f99 100644 --- a/lib/ssl/src/ssl_handshake.erl +++ b/lib/ssl/src/ssl_handshake.erl @@ -48,7 +48,7 @@ %% Internal application API %%==================================================================== %%-------------------------------------------------------------------- --spec client_hello(host(), port_num(), #connection_states{}, +-spec client_hello(host(), inet:port_number(), #connection_states{}, #ssl_options{}, boolean(), der_cert()) -> #client_hello{}. %% %% Description: Creates a client hello message. @@ -106,7 +106,7 @@ hello_request() -> %%-------------------------------------------------------------------- -spec hello(#server_hello{} | #client_hello{}, #ssl_options{}, - #connection_states{} | {port_num(), #session{}, db_handle(), + #connection_states{} | {inet:port_number(), #session{}, db_handle(), atom(), #connection_states{}, binary()}, boolean()) -> {tls_version(), session_id(), #connection_states{}}| {tls_version(), {resumed | new, #session{}}, @@ -383,8 +383,9 @@ master_secret(Version, #session{master_secret = Mastersecret}, ConnectionStates, Role) catch exit:Reason -> - error_logger:error_report("Key calculation failed due to ~p", - [Reason]), + Report = io_lib:format("Key calculation failed due to ~p", + [Reason]), + error_logger:error_report(Report), ?ALERT_REC(?FATAL, ?HANDSHAKE_FAILURE) end; @@ -400,8 +401,9 @@ master_secret(Version, PremasterSecret, ConnectionStates, Role) -> SecParams, ConnectionStates, Role) catch exit:Reason -> - error_logger:error_report("Master secret calculation failed" - " due to ~p", [Reason]), + Report = io_lib:format("Master secret calculation failed" + " due to ~p", [Reason]), + error_logger:error_report(Report), ?ALERT_REC(?FATAL, ?HANDSHAKE_FAILURE) end. diff --git a/lib/ssl/src/ssl_internal.hrl b/lib/ssl/src/ssl_internal.hrl index cc66246068..6bf1edc452 100644 --- a/lib/ssl/src/ssl_internal.hrl +++ b/lib/ssl/src/ssl_internal.hrl @@ -28,8 +28,7 @@ -type reply() :: term(). -type msg() :: term(). -type from() :: term(). --type host() :: string() | tuple(). --type port_num() :: integer(). +-type host() :: inet:ip_address() | inet:hostname(). -type session_id() :: 0 | binary(). -type tls_version() :: {integer(), integer()}. -type tls_atom_version() :: sslv3 | tlsv1. diff --git a/lib/ssl/src/ssl_manager.erl b/lib/ssl/src/ssl_manager.erl index b02815bfd8..725a085d1f 100644 --- a/lib/ssl/src/ssl_manager.erl +++ b/lib/ssl/src/ssl_manager.erl @@ -113,7 +113,7 @@ lookup_trusted_cert(DbHandle, Ref, SerialNumber, Issuer) -> issuer_candidate(PrevCandidateKey, DbHandle) -> ssl_certificate_db:issuer_candidate(PrevCandidateKey, DbHandle). %%-------------------------------------------------------------------- --spec client_session_id(host(), port_num(), #ssl_options{}, +-spec client_session_id(host(), inet:port_number(), #ssl_options{}, der_cert() | undefined) -> session_id(). %% %% Description: Select a session id for the client. @@ -122,7 +122,7 @@ client_session_id(Host, Port, SslOpts, OwnCert) -> call({client_session_id, Host, Port, SslOpts, OwnCert}). %%-------------------------------------------------------------------- --spec server_session_id(host(), port_num(), #ssl_options{}, +-spec server_session_id(host(), inet:port_number(), #ssl_options{}, der_cert()) -> session_id(). %% %% Description: Select a session id for the server. @@ -131,8 +131,8 @@ server_session_id(Port, SuggestedSessionId, SslOpts, OwnCert) -> call({server_session_id, Port, SuggestedSessionId, SslOpts, OwnCert}). %%-------------------------------------------------------------------- --spec register_session(port_num(), #session{}) -> ok. --spec register_session(host(), port_num(), #session{}) -> ok. +-spec register_session(inet:port_number(), #session{}) -> ok. +-spec register_session(host(), inet:port_number(), #session{}) -> ok. %% %% Description: Make the session available for reuse. %%-------------------------------------------------------------------- @@ -142,8 +142,8 @@ register_session(Host, Port, Session) -> register_session(Port, Session) -> cast({register_session, Port, Session}). %%-------------------------------------------------------------------- --spec invalidate_session(port_num(), #session{}) -> ok. --spec invalidate_session(host(), port_num(), #session{}) -> ok. +-spec invalidate_session(inet:port_number(), #session{}) -> ok. +-spec invalidate_session(host(), inet:port_number(), #session{}) -> ok. %% %% Description: Make the session unavailable for reuse. After %% a the session has been marked "is_resumable = false" for some while diff --git a/lib/ssl/src/ssl_session.erl b/lib/ssl/src/ssl_session.erl index 85c9fcb61c..bf738649f6 100644 --- a/lib/ssl/src/ssl_session.erl +++ b/lib/ssl/src/ssl_session.erl @@ -48,7 +48,7 @@ is_new(_ClientSuggestion, _ServerDecision) -> true. %%-------------------------------------------------------------------- --spec id({host(), port_num(), #ssl_options{}}, db_handle(), atom(), +-spec id({host(), inet:port_number(), #ssl_options{}}, db_handle(), atom(), undefined | binary()) -> binary(). %% %% Description: Should be called by the client side to get an id @@ -63,7 +63,7 @@ id(ClientInfo, Cache, CacheCb, OwnCert) -> end. %%-------------------------------------------------------------------- --spec id(port_num(), binary(), #ssl_options{}, db_handle(), +-spec id(inet:port_number(), binary(), #ssl_options{}, db_handle(), atom(), seconds(), binary()) -> binary(). %% %% Description: Should be called by the server side to get an id diff --git a/lib/ssl/src/ssl_session_cache.erl b/lib/ssl/src/ssl_session_cache.erl index 66610817be..93969f628f 100644 --- a/lib/ssl/src/ssl_session_cache.erl +++ b/lib/ssl/src/ssl_session_cache.erl @@ -28,7 +28,7 @@ -export([init/1, terminate/1, lookup/2, update/3, delete/2, foldl/3, select_session/2]). --type key() :: {{host(), port_num()}, session_id()} | {port_num(), session_id()}. +-type key() :: {{host(), inet:port_number()}, session_id()} | {inet:port_number(), session_id()}. %%-------------------------------------------------------------------- -spec init(list()) -> db_handle(). %% Returns reference to the cache (opaque) @@ -91,7 +91,7 @@ foldl(Fun, Acc0, Cache) -> ets:foldl(Fun, Acc0, Cache). %%-------------------------------------------------------------------- --spec select_session(db_handle(), {host(), port_num()} | port_num()) -> [#session{}]. +-spec select_session(db_handle(), {host(), inet:port_number()} | inet:port_number()) -> [#session{}]. %% %% Description: Selects a session that could be reused. Should be callable %% from any process. diff --git a/lib/ssl/test/ssl_packet_SUITE.erl b/lib/ssl/test/ssl_packet_SUITE.erl index d22d5d2954..9d2599b778 100644 --- a/lib/ssl/test/ssl_packet_SUITE.erl +++ b/lib/ssl/test/ssl_packet_SUITE.erl @@ -151,6 +151,9 @@ all() -> packet_cdr_decode, packet_cdr_decode_list, packet_http_decode, packet_http_decode_list, packet_http_bin_decode_multi, packet_http_error_passive, + packet_httph_active, packet_httph_bin_active, + packet_httph_active_once, packet_httph_bin_active_once, + packet_httph_passive, packet_httph_bin_passive, packet_line_decode, packet_line_decode_list, packet_asn1_decode, packet_asn1_decode_list, packet_tpkt_decode, packet_tpkt_decode_list, @@ -1594,7 +1597,7 @@ client_http_decode(Socket, HttpRequest) -> %%-------------------------------------------------------------------- packet_http_decode_list(doc) -> ["Test setting the packet option {packet, http}, {mode, list}" - "(Body will be litst too)"]; + "(Body will be list too)"]; packet_http_decode_list(suite) -> []; packet_http_decode_list(Config) when is_list(Config) -> @@ -1804,7 +1807,304 @@ server_http_decode_error(Socket, HttpResponse) -> assert_packet_opt(Socket, http), ok = ssl:send(Socket, HttpResponse), ok. +%%-------------------------------------------------------------------- +packet_httph_active(doc) -> + ["Test setting the packet option {packet, httph}"]; +packet_httph_active(suite) -> + []; +packet_httph_active(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_active, + []}}, + {options, [{active, true}, + {packet, httph}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +server_send_trailer(Socket, Trailer)-> + ssl:send(Socket, Trailer), + ok. + +client_http_decode_trailer_active(Socket) -> + receive + {ssl, Socket, + {http_header,36,'Content-Encoding',undefined,"gzip"}} -> + ok; + Other1 -> + exit({?LINE, Other1}) + end, + receive + {ssl, Socket, http_eoh} -> + ok; + Other2 -> + exit({?LINE, Other2}) + end, + ok. + +%%-------------------------------------------------------------------- +packet_httph_bin_active(doc) -> + ["Test setting the packet option {packet, httph_bin}"]; +packet_httph_bin_active(suite) -> + []; +packet_httph_bin_active(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_bin_active, + []}}, + {options, [{active, true}, + {packet, httph_bin}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +client_http_decode_trailer_bin_active(Socket) -> + receive + {ssl, Socket, + {http_header,36,'Content-Encoding',undefined, <<"gzip">>}} -> + ok; + Other1 -> + exit({?LINE, Other1}) + end, + receive + {ssl, Socket, http_eoh} -> + ok; + Other2 -> + exit({?LINE, Other2}) + end, + ok. +%%-------------------------------------------------------------------- +packet_httph_active_once(doc) -> + ["Test setting the packet option {packet, httph}"]; +packet_httph_active_once(suite) -> + []; +packet_httph_active_once(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_active_once, + []}}, + {options, [{active, false}, + {packet, httph}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + + +client_http_decode_trailer_active_once(Socket) -> + ssl:setopts(Socket, [{active, once}]), + receive + {ssl, Socket, + {http_header,36,'Content-Encoding',undefined,"gzip"}} -> + ok; + Other1 -> + exit({?LINE, Other1}) + end, + ssl:setopts(Socket, [{active, once}]), + receive + {ssl, Socket, http_eoh} -> + ok; + Other2 -> + exit({?LINE, Other2}) + end, + ok. +%%-------------------------------------------------------------------- +packet_httph_bin_active_once(doc) -> + ["Test setting the packet option {packet, httph_bin}"]; +packet_httph_bin_active_once(suite) -> + []; +packet_httph_bin_active_once(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_bin_active_once, + []}}, + {options, [{active, false}, + {packet, httph_bin}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +client_http_decode_trailer_bin_active_once(Socket) -> + ssl:setopts(Socket, [{active, once}]), + receive + {ssl, Socket, + {http_header,36,'Content-Encoding',undefined, <<"gzip">>}} -> + ok; + Other1 -> + exit({?LINE, Other1}) + end, + ssl:setopts(Socket, [{active, once}]), + receive + {ssl, Socket, http_eoh} -> + ok; + Other2 -> + exit({?LINE, Other2}) + end, + ok. + +%%-------------------------------------------------------------------- + +packet_httph_passive(doc) -> + ["Test setting the packet option {packet, httph}"]; +packet_httph_passive(suite) -> + []; +packet_httph_passive(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_passive, + []}}, + {options, [{active, false}, + {packet, httph}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +client_http_decode_trailer_passive(Socket) -> + {ok,{http_header,36,'Content-Encoding',undefined,"gzip"}} = ssl:recv(Socket, 0), + {ok, http_eoh} = ssl:recv(Socket, 0), + ok. + +%%-------------------------------------------------------------------- +packet_httph_bin_passive(doc) -> + ["Test setting the packet option {packet, httph_bin}"]; +packet_httph_bin_passive(suite) -> + []; +packet_httph_bin_passive(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_bin_passive, + []}}, + {options, [{active, false}, + {packet, httph_bin}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +client_http_decode_trailer_bin_passive(Socket) -> + {ok,{http_header,36,'Content-Encoding',undefined,<<"gzip">>}} = ssl:recv(Socket, 0), + {ok, http_eoh} = ssl:recv(Socket, 0), + ok. %%-------------------------------------------------------------------- packet_line_decode(doc) -> diff --git a/lib/stdlib/doc/src/dets.xml b/lib/stdlib/doc/src/dets.xml index 2512c84e18..54fefbe2b8 100644 --- a/lib/stdlib/doc/src/dets.xml +++ b/lib/stdlib/doc/src/dets.xml @@ -1105,7 +1105,7 @@ fun(X) -> {continue, X} end. </pre> <p>Terminate the traversal and return <c>[<anno>Value</anno> | Acc]</c>.</p> </item> </taglist> - <p>Any other value returned by <c><anno>Fun</anno></c> terminates the + <p>Any other value <c><anno>OtherValue</anno></c> returned by <c><anno>Fun</anno></c> terminates the traversal and is immediately returned. </p> </desc> diff --git a/lib/stdlib/doc/src/ets.xml b/lib/stdlib/doc/src/ets.xml index 8c952708c5..f19f92be6f 100644 --- a/lib/stdlib/doc/src/ets.xml +++ b/lib/stdlib/doc/src/ets.xml @@ -513,6 +513,9 @@ Error: fun containing local Erlang function calls the table has been fixed by the process.</p> <p>If the table never has been fixed, the call returns <c>false</c>.</p> + <item><c>Item=stats, Value=tuple()</c> <br></br> + Returns internal statistics about set, bag and duplicate_bag tables on an internal format used by OTP test suites. + Not for production use.</item> </item> </list> </desc> diff --git a/lib/stdlib/doc/src/gen_fsm.xml b/lib/stdlib/doc/src/gen_fsm.xml index 4900a8f0ef..e35b5adace 100644 --- a/lib/stdlib/doc/src/gen_fsm.xml +++ b/lib/stdlib/doc/src/gen_fsm.xml @@ -639,9 +639,9 @@ gen_fsm:sync_send_all_state_event -----> Module:handle_sync_event/4 <v>StateName = atom()</v> <v>StateData = term()</v> <v>Result = {next_state,NextStateName,NewStateData}</v> - <v> > | {next_state,NextStateName,NewStateData,Timeout}</v> - <v> > | {next_state,NextStateName,NewStateData,hibernate}</v> - <v> > | {stop,Reason,NewStateData}</v> + <v> | {next_state,NextStateName,NewStateData,Timeout}</v> + <v> | {next_state,NextStateName,NewStateData,hibernate}</v> + <v> | {stop,Reason,NewStateData}</v> <v> NextStateName = atom()</v> <v> NewStateData = term()</v> <v> Timeout = int()>0 | infinity</v> diff --git a/lib/stdlib/doc/src/supervisor.xml b/lib/stdlib/doc/src/supervisor.xml index 009aa60faa..edd119d37a 100644 --- a/lib/stdlib/doc/src/supervisor.xml +++ b/lib/stdlib/doc/src/supervisor.xml @@ -150,9 +150,12 @@ child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules} <p><c>Restart</c> defines when a terminated child process should be restarted. A <c>permanent</c> child process should always be restarted, a <c>temporary</c> child process should - never be restarted and a <c>transient</c> child process - should be restarted only if it terminates abnormally, i.e. - with another exit reason than <c>normal</c>.</p> + never be restarted (even when the supervisor's restart strategy + is <c>rest_for_one</c> or <c>one_for_all</c> and a sibling's + death causes the temporary process to be terminated) and a + <c>transient</c> child process should be restarted only if + it terminates abnormally, i.e. with another exit reason + than <c>normal</c>.</p> </item> <item> <p><c>Shutdown</c> defines how a child process should be diff --git a/lib/stdlib/src/dets.erl b/lib/stdlib/src/dets.erl index 671b5a9dd4..fa0641ffd9 100644 --- a/lib/stdlib/src/dets.erl +++ b/lib/stdlib/src/dets.erl @@ -411,7 +411,8 @@ init_table(Tab, InitFun) -> InitFun :: fun((Arg) -> Res), Arg :: read | close, Res :: end_of_input | {[object()], InitFun} | {Data, InitFun} | term(), - Options :: [{min_no_slots,no_slots()} | {format,term | bchunk}], + Options :: Option | [Option], + Option :: {min_no_slots,no_slots()} | {format,term | bchunk}, Reason :: term(), Data :: binary() | tuple(). @@ -871,11 +872,15 @@ to_ets(DTab, ETab) -> -spec traverse(Name, Fun) -> Return | {'error', Reason} when Name :: tab_name(), Fun :: fun((Object) -> FunReturn), - FunReturn :: 'continue' | {'continue', Val} | {'done', Value}, + Object :: object(), + FunReturn :: 'continue' + | {'continue', Val} + | {'done', Value} + | OtherValue, + Return :: [term()] | OtherValue, Val :: term(), Value :: term(), - Object :: object(), - Return :: [term()], + OtherValue :: term(), Reason :: term(). traverse(Tab, Fun) -> diff --git a/lib/stdlib/src/erl_compile.erl b/lib/stdlib/src/erl_compile.erl index abff37e4bc..d833f626bf 100644 --- a/lib/stdlib/src/erl_compile.erl +++ b/lib/stdlib/src/erl_compile.erl @@ -41,7 +41,6 @@ compiler(".idl") -> {ic, compile}; compiler(".asn1") -> {asn1ct, compile_asn1}; compiler(".asn") -> {asn1ct, compile_asn}; compiler(".py") -> {asn1ct, compile_py}; -compiler(".xml") -> {xmerl_scan, process}; compiler(_) -> no. %% Entry from command line. diff --git a/lib/stdlib/src/erl_internal.erl b/lib/stdlib/src/erl_internal.erl index 478f05e792..3073fc0fb5 100644 --- a/lib/stdlib/src/erl_internal.erl +++ b/lib/stdlib/src/erl_internal.erl @@ -262,6 +262,7 @@ bif(bitsize, 1) -> true; bif(bit_size, 1) -> true; bif(bitstring_to_list, 1) -> true; bif(byte_size, 1) -> true; +bif(check_old_code, 1) -> true; bif(check_process_code, 2) -> true; bif(concat_binary, 1) -> true; bif(date, 0) -> true; diff --git a/lib/stdlib/src/escript.erl b/lib/stdlib/src/escript.erl index d67617260e..cd1bacd2f5 100644 --- a/lib/stdlib/src/escript.erl +++ b/lib/stdlib/src/escript.erl @@ -62,10 +62,10 @@ -type zip_create_option() :: term(). -type section() :: shebang - | {shebang, shebang()} + | {shebang, shebang() | default | undefined} | comment - | {comment, comment()} - | {emu_args, emu_args()} + | {comment, comment() | default | undefined} + | {emu_args, emu_args() | undefined} | {source, file:filename() | binary()} | {beam, file:filename() | binary()} | {archive, file:filename() | binary()} diff --git a/lib/stdlib/src/eval_bits.erl b/lib/stdlib/src/eval_bits.erl index 2cbd6cdae7..2c7192a7e7 100644 --- a/lib/stdlib/src/eval_bits.erl +++ b/lib/stdlib/src/eval_bits.erl @@ -34,12 +34,12 @@ %% @type matchfun(). A closure which performs a match given a value, a %% pattern and an environment %% -%% @type field() represents a field in a "bin" +%% @type field(). Represents a field in a "bin". %%% Part 1: expression evaluation (binary construction) %% @spec expr_grp(Fields::[field()], Bindings::bindings(), -%% EvalFun::evalfun()) -> +%% EvalFun::evalfun(), term(), term()) -> %% {value, binary(), bindings()} %% %% @doc Returns a tuple with {value,Bin,Bs} where Bin is the binary @@ -192,9 +192,9 @@ bin_gen_field({bin_element,Line,VE,Size0,Options0}, end. %%% Part 3: binary pattern matching -%% @spec match_bits(Fields::[field()], Bin::binary() +%% @spec match_bits(Fields::[field()], Bin::binary(), %% GlobalEnv::bindings(), LocalEnv::bindings(), -%% MatchFun::matchfun(),EvalFun::evalfun()) -> +%% MatchFun::matchfun(),EvalFun::evalfun(), term()) -> %% {match, bindings()} %% @doc Used to perform matching. If the match succeeds a new %% environment is returned. If the match have some syntactic or diff --git a/lib/stdlib/src/io_lib.erl b/lib/stdlib/src/io_lib.erl index 165e03e506..0252cdf742 100644 --- a/lib/stdlib/src/io_lib.erl +++ b/lib/stdlib/src/io_lib.erl @@ -109,9 +109,9 @@ fwrite(Format, Args) -> fread(Chars, Format) -> io_lib_fread:fread(Chars, Format). --spec fread(Continuation, String, Format) -> Return when +-spec fread(Continuation, CharSpec, Format) -> Return when Continuation :: continuation() | [], - String :: string(), + CharSpec :: string() | eof, Format :: string(), Return :: {'more', Continuation1 :: continuation()} | {'done', Result, LeftOverChars :: string()}, diff --git a/lib/stdlib/src/otp_internal.erl b/lib/stdlib/src/otp_internal.erl index 39d017d430..5129ba5074 100644 --- a/lib/stdlib/src/otp_internal.erl +++ b/lib/stdlib/src/otp_internal.erl @@ -461,6 +461,14 @@ obsolete_1(public_key, pem_to_der, 1) -> obsolete_1(public_key, decode_private_key, A) when A =:= 1; A =:= 2 -> {deprecated,{public_key,pem_entry_decode,1},"R15A"}; +%% Added in R14B03. +obsolete_1(docb_gen, _, _) -> + {deprecated,"the DocBuilder application is deprecated (will be removed in R15B)"}; +obsolete_1(docb_transform, _, _) -> + {deprecated,"the DocBuilder application is deprecated (will be removed in R15B)"}; +obsolete_1(docb_xml_check, _, _) -> + {deprecated,"the DocBuilder application is deprecated (will be removed in R15B)"}; + obsolete_1(_, _, _) -> no. diff --git a/lib/stdlib/src/proplists.erl b/lib/stdlib/src/proplists.erl index 68697d0da2..e3eda5d932 100644 --- a/lib/stdlib/src/proplists.erl +++ b/lib/stdlib/src/proplists.erl @@ -49,9 +49,10 @@ %% --------------------------------------------------------------------- --export_type([property/0]). +-export_type([property/0, proplist/0]). -type property() :: atom() | tuple(). +-type proplist() :: [property()]. %% --------------------------------------------------------------------- diff --git a/lib/stdlib/src/sofs.erl b/lib/stdlib/src/sofs.erl index d38b8ab37a..34eb224647 100644 --- a/lib/stdlib/src/sofs.erl +++ b/lib/stdlib/src/sofs.erl @@ -81,7 +81,8 @@ -define(ORDTAG, 'OrdSet'). -record(?TAG, {data = [] :: list(), type = type :: term()}). --record(?ORDTAG, {orddata = {} :: tuple(), ordtype = type :: term()}). +-record(?ORDTAG, {orddata = {} :: tuple() | atom(), + ordtype = type :: term()}). -define(LIST(S), (S)#?TAG.data). -define(TYPE(S), (S)#?TAG.type). @@ -375,7 +376,7 @@ to_sets(S) when ?IS_ORDSET(S) -> -spec(no_elements(ASet) -> NoElements when ASet :: a_set() | ordset(), - NoElements :: pos_integer()). + NoElements :: non_neg_integer()). no_elements(S) when ?IS_SET(S) -> length(?LIST(S)); no_elements(S) when ?IS_ORDSET(S), is_tuple(?ORDTYPE(S)) -> diff --git a/lib/stdlib/src/supervisor.erl b/lib/stdlib/src/supervisor.erl index e60706ed05..dc31647eb5 100644 --- a/lib/stdlib/src/supervisor.erl +++ b/lib/stdlib/src/supervisor.erl @@ -735,6 +735,13 @@ restart(one_for_all, Child, State) -> terminate_children(Children, SupName) -> terminate_children(Children, SupName, []). +%% Temporary children should not be restarted and thus should +%% be skipped when building the list of terminated children, although +%% we do want them to be shut down as many functions from this module +%% use this function to just clear everything. +terminate_children([Child = #child{restart_type=temporary} | Children], SupName, Res) -> + do_terminate(Child, SupName), + terminate_children(Children, SupName, Res); terminate_children([Child | Children], SupName, Res) -> NChild = do_terminate(Child, SupName), terminate_children(Children, SupName, [NChild | Res]); diff --git a/lib/stdlib/src/sys.erl b/lib/stdlib/src/sys.erl index 8ab72c9b50..f34201604c 100644 --- a/lib/stdlib/src/sys.erl +++ b/lib/stdlib/src/sys.erl @@ -154,7 +154,7 @@ log_to_file(Name, FileName, Timeout) -> -spec statistics(Name, Flag) -> 'ok' | {'ok', Statistics} when Name :: name(), Flag :: 'true' | 'false' | 'get', - Statistics :: [StatisticsTuple], + Statistics :: [StatisticsTuple] | no_statistics, StatisticsTuple :: {'start_time', DateTime1} | {'current_time', DateTime2} | {'reductions', non_neg_integer()} @@ -168,7 +168,7 @@ statistics(Name, Flag) -> -spec statistics(Name, Flag, Timeout) -> 'ok' | {'ok', Statistics} when Name :: name(), Flag :: 'true' | 'false' | 'get', - Statistics :: [StatisticsTuple], + Statistics :: [StatisticsTuple] | no_statistics, StatisticsTuple :: {'start_time', DateTime1} | {'current_time', DateTime2} | {'reductions', non_neg_integer()} diff --git a/lib/stdlib/test/beam_lib_SUITE.erl b/lib/stdlib/test/beam_lib_SUITE.erl index 4ccc863795..91fff3cee4 100644 --- a/lib/stdlib/test/beam_lib_SUITE.erl +++ b/lib/stdlib/test/beam_lib_SUITE.erl @@ -242,8 +242,8 @@ cmp(doc) -> ["Compare contents of BEAM files and directories"]; cmp(Conf) when is_list(Conf) -> ?line PrivDir = ?privdir, - ?line Dir1 = filename:join(PrivDir, dir1), - ?line Dir2 = filename:join(PrivDir, dir2), + ?line Dir1 = filename:join(PrivDir, "dir1"), + ?line Dir2 = filename:join(PrivDir, "dir2"), ok = file:make_dir(Dir1), ok = file:make_dir(Dir2), @@ -292,8 +292,8 @@ cmp_literals(doc) -> ["Compare contents of BEAM files having literals"]; cmp_literals(Conf) when is_list(Conf) -> ?line PrivDir = ?privdir, - ?line Dir1 = filename:join(PrivDir, dir1), - ?line Dir2 = filename:join(PrivDir, dir2), + ?line Dir1 = filename:join(PrivDir, "dir1"), + ?line Dir2 = filename:join(PrivDir, "dir2"), ok = file:make_dir(Dir1), ok = file:make_dir(Dir2), @@ -381,7 +381,7 @@ otp_6711(Conf) when is_list(Conf) -> (catch {a, beam_lib:strip_files([3])}), ?line PrivDir = ?privdir, - ?line Dir = filename:join(PrivDir, dir), + ?line Dir = filename:join(PrivDir, "dir"), ?line Lib = filename:join(Dir, "lib"), ?line App = filename:join(Lib, "app"), ?line EBin = filename:join(App, "ebin"), @@ -417,8 +417,8 @@ building(doc) -> "Testing building of BEAM files."; building(Conf) when is_list(Conf) -> ?line PrivDir = ?privdir, - ?line Dir1 = filename:join(PrivDir, b_dir1), - ?line Dir2 = filename:join(PrivDir, b_dir2), + ?line Dir1 = filename:join(PrivDir, "b_dir1"), + ?line Dir2 = filename:join(PrivDir, "b_dir2"), ok = file:make_dir(Dir1), ok = file:make_dir(Dir2), @@ -688,7 +688,7 @@ chunk_info(File) -> Chunks. make_beam(Dir, Module, F) -> - ?line FileBase = filename:join(Dir, Module), + ?line FileBase = filename:join(Dir, atom_to_list(Module)), ?line Source = FileBase ++ ".erl", ?line BeamFile = FileBase ++ ".beam", ?line simple_file(Source, Module, F), diff --git a/lib/stdlib/test/dets_SUITE.erl b/lib/stdlib/test/dets_SUITE.erl index 698070368f..22a9d4a7ff 100644 --- a/lib/stdlib/test/dets_SUITE.erl +++ b/lib/stdlib/test/dets_SUITE.erl @@ -1516,7 +1516,7 @@ repair(Config, V) -> if V =:= 8 -> %% first estimated number of objects is wrong, repair once more - ?line {ok, Fd} = file:open(Fname, read_write), + ?line {ok, Fd} = file:open(Fname, [read,write]), NoPos = HeadSize - 8, % no_objects ?line file:pwrite(Fd, NoPos, <<0:32>>), % NoItems ok = file:close(Fd), @@ -3247,7 +3247,7 @@ otp_5402(suite) -> []; otp_5402(Config) when is_list(Config) -> Tab = otp_5402, - ?line File = filename:join([cannot, write, this, file]), + ?line File = filename:join(["cannot", "write", "this", "file"]), %% close ?line{ok, T} = dets:open_file(Tab, [{ram_file,true}, @@ -3887,7 +3887,7 @@ crash(File, Where) -> crash(File, Where, 10). crash(File, Where, What) when is_integer(What) -> - ?line {ok, Fd} = file:open(File, read_write), + ?line {ok, Fd} = file:open(File, [read,write]), ?line file:position(Fd, Where), ?line ok = file:write(Fd, [What]), ?line ok = file:close(Fd). @@ -4031,7 +4031,7 @@ writable(Fname) -> ?line file:write_file_info(Fname, Info#file_info{mode = Mode}). truncate(File, Where) -> - ?line {ok, Fd} = file:open(File, read_write), + ?line {ok, Fd} = file:open(File, [read,write]), ?line file:position(Fd, Where), ?line ok = file:truncate(Fd), ?line ok = file:close(Fd). diff --git a/lib/stdlib/test/epp_SUITE.erl b/lib/stdlib/test/epp_SUITE.erl index 9b024a5b49..57f3f4eddb 100644 --- a/lib/stdlib/test/epp_SUITE.erl +++ b/lib/stdlib/test/epp_SUITE.erl @@ -1280,7 +1280,7 @@ eval_tests(Config, Fun, Tests) -> check_test(Config, Test) -> - Filename = 'epp_test.erl', + Filename = "epp_test.erl", ?line PrivDir = ?config(priv_dir, Config), ?line File = filename:join(PrivDir, Filename), ?line ok = file:write_file(File, Test), @@ -1293,7 +1293,7 @@ check_test(Config, Test) -> compile_test(Config, Test0) -> Test = [<<"-module(epp_test). -compile(export_all). ">>, Test0], - Filename = 'epp_test.erl', + Filename = "epp_test.erl", ?line PrivDir = ?config(priv_dir, Config), ?line File = filename:join(PrivDir, Filename), ?line ok = file:write_file(File, Test), diff --git a/lib/stdlib/test/erl_eval_SUITE.erl b/lib/stdlib/test/erl_eval_SUITE.erl index 0bcf3c5b71..784c7cb86e 100644 --- a/lib/stdlib/test/erl_eval_SUITE.erl +++ b/lib/stdlib/test/erl_eval_SUITE.erl @@ -1189,7 +1189,7 @@ lfh() -> {eval, fun(F, As, Bs) -> local_func(F, As, Bs) end}. local_func(F, As0, Bs0) when is_atom(F) -> - {As,Bs} = erl_eval:expr_list(As0, Bs0, {eval,lfh()}), + {As,Bs} = erl_eval:expr_list(As0, Bs0, lfh()), case erlang:function_exported(?MODULE, F, length(As)) of true -> {value,apply(?MODULE, F, As),Bs}; diff --git a/lib/stdlib/test/erl_lint_SUITE.erl b/lib/stdlib/test/erl_lint_SUITE.erl index f980d52e4e..9041adbe5c 100644 --- a/lib/stdlib/test/erl_lint_SUITE.erl +++ b/lib/stdlib/test/erl_lint_SUITE.erl @@ -2981,7 +2981,7 @@ run_test(Conf, Test0, Warnings0) -> run_test2(Conf, Test, Warnings0). run_test2(Conf, Test, Warnings0) -> - Filename = 'lint_test.erl', + Filename = "lint_test.erl", DataDir = ?privdir, File = filename:join(DataDir, Filename), Opts = case Warnings0 of diff --git a/lib/stdlib/test/ets_SUITE.erl b/lib/stdlib/test/ets_SUITE.erl index 9341300f90..57df963ae2 100644 --- a/lib/stdlib/test/ets_SUITE.erl +++ b/lib/stdlib/test/ets_SUITE.erl @@ -819,6 +819,14 @@ t_delete_all_objects(Config) when is_list(Config) -> repeat_for_opts(t_delete_all_objects_do), ?line verify_etsmem(EtsMem). +get_kept_objects(T) -> + case ets:info(T,stats) of + false -> + 0; + {_,_,_,_,_,_,KO} -> + KO + end. + t_delete_all_objects_do(Opts) -> ?line T=ets_new(x,Opts), ?line filltabint(T,4000), @@ -828,10 +836,10 @@ t_delete_all_objects_do(Opts) -> ?line true = ets:delete_all_objects(T), ?line '$end_of_table' = ets:next(T,O), ?line 0 = ets:info(T,size), - ?line 4000 = ets:info(T,kept_objects), + ?line 4000 = get_kept_objects(T), ?line ets:safe_fixtable(T,false), ?line 0 = ets:info(T,size), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), ?line filltabint(T,4000), ?line 4000 = ets:info(T,size), ?line true = ets:delete_all_objects(T), @@ -861,10 +869,10 @@ t_delete_object_do(Opts) -> ?line ets:delete_object(T,{First, integer_to_list(First)}), ?line Next = ets:next(T,First), ?line 3999 = ets:info(T,size), - ?line 1 = ets:info(T,kept_objects), + ?line 1 = get_kept_objects(T), ?line ets:safe_fixtable(T,false), ?line 3999 = ets:info(T,size), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), ?line ets:delete(T), ?line T1 = ets_new(x,[ordered_set | Opts]), ?line filltabint(T1,4000), @@ -2717,7 +2725,8 @@ ordered_do(Opts) -> 9,10,11,12, 1,2,3,4, 17,18,19,20, - 13,14,15,16 + 13,14,15,16, + 1 bsl 33 ], ?line lists:foreach(fun(X) -> ets:insert(T,{X,integer_to_list(X)}) @@ -2732,13 +2741,14 @@ ordered_do(Opts) -> ?line S2 = L2, ?line [{1,"1"}] = ets:slot(T,0), ?line [{28,"28"}] = ets:slot(T,27), + ?line [{1 bsl 33,_}] = ets:slot(T,28), ?line 27 = ets:prev(T,28), ?line [{7,"7"}] = ets:slot(T,6), - ?line '$end_of_table' = ets:next(T,28), + ?line '$end_of_table' = ets:next(T,1 bsl 33), ?line [{12,"12"}] = ets:slot(T,11), - ?line '$end_of_table' = ets:slot(T,28), + ?line '$end_of_table' = ets:slot(T,29), ?line [{1,"1"}] = ets:slot(T,0), - ?line 28 = ets:prev(T,29), + ?line 28 = ets:prev(T,1 bsl 33), ?line 1 = ets:next(T,0), ?line pick_all_forward(T), ?line [{7,"7"}] = ets:slot(T,6), @@ -4969,7 +4979,7 @@ grow_pseudo_deleted_do(Type) -> [true]}]), Left = Mult*(Mod-1), ?line Left = ets:info(T,size), - ?line Mult = ets:info(T,kept_objects), + ?line Mult = get_kept_objects(T), filltabstr(T,Mult), spawn_opt(fun()-> ?line true = ets:info(T,fixed), Self ! start, @@ -4983,7 +4993,7 @@ grow_pseudo_deleted_do(Type) -> ?line true = ets:safe_fixtable(T,false), io:format("Unfix table done. ~p nitems=~p\n",[now(),ets:info(T,size)]), ?line false = ets:info(T,fixed), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), ?line done = receive_any(), %%verify_table_load(T), % may fail if concurrency is poor (genny) ets:delete(T), @@ -5010,7 +5020,7 @@ shrink_pseudo_deleted_do(Type) -> [{'>', '$1', Half}], [true]}]), ?line Half = ets:info(T,size), - ?line Half = ets:info(T,kept_objects), + ?line Half = get_kept_objects(T), spawn_opt(fun()-> ?line true = ets:info(T,fixed), Self ! start, io:format("Starting to delete... ~p\n",[now()]), @@ -5023,7 +5033,7 @@ shrink_pseudo_deleted_do(Type) -> ?line true = ets:safe_fixtable(T,false), io:format("Unfix table done. ~p nitems=~p\n",[now(),ets:info(T,size)]), ?line false = ets:info(T,fixed), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), ?line done = receive_any(), %%verify_table_load(T), % may fail if concurrency is poor (genny) ets:delete(T), @@ -5139,7 +5149,7 @@ smp_fixed_delete_do() -> ?line 0 = ets:info(T,size), ?line true = ets:info(T,fixed), ?line Buckets = num_of_buckets(T), - ?line NumOfObjs = ets:info(T,kept_objects), + ?line NumOfObjs = get_kept_objects(T), ets:safe_fixtable(T,false), %% Will fail as unfix does not shrink the table: %%?line Mem = ets:info(T,memory), @@ -5171,7 +5181,7 @@ smp_unfix_fix_do() -> Left = NumOfObjs - Deleted, ?line Left = ets:info(T,size), ?line true = ets:info(T,fixed), - ?line Deleted = ets:info(T,kept_objects), + ?line Deleted = get_kept_objects(T), {Child, Mref} = spawn_opt(fun()-> ?line true = ets:info(T,fixed), @@ -5188,7 +5198,7 @@ smp_unfix_fix_do() -> end, Deleted), ?line 0 = ets:info(T,size), - ?line true = ets:info(T,kept_objects) >= Left, + ?line true = get_kept_objects(T) >= Left, ?line done = receive_any() end, [link, monitor, {scheduler,2}]), @@ -5201,7 +5211,7 @@ smp_unfix_fix_do() -> Child ! done, {'DOWN', Mref, process, Child, normal} = receive_any(), ?line false = ets:info(T,fixed), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), %%verify_table_load(T), ets:delete(T), process_flag(scheduler,0). @@ -5239,7 +5249,7 @@ otp_8166_do(WC) -> ZombieCrPid ! quit, {'DOWN', ZombieCrMref, process, ZombieCrPid, normal} = receive_any(), ?line false = ets:info(T,fixed), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), %%verify_table_load(T), ets:delete(T), process_flag(scheduler,0). @@ -5306,7 +5316,7 @@ otp_8166_zombie_creator(T,Deleted) -> verify_table_load(T) -> ?line Stats = ets:info(T,stats), - ?line {Buckets,AvgLen,StdDev,ExpSD,_MinLen,_MaxLen} = Stats, + ?line {Buckets,AvgLen,StdDev,ExpSD,_MinLen,_MaxLen,_} = Stats, ?line ok = if AvgLen > 7 -> io:format("Table overloaded: Stats=~p\n~p\n", @@ -5918,7 +5928,7 @@ very_big_num(0, Result) -> ?line Result. make_port() -> - ?line open_port({spawn, efile}, [eof]). + ?line open_port({spawn, "efile"}, [eof]). make_pid() -> ?line spawn_link(?MODULE, sleeper, []). diff --git a/lib/stdlib/test/file_sorter_SUITE.erl b/lib/stdlib/test/file_sorter_SUITE.erl index 80d4ea5fdc..74c08912be 100644 --- a/lib/stdlib/test/file_sorter_SUITE.erl +++ b/lib/stdlib/test/file_sorter_SUITE.erl @@ -89,7 +89,7 @@ basic(suite) -> basic(Config) when is_list(Config) -> Fmt = binary, Arg = {format,Fmt}, - Foo = outfile(foo, Config), + Foo = outfile("foo", Config), P0 = pps(), ?line F1s = [F1] = to_files([[]], Fmt, Config), @@ -455,7 +455,7 @@ inout(suite) -> []; inout(Config) when is_list(Config) -> BTF = {format, binary_term}, - Foo = outfile(foo, Config), + Foo = outfile("foo", Config), %% Input is fun. End = fun(read) -> end_of_input end, @@ -522,7 +522,7 @@ many(doc) -> many(suite) -> []; many(Config) when is_list(Config) -> - Foo = outfile(foo, Config), + Foo = outfile("foo", Config), PrivDir = ?privdir(Config), P0 = pps(), @@ -587,7 +587,7 @@ misc(suite) -> []; misc(Config) when is_list(Config) -> BTF = {format, binary_term}, - Foo = outfile(foo, Config), + Foo = outfile("foo", Config), FFoo = filename:absname(Foo), P0 = pps(), @@ -704,7 +704,7 @@ misc(Config) when is_list(Config) -> sort(Fmt, XArgs, Config) -> Args = make_args(Fmt, [{size,5} | XArgs]), TmpArgs = [{tmpdir,?privdir(Config)} | Args], - Foo = outfile(foo, Config), + Foo = outfile("foo", Config), %% Input is a fun. Output is a fun. ?line [] = file_sorter:sort(input([], 2, Fmt), output([], Fmt), Args), @@ -777,7 +777,7 @@ sort(Fmt, XArgs, Config) -> keysort(Fmt, XArgs, Config) -> Args = make_args(Fmt, [{size,50}, {no_files, 2} | XArgs]), TmpArgs = Args ++ [{tmpdir,?privdir(Config)}], - Foo = outfile(foo, Config), + Foo = outfile("foo", Config), %% Input is files. Output is a file. ?line ok = file_sorter:keysort(2, [], Foo, Args), @@ -836,7 +836,7 @@ keysort(Fmt, XArgs, Config) -> merge(Fmt, XArgs, Config) -> Args = make_args(Fmt, [{size,5} | XArgs]), - Foo = outfile(foo, Config), + Foo = outfile("foo", Config), %% Input is a file. Output is a fun. ?line [] = file_sorter:merge([], output([], Fmt), Args), @@ -873,7 +873,7 @@ merge(Fmt, XArgs, Config) -> keymerge(Fmt, XArgs, Config) -> Args = make_args(Fmt, [{size,50}, {no_files, 2} | XArgs]), - Foo = outfile(foo, Config), + Foo = outfile("foo", Config), %% Input is files. Output is a file. ?line ok = file_sorter:keymerge(2, [], Foo, Args), diff --git a/lib/stdlib/test/filelib_SUITE.erl b/lib/stdlib/test/filelib_SUITE.erl index a355097fe2..3010f5e760 100644 --- a/lib/stdlib/test/filelib_SUITE.erl +++ b/lib/stdlib/test/filelib_SUITE.erl @@ -243,7 +243,7 @@ otp_5960(doc) -> ["Test that filelib:ensure_dir/1 returns ok or {error,Reason}"]; otp_5960(Config) when is_list(Config) -> ?line PrivDir = ?config(priv_dir, Config), - ?line Dir = filename:join(PrivDir, otp_5960_dir), + ?line Dir = filename:join(PrivDir, "otp_5960_dir"), ?line Name1 = filename:join(Dir, name1), ?line Name2 = filename:join(Dir, name2), ?line ok = filelib:ensure_dir(Name1), % parent is created @@ -268,7 +268,7 @@ otp_5960(Config) when is_list(Config) -> ensure_dir_eexist(Config) when is_list(Config) -> ?line PrivDir = ?config(priv_dir, Config), - ?line Dir = filename:join(PrivDir, ensure_dir_eexist), + ?line Dir = filename:join(PrivDir, "ensure_dir_eexist"), ?line Name = filename:join(Dir, "same_name_as_file_and_dir"), ?line ok = filelib:ensure_dir(Name), ?line ok = file:write_file(Name, <<"some string\n">>), diff --git a/lib/stdlib/test/string_SUITE.erl b/lib/stdlib/test/string_SUITE.erl index 1dcd4be21e..6969c095a0 100644 --- a/lib/stdlib/test/string_SUITE.erl +++ b/lib/stdlib/test/string_SUITE.erl @@ -273,9 +273,9 @@ words(Config) when is_list(Config) -> ?line 2 = string:words("2.35", $.), ?line 100 = string:words(string:copies(". ", 100)), %% invalid arg type - ?line {'EXIT',_} = (catch string:chars(hej)), + ?line {'EXIT',_} = (catch string:chars(hej, 1)), %% invalid arg type - ?line {'EXIT',_} = (catch string:chars("hej", " ")), + ?line {'EXIT',_} = (catch string:chars("hej", 1, " ")), ok. diff --git a/lib/stdlib/test/supervisor_SUITE.erl b/lib/stdlib/test/supervisor_SUITE.erl index ff5e4c629a..b48450c151 100644 --- a/lib/stdlib/test/supervisor_SUITE.erl +++ b/lib/stdlib/test/supervisor_SUITE.erl @@ -42,7 +42,7 @@ -export([ permanent_normal/1, transient_normal/1, temporary_normal/1, permanent_abnormal/1, transient_abnormal/1, - temporary_abnormal/1]). + temporary_abnormal/1, temporary_bystander/1]). %% Restart strategy tests -export([ one_for_one/1, @@ -74,7 +74,7 @@ all() -> {group, abnormal_termination}, child_unlink, tree, count_children_memory, do_not_save_start_parameters_for_temporary_children, do_not_save_child_specs_for_temporary_children, - simple_one_for_one_scale_many_temporary_children]. + simple_one_for_one_scale_many_temporary_children, temporary_bystander]. groups() -> [{sup_start, [], @@ -607,6 +607,37 @@ temporary_abnormal(Config) when is_list(Config) -> [0,0,0,0] = get_child_counts(sup_test). %%------------------------------------------------------------------------- +temporary_bystander(doc) -> + ["A temporary process killed as part of a rest_for_one or one_for_all " + "restart strategy should not be restarted given its args are not " + " saved. Otherwise the supervisor hits its limit and crashes."]; +temporary_bystander(suite) -> []; +temporary_bystander(_Config) -> + Child1 = {child1, {supervisor_1, start_child, []}, permanent, 100, + worker, []}, + Child2 = {child2, {supervisor_1, start_child, []}, temporary, 100, + worker, []}, + {ok, SupPid1} = supervisor:start_link(?MODULE, {ok, {{one_for_all, 2, 300}, []}}), + {ok, SupPid2} = supervisor:start_link(?MODULE, {ok, {{rest_for_one, 2, 300}, []}}), + unlink(SupPid1), % otherwise we crash with it + unlink(SupPid2), % otherwise we crash with it + {ok, CPid1} = supervisor:start_child(SupPid1, Child1), + {ok, _CPid2} = supervisor:start_child(SupPid1, Child2), + {ok, CPid3} = supervisor:start_child(SupPid2, Child1), + {ok, _CPid4} = supervisor:start_child(SupPid2, Child2), + terminate(SupPid1, CPid1, child1, normal), + terminate(SupPid2, CPid3, child1, normal), + timer:sleep(350), + catch link(SupPid1), + catch link(SupPid2), + %% The supervisor would die attempting to restart child2 + true = erlang:is_process_alive(SupPid1), + true = erlang:is_process_alive(SupPid2), + %% Child2 has not been restarted + [{child1, _, _, _}] = supervisor:which_children(SupPid1), + [{child1, _, _, _}] = supervisor:which_children(SupPid2). + +%%------------------------------------------------------------------------- one_for_one(doc) -> ["Test the one_for_one base case."]; one_for_one(suite) -> []; diff --git a/lib/stdlib/test/supervisor_bridge_SUITE.erl b/lib/stdlib/test/supervisor_bridge_SUITE.erl index f2dbad0b3b..c4d696564d 100644 --- a/lib/stdlib/test/supervisor_bridge_SUITE.erl +++ b/lib/stdlib/test/supervisor_bridge_SUITE.erl @@ -158,7 +158,7 @@ internal_loop(State) -> terminate(Reason,{Parent,Worker}) -> %% This func knows about supervisor_bridge io:format("Terminating bridge...\n"), - exit(kill,Worker), + exit(Worker,kill), Parent ! {dying,Reason}, anything. diff --git a/lib/stdlib/test/sys_SUITE.erl b/lib/stdlib/test/sys_SUITE.erl index 72b089aa3f..fe039e8bcc 100644 --- a/lib/stdlib/test/sys_SUITE.erl +++ b/lib/stdlib/test/sys_SUITE.erl @@ -71,7 +71,7 @@ log_to_file(Config) when is_list(Config) -> ?line ok = sys:log_to_file(?server,TempName), ?line {ok,-44} = public_call(44), ?line ok = sys:log_to_file(?server,false), - ?line {ok,Fd} = file:open(TempName,read), + ?line {ok,Fd} = file:open(TempName,[read]), ?line Msg1 = io:get_line(Fd,''), ?line Msg2 = io:get_line(Fd,''), ?line file:close(Fd), diff --git a/lib/stdlib/test/tar_SUITE.erl b/lib/stdlib/test/tar_SUITE.erl index e32704ca65..9ad3936928 100644 --- a/lib/stdlib/test/tar_SUITE.erl +++ b/lib/stdlib/test/tar_SUITE.erl @@ -65,7 +65,7 @@ borderline(Config) when is_list(Config) -> ?line {ok, Cwd} = file:get_cwd(), ?line RootDir = ?config(priv_dir, Config), - ?line TempDir = remove_prefix(Cwd++"/", filename:join(RootDir, borderline)), + ?line TempDir = remove_prefix(Cwd++"/", filename:join(RootDir, "borderline")), ?line ok = file:make_dir(TempDir), ?line Record = 512, @@ -283,17 +283,16 @@ long_names(doc) -> long_names(Config) when is_list(Config) -> ?line DataDir = ?config(data_dir, Config), ?line Long = filename:join(DataDir, "long_names.tar"), + run_in_short_tempdir(Config, + fun() -> do_long_names(Long) end). +do_long_names(Long) -> %% Try table/2 and extract/2. ?line case erl_tar:table(Long, [verbose]) of {ok,List} when is_list(List) -> ?line io:format("~p\n", [List]) end, - - %% To avoid getting too long paths for Windows to handle, extract into - %% the current directory (which is the test_server directory). Its path - %% is quite a bit shorter than the path to priv_dir. ?line {ok,Cwd} = file:get_cwd(), ?line ok = erl_tar:extract(Long), ?line Base = filename:join([Cwd, "original_software", "written_by", @@ -312,29 +311,28 @@ long_names(Config) when is_list(Config) -> ?line "Here"++_ = binary_to_list(First), ?line "And"++_ = binary_to_list(Second), - %% Clean up. - ?line delete_files([filename:join(Cwd, "original_software"),EmptyDir]), - ok. create_long_names(doc) -> ["Creates a tar file from a deep directory structure (filenames are ", "longer than 100 characters)."]; create_long_names(Config) when is_list(Config) -> - ?line PrivDir = ?config(priv_dir, Config), - ?line ok = file:set_cwd(PrivDir), - Dirs = [aslfjkshjkhliuf, - asdhjfehnbfsky, - sahajfskdfhsz, - asldfkdlfy4y8rchg, - f7nafhjgffagkhsfkhsjk, - dfjasldkfjsdkfjashbv], + run_in_short_tempdir(Config, fun create_long_names/0). + +create_long_names() -> + ?line {ok,Dir} = file:get_cwd(), + Dirs = ["aslfjkshjkhliuf", + "asdhjfehnbfsky", + "sahajfskdfhsz", + "asldfkdlfy4y8rchg", + "f7nafhjgffagkhsfkhsjk", + "dfjasldkfjsdkfjashbv"], ?line DeepDir = make_dirs(Dirs, []), ?line AFile = filename:join(DeepDir, "a_file"), ?line Hello = "hello, world\n", ?line ok = file:write_file(AFile, Hello), - ?line TarName = filename:join(PrivDir, "my_tar_with_long_names.tar"), + ?line TarName = filename:join(Dir, "my_tar_with_long_names.tar"), ?line ok = erl_tar:create(TarName, [AFile]), %% Print contents. @@ -347,9 +345,6 @@ create_long_names(Config) when is_list(Config) -> ?line {ok, Bin} = file:read_file(filename:join(ExtractDir, AFile)), ?line Hello = binary_to_list(Bin), - %% Clean up. - ?line delete_files([ExtractDir,TarName,hd(Dirs)]), - ok. make_dirs([Dir|Rest], []) -> @@ -487,7 +482,7 @@ extract_from_binary_compressed(Config) when is_list(Config) -> %% Trying extracting from a binary. ?line ok = erl_tar:extract({binary,Bin}, [compressed,{cwd,ExtractDir}]), - ?line {ok,List} = file:list_dir(filename:join(ExtractDir, ddll_SUITE_data)), + ?line {ok,List} = file:list_dir(filename:join(ExtractDir, "ddll_SUITE_data")), ?line io:format("~p\n", [List]), ?line 19 = length(List), @@ -676,7 +671,7 @@ cooked_compressed(Config) when is_list(Config) -> end, List), %% Clean up. - ?line delete_files([filename:join(PrivDir, ddll_SUITE_data)]), + ?line delete_files([filename:join(PrivDir, "ddll_SUITE_data")]), ok. memory(doc) -> @@ -734,3 +729,42 @@ delete_files([Item|Rest]) -> end, delete_files(Rest). +%% Move to a temporary directory with as short name as possible and +%% execute Fun. Remove the directory and any files in it afterwards. +%% This is necessary because pathnames on Windows may be limited to +%% 260 characters. +run_in_short_tempdir(Config, Fun) -> + {ok,Cwd} = file:get_cwd(), + PrivDir0 = ?config(priv_dir, Config), + + %% Normalize name to make sure that there is no slash at the end. + PrivDir = filename:absname(PrivDir0), + + %% We need a base directory with a much shorter pathname than + %% priv_dir. We KNOW that priv_dir is located four levels below + %% the directory that common_test puts the ct_run.* directories + %% in. That fact is not documented, but an usually reliable source + %% assured me that the directory structure is unlikely to change + %% in future versions of common_test because of backward + %% compatibility (tools developed by users of common_test depend + %% on the current directory layout). + Base = lists:foldl(fun(_, D) -> + filename:dirname(D) + end, PrivDir, [1,2,3,4]), + + Dir = make_temp_dir(Base, 0), + ok = file:set_cwd(Dir), + io:format("Running test in ~s\n", [Dir]), + try + Fun() + after + file:set_cwd(Cwd), + delete_files([Dir]) + end. + +make_temp_dir(Base, I) -> + Name = filename:join(Base, integer_to_list(I, 36)), + case file:make_dir(Name) of + ok -> Name; + {error,eexist} -> make_temp_dir(Base, I+1) + end. diff --git a/lib/test_server/src/ts_install_cth.erl b/lib/test_server/src/ts_install_cth.erl index c5444a342f..a41916fd0a 100644 --- a/lib/test_server/src/ts_install_cth.erl +++ b/lib/test_server/src/ts_install_cth.erl @@ -49,8 +49,7 @@ -include_lib("kernel/include/file.hrl"). --type proplist() :: list({atom(),term()}). --type config() :: proplist(). +-type config() :: proplists:proplist(). -type reason() :: term(). -type skip_or_fail() :: {skip, reason()} | {auto_skip, reason()} | @@ -65,19 +64,19 @@ id(_Opts) -> ?MODULE. %% @doc Always called before any other callback function. --spec init(Id :: term(), Opts :: proplist()) -> - State :: #state{}. +-spec init(Id :: term(), Opts :: proplists:proplist()) -> + {ok, State :: #state{}}. init(_Id, Opts) -> Nodenames = proplists:get_value(nodenames, Opts, 0), Nodes = proplists:get_value(nodes, Opts, 0), TSConfDir = proplists:get_value(ts_conf_dir, Opts), TargetSystem = proplists:get_value(target_system, Opts, install_local), InstallOpts = proplists:get_value(install_opts, Opts, []), - #state{ nodenames = Nodenames, - nodes = Nodes, - ts_conf_dir = TSConfDir, - target_system = TargetSystem, - install_opts = InstallOpts }. + {ok, #state{ nodenames = Nodenames, + nodes = Nodes, + ts_conf_dir = TSConfDir, + target_system = TargetSystem, + install_opts = InstallOpts } }. %% @doc Called before init_per_suite is called. -spec pre_init_per_suite(Suite :: atom(), diff --git a/lib/test_server/test/Makefile b/lib/test_server/test/Makefile index ab72a9d579..198440bb17 100644 --- a/lib/test_server/test/Makefile +++ b/lib/test_server/test/Makefile @@ -85,7 +85,7 @@ release_spec: opt release_tests_spec: make_emakefile $(INSTALL_DIR) $(RELSYSDIR) $(INSTALL_DATA) $(EMAKEFILE) $(ERL_FILES) $(COVERFILE) $(RELSYSDIR) - $(INSTALL_DATA) test_server.spec test_server.cover $(RELSYSDIR) + $(INSTALL_DATA) test_server_test_lib.hrl test_server.spec test_server.cover $(RELSYSDIR) chmod -R u+w $(RELSYSDIR) @tar cf - *_SUITE_data | (cd $(RELSYSDIR); tar xf -) diff --git a/lib/tools/emacs/erlang.el b/lib/tools/emacs/erlang.el index 6728bef2a4..a8dd3ec3ac 100644 --- a/lib/tools/emacs/erlang.el +++ b/lib/tools/emacs/erlang.el @@ -523,6 +523,32 @@ This is an elisp list of options. Each option can be either: - a string Example: '(bin_opt_info (i . \"/path1/include\") (i . \"/path2/include\"))") +(defvar erlang-compile-command-function-alist + '((".erl\\'" . inferior-erlang-compute-erl-compile-command) + (".xrl\\'" . inferior-erlang-compute-leex-compile-command) + (".yrl\\'" . inferior-erlang-compute-yecc-compile-command) + ("." . inferior-erlang-compute-erl-compile-command)) + "*Alist of filename patterns vs corresponding compilation functions. +Each element looks like (REGEXP . FUNCTION). Compiling a file whose name +matches REGEXP specifies FUNCTION to use to compute the compilation +command. The FUNCTION will be called with two arguments: module name and +default compilation options, like output directory. The FUNCTION +is expected to return a string.") + +(defvar erlang-leex-compile-opts '() + "*Options to pass to leex when compiling xrl files. +This is an elisp list of options. Each option can be either: +- an atom +- a dotted pair +- a string") + +(defvar erlang-yecc-compile-opts '() + "*Options to pass to yecc when compiling yrl files. +This is an elisp list of options. Each option can be either: +- an atom +- a dotted pair +- a string") + (eval-and-compile (defvar erlang-regexp-modern-p (if (> erlang-emacs-major-version 21) t nil) @@ -5276,6 +5302,22 @@ unless the optional NO-DISPLAY is non-nil." (file-name-as-directory buffer-dir)))) (defun inferior-erlang-compute-compile-command (module-name opts) + (let ((ccfn erlang-compile-command-function-alist) + (res (inferior-erlang-compute-erl-compile-command module-name opts)) + ccfn-entry + done) + (if (not (null (buffer-file-name))) + (while (and (not done) (not (null ccfn))) + (setq ccfn-entry (car ccfn)) + (setq ccfn (cdr ccfn)) + (if (string-match (car ccfn-entry) (buffer-file-name)) + (let ((c-fn (cdr ccfn-entry))) + (setq done t) + (if (not (null c-fn)) + (setq result (funcall c-fn module-name opts))))))) + result)) + +(defun inferior-erlang-compute-erl-compile-command (module-name opts) (let* ((out-dir-opt (assoc 'outdir opts)) (out-dir (cdr out-dir-opt))) (if erlang-compile-use-outdir @@ -5299,6 +5341,48 @@ unless the optional NO-DISPLAY is non-nil." (remq out-dir-opt opts)) tmpvar tmpvar tmpvar2))))) +(defun inferior-erlang-compute-leex-compile-command (module-name opts) + (let ((file-name (buffer-file-name)) + (erl-compile-expr (inferior-erlang-remove-any-trailing-dot + (inferior-erlang-compute-erl-compile-command + module-name opts)))) + (format (concat "f(LErr1__), f(LErr2__), " + "case case leex:file(\"%s\", [%s]) of" + " ok -> ok;" + " {ok,_} -> ok;" + " {ok,_,_} -> ok;" + " LErr1__ -> LErr1__ " + "end of" + " ok -> %s;" + " LErr2__ -> LErr2__ " + "end.") + file-name + (inferior-erlang-format-comma-opts erlang-leex-compile-opts) + erl-compile-expr))) + +(defun inferior-erlang-compute-yecc-compile-command (module-name opts) + (let ((file-name (buffer-file-name)) + (erl-compile-expr (inferior-erlang-remove-any-trailing-dot + (inferior-erlang-compute-erl-compile-command + module-name opts)))) + (format (concat "f(YErr1__), f(YErr2__), " + "case case yecc:file(\"%s\", [%s]) of" + " {ok,_} -> ok;" + " {ok,_,_} -> ok;" + " YErr1__ -> YErr1__ " + "end of" + " ok -> %s;" + " YErr2__ -> YErr2__ " + "end.") + file-name + (inferior-erlang-format-comma-opts erlang-yecc-compile-opts) + erl-compile-expr))) + +(defun inferior-erlang-remove-any-trailing-dot (str) + (if (string= (substring str -1) ".") + (substring str 0 (1- (length str))) + str)) + (defun inferior-erlang-format-comma-opts (opts) (if (null opts) "" diff --git a/lib/webtool/priv/Makefile b/lib/webtool/priv/Makefile index 56ab772c45..6e1c6606fe 100644 --- a/lib/webtool/priv/Makefile +++ b/lib/webtool/priv/Makefile @@ -39,8 +39,12 @@ HTDOCS_FILES = root/doc/index.html \ root/doc/tool_management.html \ root/doc/start_info.html -SCRIPTS = bin/start_webtool \ - bin/start_webtool.bat +ifeq ($(findstring win32,$(TARGET)),win32) +WIN32_SCRIPTS= bin/start_webtool.bat +else +WIN32_SCRIPTS= +endif +SCRIPTS = bin/start_webtool $(WIN32_SCRIPTS) # ---------------------------------------------------- # FLAGS diff --git a/lib/wx/test/wxt.erl b/lib/wx/test/wxt.erl index 1f5b1cc3b1..2f52c58f26 100644 --- a/lib/wx/test/wxt.erl +++ b/lib/wx/test/wxt.erl @@ -72,7 +72,7 @@ resolve({Suite0, Case}) when is_atom(Suite0), is_atom(Case) -> {Suite, Case2} -> {Suite, Case2} end; -resolve(List) when list(List) -> +resolve(List) when is_list(List) -> [resolve(Case) || Case <- List]. alias(Suite) when is_atom(Suite) -> @@ -104,7 +104,7 @@ read_config() -> end. %% Write new default config file -write_config(Config) when list(Config) -> +write_config(Config) when is_list(Config) -> Fname = config_fname(), {ok, Fd} = file:open(Fname, write), write_list(Fd, Config), @@ -878,8 +878,10 @@ do_primary_git () git add -A bootstrap/lib/kernel \ bootstrap/lib/stdlib \ bootstrap/lib/compiler \ - bootstrap/lib/orber/include \ bootstrap/bin + find bootstrap -name egen -o -name '*.script' -o \ + -name '*.app' -o -name '*.appup' | + xargs git reset HEAD git commit --no-verify -m 'Update primary bootstrap' } @@ -1001,24 +1003,17 @@ do_copy_primary_bootstrap () test -d $bootstrap/lib/kernel/ebin || mkdir -p $bootstrap/lib/kernel/ebin test -d $bootstrap/lib/kernel/include || mkdir -p $bootstrap/lib/kernel/include cp -f $lib_src/kernel/ebin/*.beam $bootstrap/lib/kernel/ebin - cp -f $lib_src/kernel/ebin/*.app* $bootstrap/lib/kernel/ebin cp -f $lib_src/kernel/include/*.hrl $bootstrap/lib/kernel/include # stdlib test -d $bootstrap/lib/stdlib/ebin || mkdir -p $bootstrap/lib/stdlib/ebin test -d $bootstrap/lib/stdlib/include || mkdir -p $bootstrap/lib/stdlib/include cp -f $lib_src/stdlib/ebin/*.beam $bootstrap/lib/stdlib/ebin - cp -f $lib_src/stdlib/ebin/*.app* $bootstrap/lib/stdlib/ebin cp -f $lib_src/stdlib/include/*.hrl $bootstrap/lib/stdlib/include # compiler test -d $bootstrap/lib/compiler/ebin || mkdir -p $bootstrap/lib/compiler/ebin cp -f $lib_src/compiler/ebin/*.beam $bootstrap/lib/compiler/ebin - cp -f $lib_src/compiler/ebin/*.app* $bootstrap/lib/compiler/ebin - - # orber include - test -d $bootstrap/lib/orber/include || mkdir -p $bootstrap/lib/orber/include - cp -f $lib_src/orber/include/* $bootstrap/lib/orber/include # bootstrap bin if [ $bootstrap_src_top != $ERL_TOP ]; then diff --git a/system/doc/reference_manual/distributed.xml b/system/doc/reference_manual/distributed.xml index 52222c6d9d..9c8e88250c 100644 --- a/system/doc/reference_manual/distributed.xml +++ b/system/doc/reference_manual/distributed.xml @@ -78,7 +78,7 @@ dilbert@uab</pre> using the command line flag <c>-connect_all false</c>, see <c>erl(1)</c>.</p> <p>If a node goes down, all connections to that node are removed. - Calling <c>erlang:disconnect(Node)</c> will force disconnection + Calling <c>erlang:disconnect_node(Node)</c> will force disconnection of a node.</p> <p>The list of (visible) nodes currently connected to is returned by <c>nodes()</c>.</p> |