;;; -*- Mode: TDL; Coding: utf-8 -*- ;;; Authors: ;;; 1997-2000 Walter Kasper & Stefan Müller ;;; 2000-2002 Stefan Müller ;;; 2002-2006 Berthold Crysmann ;;; 2007 Nicolai Kilian ;;; Copyright: DFKI GmbH head := *avm* & [mod *top*, v1 *top*, prd bool, extra luk, top bool]. subj-head := head & subj-type. cat_min := *avm*. cat_min0 := cat_min & head-type. cat_min1 := cat_min0 & subj-type & [ head head , spr *list*, ucomps *eps-3-undef-nonlocs-synsem-list*, --ucomps *list*, subcat *diff-list* & [last *null*], vcomp *list* ]. cat := cat_min1 & [ _subcat *list*, vcomp *list* , _drop bool, opt bool, drop bool, no_adj bool, gf atom, extra-poss xposs, _pron *pron_min* ]. *pron_min* :< *avm*. *pron* := *pron_min* & [expl *diff-list* & [list 0-1-list], refl *diff-list* & [list 0-1-list]]. local-type :< *avm*. local_min := local-type & [cat cat_min, cont *avm*]. local_min0 := local_min & [anc anc-type-min]. local_min1 := local_min0 & uniagr-type & [adjunction adjunction, sgf sgf-type, anc anc-type-min]. local := local_min1 & [coord *top*, _third bool]. sgf-type := *avm* & [lor *list*, lee *list*]. sgf-lor- := sgf-type & [lor <>]. sgf-lee- := sgf-type & [lee <>]. sgf-lor+ := sgf-lee- & [lor ]. sgf-lee+ := sgf-lor- & [lee ]. sgf-lor-lee- := sgf-lor- & sgf-lee-. nonlocal_min :< *avm*. nonlocal_rel_min := nonlocal_min & [rel *diff-list*]. nonlocal_slash_min0 := nonlocal_min & [slash *avm*]. nonlocal_slash_min1 := nonlocal_slash_min0 & [ _slash *diff-list*, slash *diff-list* ]. nonlocal_slash_min := nonlocal_slash_min1 & [_topic-drop bool]. nonlocal := nonlocal_rel_min & nonlocal_slash_min & --tpc-type. anc-type-min := *avm*. anc-inactive_min := anc-type-min. anc-active_min := anc-type-min. anc-to-bind_min := anc-active_min. anc-inher_min := anc-active_min. anc-inher-bound_min := anc-inher_min. anc-inher-unbound_min := anc-inher_min. anc-type := anc-type-min & [active *avm*, inert *avm*, self *avm*]. anchor := *avm* & [i index-cont, _i reli-type]. anc-active := anc-type & anc-active_min & [active *diff-list*, inert *diff-list*, self *diff-list*]. anc-to-bind := anc-active & anc-to-bind_min. anc-inher := anc-active & anc-inher_min. anc-inher-bound := anc-inher & anc-inher-bound_min . anc-inher-unbound := anc-inher & anc-inher-unbound_min. anc-inactive := anc-type & anc-inactive_min & [active , inert , self ]. synsem_min :< *avm*. synsem_min0 := synsem_min & [loc local_min, nonloc nonlocal_min]. que_min := *avm*. que := que_min & *diff-list*. singleton_que := que & singleton-diff-list. synsem_min1 := synsem_min0 & [ que que_min, lex bool, phrase bool, lper bool, rper bool, v2 v2_or_non_v2, lkeys lexkeys_min]. synsem := synsem_min1 & [ ellipse bool, lex-complete bool, cat-change bool, punct punctuation_min ]. lr_min := *avm*. lr_min1 := lr_min & lr-infl-type & stem-type & [lr_stem bool]. lr := lr_min1 & umlaut-type & infix-type & [basic atom, reorder atom, iterate atom, lr_stem bool, PUNCT-LR-ARG punct-lr-arg_gen ]. punct-lr-arg_gen := *sort*. punct-lr-arg := punct-lr-arg_gen. prefix-lr-arg := punct-lr-arg. suffix-lr-arg := punct-lr-arg. non-punct-lr-arg := punct-lr-arg_gen. root-or-non-root-sign := key-arg-type & morphology & [ synsem synsem_min & [loc [anc anc-type, cont mrs_min1], nonloc nonlocal_slash_min0], SIGNPUNCT signpunct_min, vf bool, root bool, mal luk, MALRULE malrule, new-orth luk, LR lr_min, RESTR-COLL restr-coll_min ]. malrule_min := *avm*. malrule := malrule_min & [ MAL-NONLOC-VEND-BLEND mal-nonloc-vend-blend_min, MAL-DOUBLET mal-doublet_min, MAL-INFL mal-infl_min, MAL-COMMA-INFL bool ]. mal-nonloc-vend-blend_min := *avm*. mal-doublet_min := *avm*. mal-infl_min := *avm*. mal-nonloc-vend-blend := mal-nonloc-vend-blend_min & [ MAL-VEND-PERF-BLEND bool, MAL-VEND-IMPERF-BLEND bool ]. mal-doublet := mal-doublet_min & [ MAL-V1-DOUBLET bool, MAL-VEND-DOUBLET bool, MAL-PART-V-DOUBLET bool, MAL-LOCAL-DOUBLET bool ]. mal-infl := mal-infl_min & [ MAL-ADJ-INFL bool, MAL-DET-INFL bool, MAL-DAS-INFL bool, MAL-VERB-INFL bool ]. stem-or-sign := root-or-non-root-sign & [root -, poss-aff bool]. restr-coll_min :< *avm*. restr-coll_min1 := restr-coll_min & [ got-rpunct-msgpred bool ]. restr-coll_min2 := restr-coll_min1 & [ spanning-only bool ]. restr-coll_min3 := restr-coll_min2 & [ asynd_coord bool ]. restr-coll_min4 := restr-coll_min3 & [ rel-clause-proj bool ]. lr-syntax_min := lr_min. lr-syntax_min1 := lr_min1 & lr-syntax_min & [lr_stem -]. lr-syntax := lr-syntax_min1 & lr & [basic 'stop]. lr-lexicon_min := lr_min. lr-lexicon_min1 := lr_min1 & lr-lexicon_min & [lr_stem +]. lr-lexicon := lr-lexicon_min1 & lr. sign := stem-or-sign. ;; input feature structures are unified into this type stem-or-lex-sign := stem-or-sign & [synsem [lper -, rper -, phrase -]]. stem-or-stempunct := stem-or-sign. stempunct := stem-or-stempunct. word-or-stem := sign. ;; stems are mapped to stems or words by lexical rules stem := word-or-stem & stem-or-lex-sign & stem-or-stempunct & [ LR lr-lexicon_min ]. ;; roots are mapped to stems or words by lexical rules root := stem & [ LR.basic 'yes ]. phrasal-sign := sign & args-type. lexkeys_min :< *avm*. lexkeys := lexkeys_min & mclass-type & [ KEYREL *top*, KEYAGR c-n-g, KEYFORM *top*, KEYSORT ontology, KEYTAG *top*, KEYAGR2 p-n-g]. lexkeys_altkey := lexkeys & [ ALTKEYREL *top* ]. lexkeys_alt2key := lexkeys_altkey & [ ALT2KEYREL *top* ]. lexkeys_comp := lexkeys & [--COMPKEY *top*, --COMPOPT bool, --COMPSORT ontology, --COMPAGR c-n-g, --COMPFORM *top* ]. lexkeys_ocomp := lexkeys_comp & [--OCOMPKEY predsort, --OCOMPOPT bool, --OCOMPSORT anything, --OCOMPAGR c-n-g, --OCOMPFORM *top* ]. lexkeys_vcomp := lexkeys_comp & [--VCOMPKEY predsort, --VCOMPSORT anything, --VCOMPFORM *top* ]. lexkeys_subj := lexkeys_comp & [--SUBJKEY predsort, --SUBJOPT bool, --SUBJSORT anything, --SUBJAGR p-n-g, --SUBJFORM *top* ]. lexkeys_full := lexkeys_vcomp & lexkeys_subj & lexkeys_ocomp & lexkeys_alt2key. ; Punctuation marks punctuation_min := *avm*. punctuation_min1 := punctuation_min & [ --INF_PPAIR basic_punctpair_min ]. punctuation_min2 := punctuation_min1 & [ --LEFT_SISTER_RPUNCT basic_punct_mark_min ]. signpunct_min := *avm*. signpunct_min1 := signpunct_min & [ LPUNCT basic_punct_mark_min, RPUNCT basic_punct_mark_min, --LEFT_SISTER_PAIRED *list*, INFPUNCT infpunct_min, PAREN basic_punct_mark_min ]. signpunct := signpunct_min1 & [ PAIRED basic_punctpair_min, --COORDPAIRED basic_punctpair_min, PUNCTPAIR basic_punctpair_min ]. infpunct_min := *avm*. infpunct_min1 := infpunct_min & [ --TRANS_INFCOMMA *list*, --RIGHT_INFCOMMA basic_punct_mark_min ]. infpunct := infpunct_min1 & [ --LEFT_INFCOMMA basic_punct_mark_min ]. basic_no_sign_punct := signpunct & [ LPUNCT advers_comma_punct_min, RPUNCT no_punct_min, PAIRED ppair_min, PUNCTPAIR no_ppair_min, PAREN advers_comma_punct_min, INFPUNCT [ --LEFT_INFCOMMA left_inf_no_punct, --RIGHT_INFCOMMA right_inf_no_punct_min ] ]. no_sign_punct := basic_no_sign_punct & punctswitch. basic_punct_mark_min := *avm*. basic_punct_mark_min1 := basic_punct_mark_min & [ PUNCTACCURACY punctaccuracy ]. basic_punct_mark := basic_punct_mark_min1 & [ MSGPRED predsort, --PAIRED basic_punctpair_min ]. punctaccuracy :< *sort*. ignorepunct := punctaccuracy. wrongpunct := ignorepunct. considerpunct := punctaccuracy. strictpunct := considerpunct. partialpunct := considerpunct. comma_or_semicol_or_paren_or_dash_or_no_punct_min := basic_punct_mark_min. comma_or_semicol_or_paren_or_dash_or_no_punct_min1 := comma_or_semicol_or_paren_or_dash_or_no_punct_min & basic_punct_mark_min1. comma_or_semicol_or_paren_or_dash_or_no_punct := comma_or_semicol_or_paren_or_dash_or_no_punct_min1 & basic_punct_mark. comma_or_paren_or_dash_or_no_punct_min := comma_or_semicol_or_paren_or_dash_or_no_punct_min. comma_or_paren_or_dash_or_no_punct_min1 := comma_or_paren_or_dash_or_no_punct_min & basic_punct_mark_min1. comma_or_paren_or_dash_or_no_punct := comma_or_paren_or_dash_or_no_punct_min1 & basic_punct_mark. comma_or_paren_or_no_punct_min := comma_or_paren_or_dash_or_no_punct_min. comma_or_paren_or_no_punct_min1 := comma_or_paren_or_no_punct_min & basic_punct_mark_min1. comma_or_paren_or_no_punct := comma_or_paren_or_no_punct_min1 & basic_punct_mark. paren_punct_min := comma_or_paren_or_no_punct_min. paren_punct_min1 := paren_punct_min & basic_punct_mark_min1. paren_punct := paren_punct_min1 & basic_punct_mark. dash_punct_min := comma_or_paren_or_dash_or_no_punct_min. dash_punct_min1 := dash_punct_min & basic_punct_mark_min1. dash_punct := dash_punct_min1 & basic_punct_mark. paren+no_punct_min := paren_punct_min & no_punct_min. paren+no_punct_min1 := paren+no_punct_min & basic_punct_mark_min1. paren+no_punct := paren+no_punct_min1 & basic_punct_mark. paren+comma_punct_min := paren_punct_min & comma_punct_min. paren+comma_punct := paren+comma_punct_min & basic_punct_mark & [ --PAIRED ppair_min ]. qmark_or_excl_mark_or_no_punct_min := basic_punct_mark_min. qmark_or_excl_mark_or_no_punct_min1 := qmark_or_excl_mark_or_no_punct_min & basic_punct_mark_min1. qmark_or_excl_mark_or_no_punct := qmark_or_excl_mark_or_no_punct_min1 & basic_punct_mark. comma_or_semicol_or_no_punct_min := comma_or_semicol_or_paren_or_dash_or_no_punct_min. comma_or_semicol_or_no_punct_min1 := comma_or_semicol_or_no_punct_min & basic_punct_mark_min1. comma_or_semicol_or_no_punct := comma_or_semicol_or_no_punct_min1 & basic_punct_mark. clause_or_semicol_or_no_punct_min := basic_punct_mark_min. clause_or_semicol_or_no_punct_min1 := clause_or_semicol_or_no_punct_min & basic_punct_mark_min1. clause_or_semicol_or_no_punct := clause_or_semicol_or_no_punct_min1 & basic_punct_mark. comma_or_clause_or_no_punct_min := basic_punct_mark_min. comma_or_clause_or_no_punct_min1 := basic_punct_mark_min1. comma_or_clause_or_no_punct := comma_or_clause_or_no_punct_min1 & basic_punct_mark. comma_or_clause_or_semicol_min := basic_punct_mark_min. comma_or_clause_or_semicol_min1 := comma_or_clause_or_semicol_min & basic_punct_mark_min1. comma_or_clause_or_semicol := comma_or_clause_or_semicol_min1 & basic_punct_mark. comma_or_semicol_min := comma_or_semicol_or_no_punct_min & comma_or_clause_or_semicol_min. comma_or_semicol_min1 := comma_or_semicol_min & basic_punct_mark_min1. comma_or_semicol := comma_or_semicol_min1 & basic_punct_mark. comma_or_no_punct_min := comma_or_clause_or_no_punct_min & comma_or_semicol_or_no_punct_min & comma_or_paren_or_no_punct_min. comma_or_no_punct_min1 := comma_or_no_punct_min & basic_punct_mark_min1. comma_or_no_punct := comma_or_no_punct_min1 & basic_punct_mark. clause_or_semicol_min := clause_or_semicol_or_no_punct_min & comma_or_clause_or_semicol_min. clause_or_semicol_min1 := clause_or_semicol_min & basic_punct_mark_min1. clause_or_semicol := clause_or_semicol_min1 & basic_punct_mark. clause_or_no_punct_min := clause_or_semicol_or_no_punct_min. clause_or_no_punct_min1 := clause_or_no_punct_min & basic_punct_mark_min1. clause_or_no_punct := clause_or_no_punct_min1 & basic_punct_mark. no_punct_min := clause_or_no_punct_min & comma_or_no_punct_min & qmark_or_excl_mark_or_no_punct_min. no_punct_min1 := no_punct_min & basic_punct_mark_min1. no_punct := no_punct_min1 & basic_punct_mark. comma_or_clause_min := comma_or_clause_or_no_punct_min & comma_or_clause_or_semicol_min. comma_or_clause_min1 := comma_or_clause_min & basic_punct_mark_min1. comma_or_clause := comma_or_clause_min1 & basic_punct_mark. comma_punct_min := comma_or_clause_min & comma_or_no_punct_min & comma_or_semicol_min. comma_punct_min1 := comma_punct_min & basic_punct_mark_min1. comma_punct := comma_punct_min1 & basic_punct_mark. semicol_punct_min := comma_or_semicol_min & clause_or_semicol_min. semicol_punct_min1 := semicol_punct_min & basic_punct_mark_min1. semicol_punct := semicol_punct_min1 & basic_punct_mark. clause_punct_min := comma_or_clause_min & clause_or_no_punct_min & clause_or_semicol_min. clause_punct_min1 := clause_punct_min & clause_or_no_punct_min1 & clause_or_semicol_min1. clause_punct := clause_punct_min1 & clause_or_no_punct & clause_or_semicol. qmark_or_excl_mark_min := clause_punct_min & qmark_or_excl_mark_or_no_punct_min. qmark_or_excl_mark_min1 := qmark_or_excl_mark_min & clause_punct_min1. qmark_or_excl_mark := qmark_or_excl_mark_min1 & clause_punct. period_punct_min := clause_punct_min. period_punct_min1 := period_punct_min & basic_punct_mark_min1. period_punct := period_punct_min1 & basic_punct_mark. v2_or_non_v2 := basic_punct_mark_min. v2 := v2_or_non_v2. non_v2 := v2_or_non_v2. non_advers-punct := basic_punct_mark_min. non_advers_non_v2_punct_min := non_advers-punct & non_v2. non_advers_non_v2_punct := non_advers_non_v2_punct_min & basic_punct_mark & [ --PAIRED ppair_min ]. non_advers_non_v2_comma_min := non_advers_non_v2_punct_min & comma_punct_min. non_advers_non_v2_comma := non_advers_non_v2_comma_min & non_advers_non_v2_punct. non_advers_v2_punct := non_advers-punct & v2. advers_or_non_advers_v2_comma_punct_min := non_advers_v2_punct & comma_punct_min. advers_or_non_advers_v2_comma_punct_min1 := advers_or_non_advers_v2_comma_punct_min & basic_punct_mark_min1. advers_or_non_advers_v2_comma_punct := advers_or_non_advers_v2_comma_punct_min1 & basic_punct_mark. advers_or_non_advers_v2_semicol_punct_min := non_advers_v2_punct & semicol_punct_min. advers_or_non_advers_v2_semicol_punct_min1 := advers_or_non_advers_v2_semicol_punct_min & basic_punct_mark_min1. advers_or_non_advers_v2_semicol_punct := advers_or_non_advers_v2_semicol_punct_min1 & basic_punct_mark. non_advers_v2_no_punct_min := non_advers_v2_punct & no_punct_min. non_advers_v2_no_punct_min1 := non_advers_v2_no_punct_min & basic_punct_mark_min1. non_advers_v2_no_punct := non_advers_v2_no_punct_min1 & basic_punct_mark & [ --PAIRED ppair_min ]. comma+no_punct_min1 := advers_or_non_advers_v2_comma_punct_min1 & non_advers_v2_no_punct_min1 & [ PUNCTACCURACY wrongpunct ]. comma+no_punct := comma+no_punct_min1 & non_advers_v2_no_punct. advers_comma_punct_min := non_v2 & comma_punct_min. advers_comma_punct_min1 := advers_comma_punct_min & basic_punct_mark_min1. advers_comma_punct := advers_comma_punct_min1 & basic_punct_mark. advers_semicol_punct_min := non_v2 & semicol_punct_min. advers_semicol_punct_min1 := advers_semicol_punct_min & basic_punct_mark_min1. advers_semicol_punct := advers_semicol_punct_min1 & basic_punct_mark. advers_comma+no_punct_min1 := advers_comma_punct_min1 & no_punct_min1 & [ PUNCTACCURACY wrongpunct ]. advers_comma+no_punct := advers_comma+no_punct_min1 & basic_punct_mark. ; advers_semicol_punct := non_v2 & semicol_punct. no_punct+clause_punct_min1 := no_punct_min1 & clause_punct_min1 & [ PUNCTACCURACY wrongpunct ]. no_punct+clause_punct := no_punct+clause_punct_min1 & basic_punct_mark. no_punct+period_punct_min1 := no_punct+clause_punct_min1 & period_punct_min. no_punct+period_punct := no_punct+period_punct_min1 & basic_punct_mark. no_punct+qmark_or_excl_mark_min1 := no_punct+clause_punct_min1 & qmark_or_excl_mark_min. no_punct+qmark_or_excl_mark := no_punct+qmark_or_excl_mark_min1 & basic_punct_mark. ;Er schlief und >--< entweder er schlief oder er schlief. v2-no_punct_min := v2 & no_punct_min. v2-no_punct_min1 := v2-no_punct_min & basic_punct_mark_min1. v2-no_punct := v2-no_punct_min1 & basic_punct_mark. non_v2-no_punct_min := non_v2 & no_punct_min. non_v2-no_punct_min1 := non_v2-no_punct_min & basic_punct_mark_min1. non_v2-no_punct := non_v2-no_punct_min1 & basic_punct_mark. inf_comma_or_no_punct := basic_punct_mark_min. left_inf_comma := inf_comma_or_no_punct. right_inf_comma := inf_comma_or_no_punct. left_inf_no_punct := inf_comma_or_no_punct. inf_no_punct_pair := left_inf_no_punct & right_inf_no_punct. inf_commapair := left_inf_comma & right_inf_comma. restr_inf_no_punct_pair := lex-ppair & inf_no_punct_pair. restr_inf_commapair := lex-ppair & inf_commapair. right_inf_comma+left_inf_no_punct := right_inf_comma & left_inf_no_punct. right_inf_no_punct_min := inf_comma_or_no_punct & no_punct_min. right_inf_no_punct_min1 := right_inf_no_punct_min & basic_punct_mark_min1. right_inf_no_punct := right_inf_no_punct_min1 & basic_punct_mark. non_advers_non_v2_right_inf_no_punct_min := non_advers_non_v2_punct_min & right_inf_no_punct_min & paren_punct_min. non_advers_non_v2_right_inf_no_punct_min1 := non_advers_non_v2_right_inf_no_punct_min & basic_punct_mark_min1. non_advers_non_v2_right_inf_no_punct := non_advers_non_v2_right_inf_no_punct_min1 & non_advers_non_v2_punct. advers_right_inf_comma_min := advers_comma_punct_min & right_inf_comma. advers_right_inf_comma_min1 := advers_right_inf_comma_min & basic_punct_mark_min1. advers_right_inf_comma := advers_right_inf_comma_min1 & basic_punct_mark. basic_punctpair_min := *sort*. basic_punctpair := basic_punctpair_min & [ PPAIRACCURACY punctaccuracy]. ppair_or_no_ppair_min := basic_punctpair_min. ppair_or_no_ppair := ppair_or_no_ppair_min & basic_punctpair. no_ppair_min := ppair_or_no_ppair_min. no_ppair := no_ppair_min & basic_punctpair. ppair_min := ppair_or_no_ppair_min. ppair := ppair_min & basic_punctpair. ppair+no_ppair := ppair_min & no_ppair_min & basic_punctpair & [ PPAIRACCURACY wrongpunct]. ;& [ PPAIRACCURACY wrongpunct ]. non_inf-ppair := basic_punctpair_min. lex-ppair := basic_punctpair_min. lex-comma-paired_min := lex-ppair & no_ppair_min. lex-comma-paired := lex-comma-paired_min & basic_punctpair. lex-non_inf-ppair := lex-ppair & non_inf-ppair. lex-non_inf-paired_min := lex-non_inf-ppair & ppair_min. lex-non_inf-paired := lex-non_inf-paired_min & basic_punctpair. lex-non_inf-ppair+no_ppair := lex-non_inf-ppair & ppair+no_ppair. ;& [ PPAIRACCURACY wrongpunct ] non_inf-comma-ppair_min := non_inf-ppair & no_ppair_min. non_inf-comma-ppair := non_inf-comma-ppair_min & basic_punctpair. ; Punctuation Synsem lex_punct_synsem := synsem_min1. #| clause_or_semicol_or_no_punct := basic_punct_mark. clause_or_semicol := clause_or_semicol_or_no_punct. comma_or_clause_or_pair_or_no_punct := basic_punct_mark. comma_or_rbc_or_clause_or_no_punct := basic_punct_mark. clause_or_pair_or_no_punct :< comma_or_clause_or_pair_or_no_punct. clause_or_no_punct := clause_or_semicol_or_no_punct & clause_or_pair_or_no_punct. comma_or_clause_or_no_punct := comma_or_clause_or_pair_or_no_punct & comma_or_rbc_or_clause_or_no_punct. comma_or_rbc_or_hyphen_or_pair_or_no_punct := basic_punct_mark. comma_or_rbc_or_colon_or_pair_or_no_punct := basic_punct_mark. comma_or_hyphen_or_pair_or_no_punct := comma_or_rbc_or_hyphen_or_pair_or_no_punct. rbc_or_hyphen_or_pair_or_no_punct := comma_or_rbc_or_hyphen_or_pair_or_no_punct. hyphen_or_pair_or_no_punct := comma_or_hyphen_or_pair_or_no_punct & rbc_or_hyphen_or_pair_or_no_punct. comma_or_rbc_or_pair_or_no_punct := comma_or_rbc_or_hyphen_or_pair_or_no_punct & comma_or_rbc_or_colon_or_pair_or_no_punct. comma_or_rbc_or_no_punct := comma_or_rbc_or_pair_or_no_punct & comma_or_rbc_or_clause_or_no_punct. comma_or_pair_or_no_punct := comma_or_hyphen_or_pair_or_no_punct & comma_or_rbc_or_pair_or_no_punct & comma_or_clause_or_pair_or_no_punct. rbc_or_pair_or_no_punct := comma_or_rbc_or_pair_or_no_punct & comma_or_hyphen_or_pair_or_no_punct & rbc_or_hyphen_or_pair_or_no_punct. rbc_or_no_punct := rbc_or_pair_or_no_punct & hyphen_sgl_or_rbc_or_no_punct. hyphen_sgl_or_clause_or_no_punct := basic_punct_mark. hyphen_dbl_or_clause_or_no_punct := basic_punct_mark. hyphen_sgl_or_rbc_or_no_punct := basic_punct_mark. 3dots_or_clause_or_no_punct := basic_punct_mark. comma_or_no_punct := comma_or_clause_or_no_punct & comma_or_pair_or_no_punct & comma_or_rbc_or_no_punct & comma_or_semicol_or_no_punct. hyphen_sgl_or_no_punct := hyphen_sgl_or_clause_or_no_punct & hyphen_sgl_or_rbc_or_no_punct & hyphen_or_pair_or_no_punct. hyphen_dbl_or_no_punct := hyphen_dbl_or_clause_or_no_punct & hyphen_or_pair_or_no_punct. 3dots_or_no_punct := 3dots_or_clause_or_no_punct. pair_or_no_punct := comma_or_pair_or_no_punct & hyphen_or_pair_or_no_punct & clause_or_pair_or_no_punct & rbc_or_pair_or_no_punct. no_punct := clause_or_no_punct & comma_or_no_punct & hyphen_sgl_or_no_punct & hyphen_dbl_or_no_punct & 3dots_or_no_punct & pair_or_no_punct & lparen_or_no_punct & rbc_or_no_punct. hyphen_or_comma_or_clause :< punct_mark. hyphen_sgl_or_clause :< punct_mark. hyphen_sgl := hyphen_sgl_or_clause & hyphen_sgl_or_no_punct & hyphen_or_comma_or_clause & pair_or_no_punct. hyphen_dbl_or_clause :< punct_mark. comma_or_clause := comma_or_clause_or_no_punct & hyphen_or_comma_or_clause. comma_or_pair_punct := comma_or_pair_or_no_punct. comma_punct := comma_or_clause & comma_or_no_punct & comma_or_pair_punct. 3dots_or_clause :< basic_punct_mark. 3dots_punct := 3dots_or_clause & 3dots_or_no_punct & basic_clause_punct. basic_semicol_punct := clause_or_semicol & punct_mark. basic_clause_punct := clause_or_no_punct & clause_or_semicol & punct_mark. clause_punct := comma_or_clause & 3dots_or_clause & basic_clause_punct. semicol_punct := clause_punct & basic_semicol_punct & comma_or_semicol_or_no_punct. clause_sh_punct := hyphen_sgl_or_clause & basic_clause_punct. clause_dh_punct := hyphen_dbl_or_clause & basic_clause_punct. s_dash_punct := basic_clause_punct. colon_punct := comma_or_rbc_or_colon_or_pair_or_no_punct & basic_clause_punct & comma_or_clause_or_no_punct. pair_punct := punct_mark & pair_or_no_punct & comma_or_pair_punct. lparen_or_no_punct := basic_punct_mark. lparen_punct := pair_punct & lparen_or_no_punct. rparen_punct := basic_clause_punct & pair_punct. dq_punct := basic_clause_punct & pair_punct. sq_punct := basic_clause_punct & pair_punct. hyphen_dbl := hyphen_dbl_or_clause & hyphen_dbl_or_no_punct & hyphen_or_comma_or_clause & pair_or_no_punct. |#