\ExplSyntaxOn % LN : A3 : Unica interseccion. % LLN : A-C 2 : Linea horizontal. % LNN : A 3-5 : Linea vertical. % LLNN A-C 3-8 : Rectangulo. % LN -| LN : Jota. % LN |- LN : Gamma. % LN -- LN : Linea. (ver descripcion) \cs_generate_variant:Nn \int_set:Nn {Nf} \cs_generate_variant:Nn \clist_put_right:Nn {Nf} \cs_generate_variant:Nn \seq_set_from_clist:Nn {NV} \cs_new:Nn\pgfgo_int_step_sorted_variable:nnNn{\int_step_variable:nnNn{\int_min:nn{#1}{#2}}{\int_max:nn{#1}{#2}}#3{#4}} \clist_new:N \l_pgfgo_coordinate_parser_inmediate_clist \seq_new:N \l_pgfgo_coordinate_parser_inmediate_seq %\l_pgfgo_use_i_bool \prop_new:N \l_pgfgo_coordinate_parser_biyection_use_i_prop \prop_new:N \l_pgfgo_coordinate_parser_biyection_no_use_i_prop \prop_new:N \l_pgfgo_coordinate_parser_biyection_current_prop \prop_set_from_keyval:Nn \l_pgfgo_coordinate_parser_biyection_use_i_prop { A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, I=9, J=10, K=11, L=12, M=13, N=14, O=15, P=16, Q=17, R=18, S=19, T=20, U=21, V=22, W=23, X=24, Y=25, Z=26, 1=A, 2=B, 3=C, 4=D, 5=E, 6=F, 7=G, 8=H, 9=I, 10=J, 11=K, 12=L, 13=M, 14=N, 15=O, 16=P, 17=Q, 18=R, 19=S, 20=T, 21=U, 22=V, 23=W, 24=X, 25=Y, 26=Z } \prop_set_from_keyval:Nn \l_pgfgo_coordinate_parser_biyection_no_use_i_prop { A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, J=9, K=10, L=11, M=12, N=13, O=14, P=15, Q=16, R=17, S=18, T=19, U=20, V=21, W=22, X=23, Y=24, Z=25, 1=A, 2=B, 3=C, 4=D, 5=E, 6=F, 7=G, 8=H, 9=J, 10=K, 11=L, 12=M, 13=N, 14=O, 15=P, 16=Q, 17=R, 18=S, 19=T, 20=U, 21=V, 22=W, 23=X, 24=Y, 25=Z, I=9%<- porsi } \prop_set_eq:NN \l_pgfgo_coordinate_parser_biyection_current_prop \l_pgfgo_coordinate_parser_biyection_use_i_prop %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %* : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_star:{ \pgfgo_int_step_sorted_variable:nnNn{\l_pgfgo_goban_from_x_int}{\l_pgfgo_goban_to_x_int}\variableA{ \pgfgo_int_step_sorted_variable:nnNn{\l_pgfgo_goban_from_y_int}{\l_pgfgo_goban_to_y_int} \variableN { \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{\variableN}} } } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %L : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_A:n{ %A {A} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \pgfgo_int_step_sorted_variable:nnNn{\l_pgfgo_goban_from_y_int}{\l_pgfgo_goban_to_y_int}\variable { \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{\variable}} } } \cs_generate_variant:Nn \pgfgo_coordinate_parser_A:n {f} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %N : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_N:n{ %5 {5} \pgfgo_int_step_sorted_variable:nnNn{\l_pgfgo_goban_from_x_int}{\l_pgfgo_goban_to_x_int}\variable { \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variable}{#1}} } } \cs_generate_variant:Nn \pgfgo_coordinate_parser_N:n {f} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %LN : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_AN:nn{ %A 5 {A}{5} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{#2}} } \cs_generate_variant:Nn \pgfgo_coordinate_parser_AN:nn {ff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %L:L %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_AA:nn{ %A:D {A}{D} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#2}} \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{ \pgfgo_int_step_sorted_variable:nnNn{\l_pgfgo_goban_from_x_int}{\l_pgfgo_goban_to_y_int} \variableN { \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{\variableN}} } } } \cs_generate_variant:Nn \pgfgo_coordinate_parser_AA:nn {ff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %N-N : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_NN:nn{ %5:10 {5}{10} \pgfgo_int_step_sorted_variable:nnNn{\l_pgfgo_goban_from_x_int}{\l_pgfgo_goban_to_x_int}\variableA{ \pgfgo_int_step_sorted_variable:nnNn{#1}{#2} \variableN { \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{\variableN}} } } } \cs_generate_variant:Nn \pgfgo_coordinate_parser_NN:nn {ff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %L-L N : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_AAN:nnn{ %A-D 5 {A}{D}{5} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#2}} \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variable{ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variable}{#3}} } } \cs_generate_variant:Nn \pgfgo_coordinate_parser_AAN:nnn {fff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %L N-N : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_ANN:nnn{ %A 3:5 {A}{3}{5} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne\l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \pgfgo_int_step_sorted_variable:nnNn{#2}{#3}\variable{ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{\variable}} } } \cs_generate_variant:Nn \pgfgo_coordinate_parser_ANN:nnn {fff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %L-L N-N : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_AANN:nnnn{ %A-D 5-10 {A}{D}{5}{10} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#2}} \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{ \pgfgo_int_step_sorted_variable:nnNn{#3}{#4} \variableN { \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{\variableN}} } } } \cs_generate_variant:Nn \pgfgo_coordinate_parser_AANN:nnnn {ffff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %LN -| LN : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_ANHVAN:nnnn{ %A5 D10 {A}{5}{D}{10} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}} \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#2}} } \pgfgo_int_step_sorted_variable:nnNn{#2}{#4}\variableN{ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpb_int}{\variableN}} } \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_inmediate_seq } \cs_generate_variant:Nn \pgfgo_coordinate_parser_ANHVAN:nnnn{ffff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %LN |- LN : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_ANVHAN:nnnn{ %A5 D10 {A}{5}{D}{10} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}} \pgfgo_int_step_sorted_variable:nnNn{#2}{#4}\variableN{ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{\variableN}} } \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#4}} } \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_inmediate_seq } \cs_generate_variant:Nn \pgfgo_coordinate_parser_ANVHAN:nnnn{ffff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %LN -- LN : Si los numeros son iguales, linea horizontal, en caso contrario, linea vertical. (pensar implementacion oblicua). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_ANHHAN:nnnn{ %A5 D10 {A}{5}{D}{10} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}} \int_compare:nNnTF {#2}={#4} { \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#2}} } }{ \int_compare:nNnT{\l_tmpa_int}={\l_tmpb_int}{ \pgfgo_int_step_sorted_variable:nnNn{#2}{#4}\variableN{ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{\variableN}} } } } \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_inmediate_seq } \cs_generate_variant:Nn \pgfgo_coordinate_parser_ANHHAN:nnnn{ffff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %AN R AN : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_ANRAN:nnnn{ %A5 R D10 {A}{5}{D}{10} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}} \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{ \pgfgo_int_step_sorted_variable:nnNn{#2}{#4} \variableN { \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{\variableN}} } } } \cs_generate_variant:Nn \pgfgo_coordinate_parser_ANRAN:nnnn {ffff} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %AN r AN : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new:Nn\pgfgo_coordinate_parser_ANrAN:nnnn{ %A5 r D10 {A}{5}{D}{10} \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}} \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}} \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#2}} \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#4}} } \pgfgo_int_step_sorted_variable:nnNn{#2}{#4} \variableN { \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{\variableN}} \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpb_int}{\variableN}} } \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_inmediate_seq } \cs_generate_variant:Nn \pgfgo_coordinate_parser_ANrAN:nnnn {ffff} %DIVIDIMOS LAS CADENAS DE OPERADORES EN OPERADORES QUE PUEDAN PROCESARSE. %{A2 -| A3 -| A5 -- B2} %{A2 -| A3, A3 -| A5, A5 -- B2} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %EXPANDIR GRUPO ADITIVO O SUSTRACTIVO A SUBCONJUNTOS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \regex_new:N \l_pgfgo_coordinate_parser_first_regex \regex_set:Nn \l_pgfgo_coordinate_parser_first_regex{( -- | \|- | -\| | r | R) \s* (\w+\d+) \s* ( -- | \|- | -\| | r | R)} \regex_new:N \l_pgfgo_coordinate_parser_brackets_regex \regex_set:Nn \l_pgfgo_coordinate_parser_brackets_regex{([A-Z]{1})\s??\[(.)\]} \tl_new:N \l_pgfgo_coordinate_parser_expanded_group_tl \cs_new:Nn\pgfgo_coordinate_parser_expand_group:n{ \tl_set:Nn\l_pgfgo_coordinate_parser_expanded_group_tl{#1} \bool_set_true:N \l_tmpa_bool %APLICAR REGEX \bool_do_while:Nn \l_tmpa_bool { \regex_replace_all:NnNF \l_pgfgo_coordinate_parser_first_regex {\1\ \2,\ \2\ \3} \l_pgfgo_coordinate_parser_expanded_group_tl {\bool_set_false:N\l_tmpa_bool} } %REEMPLAZA LAS CORRDENADAS DE LA SITAXIS DE BRACKETS % \regex_replace_all:NnNF \l_pgfgo_coordinate_parser_brackets_regex % { % \c{clist_set:Nn} \c{l_tmpa_clist} {\2} % \c{clist_map_variable:NNn}\c{l_tmpa_clist} \c{variable} {\1\c{variable},} % } % \l_pgfgo_coordinate_parser_expanded_group_tl % \tl_log:N \l_pgfgo_coordinate_parser_expanded_group_tl } %DIVIDIMOS LAS CADENAS DE OPERADORES EN OPERADORES QUE PUEDAN PROCESARSE. %{A2 -| A3 -| A5 -- B2} %{A2 -| A3, A3 -| A5, A5 -- B2} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %EXPANDIR GRUPO ADITIVO O SUSTRACTIVO A SUBCONJUNTOS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % * = * = Todo el tablero % LN = A3 = Unica interseccion. % L = A = Linea vertical. % N = 2 = Linea horizontal. % LNN = A3:5 = Linea vertical. % LLNN = A:C 3:8 = Rectangulo. % LN -| LN = A3 -| B2 = Jota. % LN |- LN = A3 |- B2 = Gamma. % LN -- LN = A4 -- E4 = Linea. (ver descripcion) % LN r LN = A4 r E7 = Rectangulo hueco. % LN R LN = A4 R E7 = Rectangulo relleno. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % EXPANDIR SUBCONJUNTOS A ELEMENTOS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \tl_new:N \l_pgfgo_coordinate_parser_expanded_subset_tl %NO HAY ESPACIOS AL PRINCIPIO Y AL FINAL PORQUE SE ELIMINAN EN EL SPLIT DE CLIST A SEQ \regex_const:Nn \l_pgfgo_coordinate_parser_subset_star_regex {\A*\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_AN_regex {\A([A-Z]{1})(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_A_regex {\A([A-Z]{1})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_N_regex {\A(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_AA_regex {\A([A-Z]{1}):([A-Z]{1})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_NN_regex {\A(\d{1,2}):(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_AAN_regex {\A([A-Z]{1}):([A-Z]{1}) \s*(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANN_regex {\A([A-Z]{1}) \s*(\d{1,2}):(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_AANN_regex {\A([A-Z]{1}):([A-Z]{1}) \s*(\d{1,2}):(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANHVAN_regex {\A([A-Z]{1})(\d{1,2}) \s*-\| \s*([A-Z]{1})(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANVHAN_regex {\A([A-Z]{1})(\d{1,2}) \s*\|- \s*([A-Z]{1})(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANHHAN_regex {\A([A-Z]{1})(\d{1,2}) \s*-- \s*([A-Z]{1})(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANrAN_regex {\A([A-Z]{1})(\d{1,2}) \s*r \s*([A-Z]{1})(\d{1,2})\Z} \regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANRAN_regex {\A([A-Z]{1})(\d{1,2}) \s*R \s*([A-Z]{1})(\d{1,2})\Z} \cs_new:Nn\pgfgo_coordinate_parser_expand_subset:n{ \tl_set:Ne\l_pgfgo_coordinate_parser_expanded_subset_tl{#1} \seq_clear:N \l_tmpa_seq \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_AN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_AN:ff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_AAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_AAN:fff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_ANN:fff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_AANN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_AANN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANHVAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_ANHVAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANVHAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_ANVHAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANHHAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_ANHHAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANRAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_ANRAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANrAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_ANrAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_A_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_A:f{\seq_item:Nn \l_tmpa_seq {2}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_N_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_N:f{\seq_item:Nn \l_tmpa_seq {2}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_AA_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_AA:ff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_NN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq { \pgfgo_coordinate_parser_NN:ff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}} }{ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_star_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq %REALMENTE BASTA CON EL MATCH { \pgfgo_coordinate_parser_star: }{ } } } } } } } } } } } } } } } \cs_generate_variant:Nn \pgfgo_coordinate_parser_expand_subset:n {V} \seq_new:N\l_pgfgo_coordinate_parser_items_from_group_seq \seq_new:N\l_pgfgo_coordinate_parser_expanded_group_seq \cs_new:Nn\pgfgo_coordinate_parser_from_group_to_items:n{ \bool_if:NTF \l_pgfgo_use_i_bool { \prop_set_eq:NN \l_pgfgo_coordinate_parser_biyection_current_prop \l_pgfgo_coordinate_parser_biyection_use_i_prop } { \prop_set_eq:NN \l_pgfgo_coordinate_parser_biyection_current_prop \l_pgfgo_coordinate_parser_biyection_no_use_i_prop } \seq_clear:N \l_pgfgo_coordinate_parser_items_from_group_seq \pgfgo_coordinate_parser_expand_group:n{#1}% retorna \l_pgfgo_coordinate_parser_expanded_group_tl \seq_set_from_clist:NV\l_pgfgo_coordinate_parser_expanded_group_seq\l_pgfgo_coordinate_parser_expanded_group_tl \seq_map_variable:NNn\l_pgfgo_coordinate_parser_expanded_group_seq\__pgfgo_subset{ \pgfgo_coordinate_parser_expand_subset:V \__pgfgo_subset \seq_concat:NNN \l_pgfgo_coordinate_parser_items_from_group_seq \l_pgfgo_coordinate_parser_items_from_group_seq \l_pgfgo_coordinate_parser_inmediate_seq } \seq_remove_duplicates:N\l_pgfgo_coordinate_parser_items_from_group_seq } \cs_generate_variant:Nn \pgfgo_coordinate_parser_from_group_to_items:n {V} \seq_new:N \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq \bool_new:N \l_pgfgo_coordinate_parser_add_to_list \cs_new:Nn\pgfgo_coordinate_parser_from_pgfgonce_to_items:n { \seq_clear:N \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq \bool_set_true:N \l_pgfgo_coordinate_parser_add_to_list \seq_set_split:Nnn \l_tmpa_seq {;} {#1} \seq_map_variable:NNn \l_tmpa_seq\variable{ \pgfgo_coordinate_parser_from_group_to_items:V\variable %Devuelve \l_pgfgo_coordinate_parser_items_from_group_seq \bool_if:NTF \l_pgfgo_coordinate_parser_add_to_list { \seq_concat:NNN \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq \l_pgfgo_coordinate_parser_items_from_group_seq \bool_set_false:N \l_pgfgo_coordinate_parser_add_to_list }{ \seq_map_variable:NNn\l_pgfgo_coordinate_parser_items_from_group_seq\elemento { \seq_remove_all:NV\l_pgfgo_coordinate_parser_items_from_pgfgonce_seq\elemento } \bool_set_true:N \l_pgfgo_coordinate_parser_add_to_list } } \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq } %DEVUELVE \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq \ExplSyntaxOff