+ { if (compat_mode(C_FTREE)) {
+ Gedcom_ctxt par = compat_generate_resi_start(PARENT);
+ START(RESI, par);
+ $<ctxt>$
+ = start_element(ELT_SUB_ADDR,
+ par, $1 + 1, $3, $4,
+ GEDCOM_MAKE_NULL_OR_STRING(val2, $4));
+ START(ADDR, $<ctxt>$);
+ }
+ else { START(ADDR, NULL) }
+ }
+ ftree_addr_subs
+ { CHECK0 }
+ CLOSE
+ { if (compat_mode(C_FTREE)) {
+ Gedcom_ctxt par = PARENT;
+ end_element(ELT_SUB_ADDR, par, $<ctxt>5, NULL);
+ CHECK0;
+ compat_generate_resi_end(PARENT, par);
+ }
+ }
+
+ftree_addr_subs : /* empty */
+ | ftree_addr_subs ftree_addr_sub
+ ;
+
+ftree_addr_sub : continuation_sub
+ | phon_sect
+ | no_std_sub
+ ;