# dependency rules

# groups of heads are ordered: if a head found, the others aren't tried?
# clause functions have to have extra @, e.g. @ICL-@AUX<
# alternatives in conditions are comma separated, use | only in targets (they otherwise don't have parentheses)
# no spaces! ... use .* between one-line tags
# (F) =force (dep is fixed)
# (D) =inverse dependency (head looking for dependent, e.g. subject)
# TRANS:(...) this has to be matched on the way, before the head
# BARRIER:(...) this stops the search for a head in that direction
# HEADCHILD=(...) a condition on head candidates to have this (other) dependent
# NOTHEAD=(...) what a head mustn't be
# NOTTARGET=(...) what a target mustn't be
# (ADD:<cjt>) add a tag to target, if head is matched
# PRP.*@(ADVL|PIV|SC|OC|SA|OA)> -> ... (...|...) is possible in targets, but cg2dep has to know that in $target =~ ... -matches, cave fx right coordination --> the construction has been replaced with -> PR|IMPF in individual rules (to be raised to <mv> in print section)
# conditions and targets should not rely on space being rewritten as ' .* ', safest to do explicit reg. expressions: NOTHEAD=(PROP .*@>N)

### linguistic decisions:

# VOK is attached to IMP (as "subject"), but otherwise left unattached
# punctuation is left unattached

DEFINITIONS

¤CLAUSE = @SUBJ>,@<SUBJ,@R-<SUBJ,@ACC>,@<ACC,@DAT>,@<DAT,@SC>,@<SC,@OC>,@<OC,@SA>,@<SA,@OA>,@<OA,@<ADVL,@ADVL>,@PRED>,@<PRED,@>>P,@NPHR,@ADVL
¤NPHEAD = @P<,@>>P,@SUBJ>,@<SUBJ,@R-<SUBJ,@ACC>,@<ACC,@DAT>,@<DAT,@SC>,@<SC,@OC>,@<OC,@APP,@N<PRED,N .*@ADVL>,N .*@<ADVL,N .*@S<,INDP.*S<,DET .*@S<,@NPHR,N .*@ADVL,@AS<
¤NPCLAUSE = @SUBJ>,@<SUBJ,@R-<SUBJ,@ACC>,@<ACC,@DAT>,@<DAT,@SC>,@<SC,@OC>,@<OC,@APP,@N<PRED,N.*NOM.*@ADVL>,N.*NOM.*@<ADVL,@>>P,@NPHR,N.*NOM.*@ADVL
¤LEFT-NPHEAD = @P<,@<SUBJ,@R-<SUBJ,@<ACC,@<DAT,@<SC,@<OC,@APP,@N<PRED
¤UTT = @FS-@UTT,@FS-@STA,@FS-@QUE,@FS-@COM,@FS-@EXC,@FAUX @FMV
¤AS = @AS-@<ADVL,@AS-@ADVL>,@AS-@N<PRED,@AS-@<SC,@AS-@>N,@AS-@N<
¤DELIMITER = \$\.,\$\!,\$\?,\$:,\$SEMICOLON # semicolon is a protected character
#¤DELIMITER = \$\.,\$¤?\!,\$¤?\?,\$¤?:,\$SEMICOLON # semicolon is a protected character


RULES

### words

#"hverken" ADV -> ("eller") IF (R)
(N|PROP|PERS).*@>A -> ("(jævnbyrdig|overlegen)") IF (R) BARRIER:(¤NPHEAD) # ... de er deres fjender teknologisk overlegne

<art-long> -> (N) IF R TRANS (@P<) # de af Carlsbergfondet støttede projekter

"både" -> ("og") IF (R)
"dels" -> ("dels") IF (R)
"på=den=ene=side" -> ("på=den=anden=side") IF (R)
"fra".*@A< -> (ADJ,ADV,DET,NUM,PCP1) IF (L) NOTHEAD=(@>P)
ADV.*GEN.*@A< -> (DET) IF (L) # alle herindes fulde medfølelse
"til".*@A< -> ("fra".*@A<) IF (L) BARRIER:(PRP,PR,IMPF)
#"fra".*@N< -> (N,PROP,PERS,INDP,¤NPHEAD) IF (L)  # messes up <np-long> looking for <np-close> sister
"til".*@N< -> ("fra".*@N<) IF (L) BARRIER:(PRP,PR,IMPF) # virker formodentlig også med <close> & <long>
"muligt?".*@A< -> (ADJ,ADV,DET) IF (L)
<mv> -> (<postcond>) IF (L) (D)
<np-disc> -> (<np-long>,<post-both>) IF (R) (D) (F)
<np-long2> -> (<np-disc>) IF (L)
<aci-subj> -> (INF) IF (R) NOTTARGET=(@<ACC,@ACC>) # only if syn.cg calls the aci-subj a @SUBJ ... but this prevents dep2tree from creating an ACC small clause

### special prepared attachments from dancg.attach

<attachto-app> -> (@APP) IF (L)

### quotes

@FS-@ACC> -> (@FS-@ACC>) IF (L)

<quote> -> (@FS-@STA,<v-quote>) IF (R) (F)
@FS-@STA -> (<v-quote>.*@FS-@STA) IF (R) (F) # cave <v-quote> alene ... det kan "stjæle" attachment fra en <quote> t.h. for <v-quote>
<quote> -> (<v-quote>) IF (L) (F) TRANS:(\$:, \$") # quote after colon: Han siger: "..."
@FS-@QUE -> (<v-quote>.*@FS-@STA) IF (R) (F)
@FS-@COM -> (<v-quote>.*@FS-@STA) IF (R) (F)
@FS-@EXC -> (<v-quote>.*@FS-@STA) IF (R) (F)
@FS-@ACC> -> (@FS-@STA,<v-quote>) IF (R) (F)

### / slashes

N -> (N) IF (L) TRANS:("\/") BARRIER:(¤NPCLAUSE|V|PRP|ADJ|ADV)

### back subject

@<SUBJ -> (PR,IMPF,PAS.*@ICL-@N<PRED) IF (L)
@R-<SUBJ -> (PR,IMPF) IF (L) # introduced only by dancg.eng
@S-<SUBJ -> (PR,IMPF) IF (L)

### inverse dependency: VFIN searching its subject,  # @F-SUBJ> removed from SUBJ blocks, has its own, later rules and doesn't obey uniqueness principle

(PR|IMPF) -> (@SUBJ>,@S-SUBJ>,@F-SUBJ>) IF (L) (D) BARRIER:(<clb>,<rel>,<interr>,PR,IMPF,<co-fin>,<postcond>,"så".*KC) NOTTARGET=(<v-quote>) NOTHEAD=(<subj-icl>,<firstcjtsubj>)

#(PR|IMPF) -> (@SUBJ>,@S-SUBJ>,@F-SUBJ>) IF (L) (D) TRANS:(<clb>) TARGET=(@FS-@P<)



(N|PROP|PERS|DET).*@SUBJ> -> @SUBJ> IF (R) (D) TRANS:(<co-subj>) BARRIER:(<clb>,<rel>,<interr>,PR,IMPF,<co-fin>,<postcond>) # Måsar och andra fåglar attackerade (overrides the rule V->SUBJ rule 2 lines above, but if this rule came first, all the other @SUBJ> rules would also come first .... therefore (N|PROP...) added to target

#@FS-@N< -> (@FS-@N<) IF (L)
(PR|IMPF).*@FS-@N< -> (@SUBJ>,@S-SUBJ>,@F-SUBJ>) IF (L) (D) TRANS:(<co-subj>) BARRIER:(PR,IMPF,<co-fin>)
#(PR|IMPF).*@FS-@N< -> (@SUBJ>,@S-SUBJ>,@F-SUBJ>) IF (L) (D) BARRIER:(@>>P,PR,IMPF,<co-fin>) # (PR|IMP) er essentiel, fordi reglen ellers køres i samme batch med de andre FS-N< regler (som det er for tidligt til, siden de behøver bl.a. <co- reglerne først) ... (@>>P) som cave for: 'et råstof, der skal kæles for' (no subject!!) ... laver problemer med: den første mand kvinden hilste på var ung

@FS-@>N -> (N) IF (R) TRANS:(@PAR-R,\$")

### the following rules do early complementizer attachment in order to help subclause jumping in later rules

<clb>.*@>N -> (N,PROP,PERS,INDP,¤NPHEAD) IF (R)
<clb>.*@>A -> (ADJ,ADV,DET,NUM,PCP1,STA,<quant>) IF (R)
<clb>.*PRP -> (@P<,@FS-@P<,@ICL-@P<) IF (R) (D)

@FS-@[^ \n]* -> (@SUB,KS,<rel>,<interr>) IF (L) (D) BARRIER:(<clb>,PR,IMPF,<co-fin>,<quote>) NOTHEAD=(@>N,@>A,@>>P,@ACC>>,@SC>>,@SUBJ>>,@P<,@>>A,@>S) NOTTARGET=(<clb>,<v-quote>) # early close @SUB attachment, so later, hierarchical SUB's can jump embedded subclauses, because the internal SUB already knows where it attaches ... @FS-@[^N].* cave: don't use this rule for @FS-N<, since they don't always have a complementizer --> ok, though, with BARRIER

@FS-@[^NC].* -> (@SUBJ>,@S-SUBJ>) IF (L) (D) BARRIER:(<clb>,<rel>.*@>>P,<co-subj>,<co-fin>) NOTHEAD=(<subj-icl>) # PR,IMPF tilføjet pga.jump anyway (but not for (D)?!) -> fjernet igen, men højere op indføjet som (PR|IMPF) regel ... <clb> added to BARRIER ... cave: IMP @FS-COM

@>>P -> (@>>P) IF (L) TRANS:(<co-prparg>) BARRIER:(<clb>,PR,IMPF,¤NPHEAD,¤CLAUSE)
@>>P -> (<prp-strand>) IF (R) # also early, since @>>P may be a <clb> attacher
@>>P -> (PRP) IF (R) 
<prparg-long> -> (PRP,<prparg-long>) IF (L) TRANS:(PRP) # <prparg-long> in the head prevents crossings (ccfvthqi)

#<v-quote> -> (@FS-@ACC>,@FS-@ACC>>,<quote>) IF (L) (D)


### co-ordination
## better right-attach, there could be embedded material to the left, can be raised to mother of mother by the visl2dep

@FS-@ADVL> -> (@FS-@ADVL>) IF (L) BARRIER:(PR,IMPF) (ADD:<cjt>) # hvis han vinder og hvis hun vinder, .. prepares <co-fin> attachment in the next rule - the only combination that can't be handled by the ordinary <co-fin> block below

<co-fin[^ ]+ -> (<cjt>.*@FS-@ADVL>) IF (R) BARRIER:(PR,IMPF,IMP)

<co-fin-long> -> (PR,IMPF) IF (R) TRANS:(PR,IMPF) NOTHEAD=(@FS-@N<)

<co-fin> -> (PR,IMPF,IMP) IF (R) BARRIER:(<clb>,@SUB,<interr>,<rel>)
<co-fin> -> (PR,IMPF,IMP) IF (R) TRANS:(@SUB) BARRIER:(<interr>,<rel>) NOTHEAD=(@FS-@ADVL>)
<co-fin> -> (PR,IMPF) IF (R) TRANS:(<interr>,<rel>) BARRIER:(@SUB) NOTHEAD=(@FS-@ADVL>)
<co-fin> -> (PR,IMPF) IF (R) NOTHEAD=(@FS-@ADVL>,@FS-@N<) # the first 3 rules of the <co-fin> block allow coordination of FS-N<, but not FS-ADVL> (which has its own rules higher up IF another FS-ADVL> precedes); the fourth rule, this one, jumps a coordination-embedded FS-ADVL>, even with another embedded FS-N< after it: cavxitjv - .. og da begge koncerne anså de stordriftsfordele, som en sammenlægning ville give, som afgørende, endte det i et fælles ejerskab af et nyt selskab
<co-fin> -> (PR,IMPF) IF (R) TRANS:(@FS.*)

<co-finacc> -> (@FS-@ACC>,@FS-@<ACC) IF (R)
<co-inf> -> (INF) IF (R)
<co-pcp2> -> (PCP2) IF (R)
<co-subj> -> (@SUBJ>,@<SUBJ,@R-<SUBJ) IF (R)
<co-acc> -> (@ACC>,@<ACC) IF (R)
<co-dat> -> (@DAT>,@<DAT) IF (R)
<co-piv> -> (@PIV>,@<PIV) IF (R)
<co-sc> -> (@SC>,@<SC,@ICL-@<SC) IF (R)
<co-oc> -> (@OC>,@<OC) IF (R)
<co-sa> -> (@SA>,@<SA) IF (R)
<co-oa> -> (@OA>,@<OA) IF (R)
<co-advl> -> (@ADVL>,@<ADVL,@ADVL) IF (R)
<co-advl> -> (@FS-@<ADVL) IF (R) # om ikke for andet, så fordi de lever
<co-pred> -> (@PRED>,@<PRED) IF (R)
<co-prenom> -> (@>N) IF (R)
<co-postnom> -> (@N<,@N<PRED) IF (R)
<co-app> -> (@APP) IF (R)
<co-pread> -> (@>A) IF (R)
<co-postad> -> (@A<) IF (R)
<co-prparg> -> (@P<,@>>P) IF (R)
<co-meduden> -> (PRP) IF (R)
<co-nphr> -> (@NPHR) IF (R)
<adv> -> (¤UTT,<mv>) IF (R) BARRIER:(¤DELIMITER) # Vi kommer senere, for <adv> KC @CO det regner ('for' part of second clause, not a true coordinator)

#<cjt>.*INF.*@ICL-@N< -> (N) IF (L) TRANS:(@ICL-@N<) # the following rules also had <cjt>.*, maybe should have it again instead of TARGET=(<cjt>) [because first CJT also has <cjt>]

#INF.*@ICL-@N< -> (INF.*@ICL-@N<) IF (L) TARGET=(<cjt>) TRANS:(<co-inf>) BARRIER:(INF.*@ICL-N<)
#INF.*@ICL-@N< -> (INF.*@ICL-@N<) IF (L) BARRIER:(PR|IMPF)

#INF.*@ICL-@A< -> (INF.*@ICL-@A<) IF (L) TARGET=(<cjt>) TRANS:(<co-inf>) BARRIER:(INF.*@ICL-A<)
#INF.*@ICL-@A< -> (INF.*@ICL-@A<) IF (L) BARRIER:(PR|IMPF)

#@FS-@ADVL> -> (@FS-@ADVL>) IF (L) TARGET=(<cjt>) TRANS:(<co-fin>) BARRIER:(@FS-@ADVL>)
#@FS-@<ADVL -> (@<ADVL,@FS-@<ADVL) IF (L) TRANS:("så" <co-advl>) BARRIER:(KC,@FS-@<ADVL) TARGET=(<cjt>) # om ikke for andet, så fordi de lever
#@FS-@<ADVL -> (@FS-@<ADVL) IF (L) TARGET=(<cjt>) TRANS:(<co-fin>) BARRIER:(@FS-@<ADVL) # bedre end <cjt> @FS-@<ADVL, fordi det så kommer i samme batch som andre @FS-@<ADVL, og ikke allerede er attached til <mv>, når reglen endelig kommer til

#@ICL-@<SC -> (@ICL-@<SC) IF (L) TARGET=(<cjt>) TRANS:(<co-sc>) BARRIER:(@FS-@<SC) #
#@ICL-@<SC -> (@<SC) IF (L) TARGET=(<cjt>) TRANS:(<co-sc>) BARRIER:(@<SC) # så isnende kold og gennemblødt
#@FS-@<ACC -> (@FS-@<ACC) IF (L) TARGET=(<cjt>) TRANS:(<co-fin>,<co-finacc>) BARRIER:(@FS-@<ACC)
#@FS-@ACC> -> (@FS-@ACC>) IF (L) TARGET=(<cjt>) TRANS:(<co-fin>,<co-finacc>) BARRIER:(@FS-@ACC>)

#@>N -> (@>N) IF (L) TARGET=(<cjt>) TRANS:(<co-prenom>) BARRIER:(@>N) # Fra Kinas og eksiltibetanernes kamp med ..

<cjt>.*INF.*@ICL-@N< -> (INF.*@ICL-@N<) IF (L)
INF.*@ICL-@N< -> (INF.*@ICL-@N<) IF (L) BARRIER:(PR|IMPF)

<cjt>.*INF.*@ICL-@A< -> (INF.*@ICL-@A<) IF (L)
INF.*@ICL-@A< -> (INF.*@ICL-@A<) IF (L) BARRIER:(PR|IMPF)

<cjt>.*@FS-@ADVL> -> (@FS-@ADVL>) IF (L)
@FS-@<ADVL -> (@<ADVL,@FS-@<ADVL) IF (L) TRANS:("så" <co-advl>) BARRIER:(KC,@FS-@<ADVL) TARGET=(<cjt>) # om ikke for andet, så fordi de lever
@FS-@<ADVL -> (@FS-@<ADVL) IF (L) TRANS:(<co-fin>) BARRIER:(@FS-@<ADVL,<cjt>) # bedre end <cjt> @FS-@<ADVL, fordi det så kommer i samme batch som andre @FS-@<ADVL, og ikke allerede er attached til <mv>, når reglen endelig kommer til

<cjt>.*@ICL-@<ACC -> (@ICL-@<ACC) IF (L)
<cjt>.*@ICL-@<SC -> (@ICL-@<SC) IF (L) # så isnende kold og gennemblødt
<cjt>.*@ICL-@<SC -> (@<SC) IF (L) # så isnende kold og gennemblødt
<cjt>.*@FS-@<ACC -> (@FS-@<ACC) IF (L)
<cjt>.*@FS-@ACC> -> (@FS-@ACC>) IF (L)

<cjt>.*@>N -> (@>N) IF (L) TRANS:(<co-prenom>) BARRIER:(@>N,<cjt>) # Fra Kinas og eksiltibetanernes kamp med ..

<cjt>.*@APP -> (@APP) IF (L)

<cjt>.*@N<PRED -> (@N<PRED) IF (L) TRANS:(<co-postnom>) NOTHEAD=(<np-list>) NOTTARGET=(\@FS-\@[^ ]+) TARGET=(ADJ,STA,N) # to bibler, en latinsk fra 1634 og en dansk fra 1649
<cjt>.*@N<PRED -> (@N<PRED) IF (L) TRANS:(<co-postnom>) BARRIER:(@N<) NOTHEAD=(<np-list>) NOTTARGET=(\@FS-\@[^ ]+)
<cjt>.*<np-prplong>.*PRP.*@N<(PRED)? -> (PRP.*@N<) IF (L) (F) TRANS:(@N<) NOTHEAD=(<np-list>) NOTTARGET=(\@FS-\@[^ ]+) # forældet syn på forholdet mellem mænd og kvinder eller på voldens karakter
<cjt>.*@N<(PRED)? -> (@N<) IF (L) TRANS:(<co-postnom>) NOTHEAD=(<np-list>) NOTTARGET=(\@FS-\@[^ ]+) # cave: targeting FS-N< and linking it across another FS-N< to a N<

<cjt>.*@FS-@N< -> (@FS-@N<) IF (L) # ... som arbejder på Hvidovre Hospital og ønsker at være anonym

\[om\].*<cjt>.*@<PIV -> (\[om\].*@<PIV) IF (L)
<cjt>.*@<PIV -> (@<PIV) IF (L)
<cjt>.*@ADVL> -> (@ADVL>) IF (L) # Mandag og tirsdag har X og Y møder

#<sub-long> -> (PR,IMPF) IF (R) TRANS:(PR,IMPF) # batyokmh: <sub-long> virker dårligere end lade almindelig <clb> jumpe sig frem til det rigtige verbum
@SUB -> (PR,IMPF) IF (R) NOTHEAD=(<clb>)
@SUB -> (PR,IMPF,IMP) IF (R) NOTHEAD=(<clb>) # also: ... at hvis ... så husk at ...!
@>S -> (@SUB,<rel>,<interr>) IF (R)
<(rel|interr)>.*@ACC> -> (<mv>) IF (R) BARRIER:(<clb>) # needed early to allow jumping of embedded clauses
<(rel|interr)>.*@ADVL> -> (<mv>) IF (R) BARRIER:(<clb>) # needed early to allow jumping of embedded clauses
<(rel|interr)>.*@SC> -> (<mv>) IF (R) BARRIER:(<clb>) # needed early to allow jumping of embedded clauses

### verb chain (early!! - to avoid circularities from @FS-ADVL> etc.)

<vpcjt>.*<aux> -> (<aux>) IF (L) (F)

PCP2.*PAS @ICL-@AUX< -> ("(være|blive)".*<aux>) IF (L)
PCP2.*AKT @ICL-@AUX< -> ("(have|få|være)".*<aux>) IF (L) BARRIER:(<aux>,@ICL-@AUX<)
PCP2.*AKT @ICL-@AUX< -> ("(have|få|være)".*<aux>) IF (L) TRANS:(<co-pcp2>) BARRIER:(<aux>,<cjt>.*PCP2 AKT)
PCP2.*AKT @ICL-@AUX< -> ("(have|få|være)".*<aux>) IF (L) TRANS:(<aux>.*@FS-@N<)
PCP2.*AKT @ICL-@AUX< -> ("(have|få)".*<aux>) IF (L)

@ICL-@AUX< -> (<aux>) IF (L) (F) BARRIER:(@ICL-@AUX<)
@ICL-@AUX< -> (<aux>) IF (L) TRANS:(<aux>.*@FS-@N<) BARRIER:(@ICL-@AUX<)

#<aux> -> (@ICL-@AUX<) IF (R) (D) BARRIER:(<aux>) # close vp
#<aux> -> (@ICL-@AUX<) IF (R) (D) TRANS:(<aux>.*@FS-@N<) # long vp
#@ICL-@AUX< -> (<aux>) IF (L) TRANS:(<aux>.*@FS-@N<) #  BARRIER:(<aux>)

@ICL-@AUX< -> (<aux>) IF (L)
INF.*@ICL-@AUX< -> ("(kunne|ville|skulle|måtte|burde)") IF (L)

### finite subclauses (has to come first, due to, for instance, relative clauses

#@FS-@N< -> (¤NPHEAD,N.*@N<) IF (L) TRANS:(@SUBJ>,@F-SUBJ>,@S-SUBJ>) BARRIER:(PR,IMPF) 

@FS-@A< -> (ADJ,ADV,STA,DET,NUM,PCP1) IF (L) TRANS:(<clb>) BARRIER:(PR,IMPF) 
@FS-@A< -> (ADJ,ADV,STA,DET,NUM,PCP1) IF (L) TRANS:(@SUBJ>,@[FS]-SUBJ>) BARRIER:(PR,IMPF,<co-fin>) NOTHEAD=(<clb>,<rel>,<interr>,@>N,@>A) #
@FS-@A< -> (@FS-@A<) IF (L) TRANS:(<co-fin>) # otherwise subject-less, coordinated FS-N< attaches to something within the first relative clause

@FS-@STA -> (@FS-@STA) IF (L) BARRIER:(¤DELIMITER) (ADD:<cjt>)
@FS-@COM -> (@FS-@COM,@FS-@STA) IF (L) BARRIER:(¤DELIMITER) (ADD:<cjt>)
@FS-@QUE -> (@FS-@QUE,@FS-@STA) IF (L) BARRIER:(¤DELIMITER) (ADD:<cjt>)
@FMV -> (@FMV) IF (L) BARRIER:(¤DELIMITER) (ADD:<cjt>)
@ICL-@UTT -> (@ICL-@UTT) IF (L) BARRIER:(¤DELIMITER) (ADD:<cjt>) # taken from Portuguese

#PRP.*@(ADVL|PIV|SC|OC|SA|OA)> -> (PR|IMPF) IF (R) # don't add TRANS:(@P<,@FS-@P<), since there is a subclause jumper in cg2dep already

<cond>.*@FS-@ADVL> -> (<mv>) IF (R) HEADCHILD=(<postcond>)

@FS-@ADVL> -> (PR|IMPF|@NPHR|@ADVL) IF (R) BARRIER:(<clb>,KS) NOTHEAD=(@FS-@ADVL>) # before ordinary @ADVL> -> <mv>, because FS-ADVL> can't attach to <mv> in ICL
#@FS-@ADVL> -> (PR,IMPF) IF (R) # højrevendte FS'er skal komme før de venstrevendte (der så kommer sammen med de normale @ARG'er længere nede), fordi de har en noget mindre chance at være long-distance
@FS-@ADVL> -> (@FS-@STA|@FS-@<ACC|@FS-@<ADVL|@FS-@N<|@FS-@<SUBJ) IF (R) # having this early prevents ordinary @ADVL> attaching it to the main verb of an @FS-N< without the usual cycle and jump checks cg2dep performs on FS-attaching ... but: why was the last rule (with just PR and IMPF) not good enough

### left-oriented ICL (early because they rarely have dependents to the left, avoids circularity from @FS-ADVL> etc.)

@ICL-@<SUBJ -> (<mv>) IF (L)
@ICL-@<OC -> (<mv>) IF (L)
@ICL-@<ADVL -> (<mv>) IF (L)

### subjects of left-pointing clauses

#@SUBJ> -> (@FS-@N<,@FS-@<SUBJ,@FS-@<ACC,@FS-@<ADV,@FS-@<SC) IF (R)

### clause level functions

@ICL-@SUBJ> -> (PR|IMPF) IF (R) TRANS:(@F-SUBJ>) NOTHEAD=(@<SUBJ,@R-<SUBJ,@ICL-@<SUBJ,@FS-<SUBJ) # at blabla, ..., det er ...

@SUBJ> -> (<mv>.*PCP2 PAS @ICL-@ADVL) IF (R) BARRIER:(V)
@SUBJ> -> (<mv>.*PCP2 PAS @ICL-@UTT) IF (R) BARRIER:(V)
@SUBJ> -> (<mv>.*PCP1) IF (R) TARGET=(<subj-icl>) BARRIER:(PR|IMPF) # med sorte og blå fletninger stikkende ud under en hvid hue
@SUBJ> -> (PR,IMPF) IF (R) BARRIER:(@FS-@STA,@FS-@QUE,@FS-@COM,@FS-@ACC>) NOTHEAD=(<vpcjt>)
@SUBJ>> -> (<mv>,PR,IMPF) IF (R) TRANS:(<mv>) # unlike @SUBJ>, @SUBJ>> can also be subject of an infinitive: Jeltsin ventes at komme under stærkt press

@SUBJ> -> (@ICL-@AUX<) IF (R) BARRIER:(PR,IMPF,<clb>) # "sagen er undersøgt til bunds og ansvaret placeret

# @SUBJ> -> (PR,IMPF) IF (L) (ADD:<cjt>) # also acl: ... og munden lidt for stor (the extra space prevents the SUBJ> being "raised" as cjt for the finite verb's other, real subject
@<<SUBJ -> (<mv>) IF (L) TRANS:(<mv>)

@S-SUBJ> -> (PR,IMPF) IF (R)
@S-SUBJ>> -> (<mv>,PR,IMPF) IF (R) TRANS:(<mv>)

@F-SUBJ> -> (PR,IMPF) IF (R) HEADCHILD=(@SUBJ>,@<SUBJ,@R-<SUBJ,@FS-@<SUBJ,@ICL-@<SUBJ)
@F-SUBJ>> -> (<mv>,PR,IMPF) IF (R) TRANS:(<mv>) HEADCHILD=(@SUBJ>,@<SUBJ,@R-<SUBJ,@FS-@<SUBJ,@ICL-@<SUBJ)
@F-<SUBJ -> (PR,IMPF) IF (L) HEADCHILD=(@SUBJ>,@<SUBJ,@R-<SUBJ,@FS-@<SUBJ,@ICL-@<SUBJ,@FS-@SUBJ>,@ICL-@SUBJ>) BARRIER:(PR,IMPF)
@F-<SUBJ -> (PR,IMPF) IF (L)

### embedded section, has to come after SUBJ-rules, so jump is possible

<transrel> -> (<mv>) IF (L) TRANS:(@FS-@N<)
<transadvl> -> (<mv>) IF (L) TRANS:(@FS-@<ADVL)

@ICL-@<SC -> (<mv>) IF (L)
@FS-@<SC -> (\[(blive|være)\].*<mv>) IF (L)
@FS-@<SC -> (<mv>) IF (L)
@<SC -> (<mv>|@SUBJ>) IF (L) NOTTARGET=(.*-\@[^ ]+) BARRIER:(<mv>) # skal komme efter FS/ICL-SC, eller bliver senere SC-regler kørt for tidligt (som batch) ... @SUBJ> added as target to cover cases of ellipsis: Forandringen var nænsomt udført og proportionerne $rimelige

@<ACC -> (<mv>) IF (L) NOTTARGET=(.*-\@[^ ]+) # nær ord-ACC attachment, så uniqueness-principle kan bruges når clause-ACC søger attachment
@F-<ACC -> (<mv>) IF (L)
@ICL-@<ACC -> (<mv>) IF (L)
@<ACC -> (<vr?q>.*<mv>) IF (L) TARGET=(PR|IMPF) NOTHEAD=(PAS) NOTTARGET=(@ICL-@<ACC) # long-distance matches of object clauses, even with interfering other clauses
#@<ACC -> (<vq>.*<mv>) IF (L) TARGET=(PR|IMPF) NOTHEAD=(PAS) NOTTARGET=(@ICL-@<ACC) # long-distance matches of object clauses, even with interfering other clauses
@FS-@<ACC -> (<mv>) IF (L) BARRIER:(PR,IMPF)

@FS-@<ADVL -> (<mv>) IF (L) TRANS:(@SUBJ>,@S-SUBJ>,@F-SUBJ>,<clb>,KS) BARRIER:(PR,IMPF)
@FS-@P< -> (PRP) IF (L) TRANS:(<clb>,<rel>,<interr>,KS) BARRIER:(PR,IMPF) NOTHEAD=(<clb>,<prp-strand>) # cave: ud=fra, i hvilken grad den studerende dels opfylder ..., dels ...
@FS-@P< -> (PRP) IF (L) TRANS:(<clb>,<rel>,<interr>,KS) NOTHEAD=(<clb>,<prp-strand>) # 

### the following moved from higher up, to be able to do jump ..

<np-long>.*@FS-@N< -> (¤NPHEAD,N .*@N<) IF (L) TRANS:(<np-close>) BARRIER:(PR,IMPF,<co-fin>) # HEADCHILD=(<np-close>) kan ikke endnu bruges, np-close bliver attached senere
#<np-long>.*@FS-@N< -> (<np-disc>) IF (L) BARRIER:(PR,IMPF,<co-fin>,<clb>)
<np-long>.*@FS-@N< -> (¤NPHEAD,N .*@N<) IF (L) TRANS:(@<ADVL,@<PIV,@<SA,@<OA) BARRIER:(PR,IMPF,<co-fin>) NOTHEAD=(<clb>,<rel>,<interr>,@>N,@>A)

@FS-@N< -> (¤NPHEAD,N .*@N<) IF (L) TRANS:(<rel>) BARRIER:(PR,IMPF,<co-fin>) NOTHEAD=(PRP,<rel>,<interr>,@>N,@>A,@APP,@N<PRED) # <clb> removed from NOTHEADpga. af initial quoted sentences, PRP added

@FS-@N< -> (¤NPHEAD,N .*@N<) IF (L) TRANS:(@SUBJ>,@[FS]-SUBJ>) BARRIER:(PR,IMPF,<co-fin>) NOTHEAD=(PRP,<rel>,<interr>,@>N,@>A,@APP,@N<PRED) # <co-fin> is necessary as a barrier, otherwise < FS-N< with an 'og som'-header may attach to within the first relative clause: '..., er ...., og som ...' TRANS @SUBJ not removed, since SUBJ is jumped, but $trans zeroed at the same time

@FS-@N< -> (@FS-@N<) IF (L) TRANS:(<co-fin>) # otherwise subject-less, coordinated FS-N< attaches to something within the first relative clause

### pp (before N< , so ICL-N< or FS-N< doesn't attach to the P< of an ADVL> to the left, ... also before @ADVL>, so PRP -> @P< is possible

@>P -> (PRP) IF (R)
#@FS-@P< -> (PRP) IF (L)
#@ICL-@P< -> (PRP) IF (L)

#PRP -> (@P<) IF (R) (D) TRANS:(PRP.*@>A) NOTHEAD=(<ap-internal>)
(<ap-internal>.*@P<) -> (PRP.*@>A) IF (L)
@ICL-@P< -> (PRP) IF (L) NOTHEAD=(@>A,<preinf>)
@P< -> (PRP) IF (L) NOTHEAD=(@>A,<prp-strand>)

###

@AUX< -> (<aux>) IF (L)
"at".*@X -> (KS,<clb>) IF (L)
X.*@X -> ([A-Z]+) IF (L)

###

#@PRED> -> (PR,IMPF) IF (R)
#@<PRED -> (PR,IMPF) IF (L)

"selv".*@PRED> -> (<mv>) IF (R)
@PRED> -> (<mv>.*(PR|IMPF|INF)) IF (R) BARRIER:(PR|IMPF) # also: fortsätta att själva göra upp om
@PRED> -> (<mv>.*@ICL-AUX<) IF (R) TRANS:(PR|IMPF)
@PRED> -> (<mv>.*@AUX<) IF (R) TRANS:(PR|IMPF) # got to be @AUX<, not @ICL-AUX< !?
@<PRED -> (<mv>,PR,IMPF) IF (L) # egentlig nu bundet til <mv> or markeret <predvp>, men PR,IMPF er tilføjet pga. gamle data

@ACC> -> (PR|IMPF|INF|<mv>) IF (R) # også: han lader sig friste (ACI), han får det bragt
@ACC>> -> (<mv>) IF (R) TRANS:(<mv>) NOTTARGET=(<rel>,<interr>) NOTHEAD=(@[FSICL]+-@[NAP]<) # at Hasan Al var med ved seneste stævne, har vi intet med at gøre
@ACC>> -> (<mv>) IF (R) TRANS:(<mv>)

#@FS-@<ACC -> ("få".*<mv>) IF (L) # wanting ones first: hun fik at vide, at hun ...
@<ACC -> (<mv>) IF (L)
@<<ACC -> (<mv>) IF (L) TRANS:(<mv>)

@DAT> -> (PR|IMPF) IF (R)
@<DAT -> (<mv>) IF (L)
@<<DAT -> (<mv>) IF (L) TRANS:(<mv>)

@PIV> -> (PR|IMPF|<mv>) IF (R) # also: det har ikke med @PIV> hårfarven at gøre
@<PIV -> (<mv>) IF (L)
@<<PIV -> (<mv>) IF (L) TRANS:(<mv>)

@SC> -> (PR|IMPF) IF (R)
(NOM|ACC).*@<SC -> (@SUBJ>,<mv>) IF (L) BARRIER:(<aux>,<mv>) # also acl: og munden for stor
@<SC -> (<mv>) IF (L) # also acl: og munden for stor
@<<SC -> (<mv>) IF (L) TRANS:(<mv>)
@SC>> -> (<mv>) IF (R) TRANS:(<mv>) # Uanset hvor store lys, vi mener at være i verden ...

@OC> -> (PR|IMPF) IF (R)
@<OC -> (<mv>) IF (L) TRANS:(@<ACC) BARRIER:(<mv>) # also attaches to INF but only if there is an @<ACC
@<OC -> (<acc-ellipsis>.*<mv>) IF (L) BARRIER:(<mv>) # relclause allowed: det som kineserne insisterer på at kalde 'den fredelige befrielse af Tibet'
@<OC -> (<mv>) IF (L) NOTHEAD=(INF.*@ICL-@[NAP]<,INF.*@ICL-<[ASO][CA]C?) # cave interfering INF's: hjælpen gør det at tegne meget lettere
@<<OC -> (<mv>) IF (L) TRANS:(<mv>)

@SA> -> (PR|IMPF|PAS) IF (R)
#<adir>.*@<SA -> (<mv>) IF (L) (F) # hun skulle ud til sin kæreste (doesn't work)
(PRP|ADV).*@<SA -> (@SUBJ>,<mv>) IF (L) BARRIER:(<aux>) # also acl, PRP prevents FS-<SA attaching to its own subject!
@<SA -> (<mv>) IF (L) # also acl
@<<SA -> (<mv>) IF (L) TRANS:(<mv>)

@OA> -> (PR|IMPF) IF (R)
@<OA -> (<mv>) IF (L)
@<<OA -> (<mv>) IF (L) TRANS:(<mv>)

(<kc>|<rel>|<interr>).*@ADVL> -> (<mv>) IF (R) # complementizer ADVL has no subject inversion

(ADV|PRP|N).*@ADVL> -> (PR|IMPF) IF (R) BARRIER:(INFM,<clb>,KS,<rel>,<interr>,<mv>) # attachment to finite verb later (in print section) raised to <mv>
(ADV|PRP|N).*@ADVL> -> (INF,@ICL.*) IF (R) BARRIER:(<clb>|<aux>|PR|IMPF|PRP|V) # vel vidende at ...
PRP.*@ADVL> -> (INF,@ICL.*) IF (R) BARRIER:(<clb>|<aux>|PR|IMPF|PRP|V|¤CLAUSE) TRANS:(@P<) # vel vidende at ...

@ADVL> -> (PR|IMPF) IF (R) NOTTARGET=(@FS.*) # attachment to finite verb later (in print section) raised to <mv> --- reglen før (med ... i TARGET bliver batched for sent) ...  TARGET=(ADV|PRP|N) virker ikke så længe kun negative NOTTARGET er implementeret

@ADVL> -> (<mv>) IF (R) BARRIER:(@SUBJ>,@F-SUBJ>,@S-SUBJ>) # fronted ADVL has subject inversion
@ADVL> -> (<mv>) IF (R) HEADCHILD=(@<SUBJ,@R-<SUBJ,@F-<SUBJ,@S-<SUBJ) # fronted ADVL has subject inversion

@<ADVL -> (<mv>,PR,IMPF,INF,AKT) IF (L) # PR,IMPF,INF included because of data where <advlvp> hasn't been implemented, and vp-internal <ADVL points to the finite/first verb in the vp
@<<ADVL -> (<mv>) IF (L) TRANS:(<mv>)

@INFM -> (INF) IF (R)
@MV< -> (<mv>) IF (L)
<sentstart>.*@(MV<|>MV) -> (<mv>) IF (R) # Sentence-initial verb incorporation 'Med til offerritualerne hørte også ...' -> is now @MV<, but could logically be @>MV

@VOK -> (IMP) IF (R)
@VOK -> (IMP) IF (L)
@VOK -> (<mv>) IF (L)
@TOP -> (<mv>) IF (R)

@ADVL -> (@NPHR) IF (L) BARRIER:(¤DELIMITER)
@ADVL -> (@ADVL) IF (L) BARRIER:(¤DELIMITER)
@ADVL -> (¤UTT,V) IF (L) BARRIER:(¤DELIMITER)
@NPHR -> (@NPHR) IF (L) BARRIER:(¤DELIMITER)
@NPHR -> (@ADVL) IF (L) BARRIER:(¤DELIMITER)
@NPHR -> (¤UTT) IF (L) BARRIER:(¤DELIMITER)
@NPHR -> (¤CLAUSE) IF (L) BARRIER:(¤DELIMITER)
@STA -> (@NPHR,@ADVL) IF (L) BARRIER:(¤DELIMITER)
@QUE -> (@NPHR,@ADVL) IF (L) BARRIER:(¤DELIMITER)
@COM -> (@NPHR,@ADVL) IF (L) BARRIER:(¤DELIMITER)
@EXC -> (@NPHR,@ADVL) IF (L) BARRIER:(¤DELIMITER)

### np

@>>N -> (N,PROP,PERS,INDP,VN,ADJ.*GEN) IF (R) TRANS:(N,PROP) BARRIER:(PRP,KS,¤CLAUSE) NOTHEAD=(PROP .*@>N,<unit> .*@>A,<pref>)

@N<FUSE -> (N,PROP) IF (L)

<card>.*@>N -> (<unit>) IF (R) BARRIER:(N,PROP,PERS,INDP,PRP,KS,¤CLAUSE) TARGET=(<card>)
@>N -> (@P<) IF (R) BARRIER:(PRP|GEN|<rel>|<interr>|N) # som det første ... cave: som et slags smukt, organisk fængsel, udsigt til et treetagers ...
NEU S.*@>N -> (N NEU S IDF) IF (R) BARRIER:(N nG S,N UTR nN,PROP,PERS,INDP,PRP,KS,¤CLAUSE) # has to come first, since @>N is run as a joint batch ... et 300 meter langt udstillingstog
UTR S.*@>N -> (N UTR S IDF) IF (R) BARRIER:(N nG S,N UTR nN,PROP,PERS,INDP,PRP,KS,¤CLAUSE) # et 300 meter langt udstillingstog

@>N -> (@>N) IF (L) TRANS:(<co-prenom>) BARRIER:(@>N) # den gamle og sure kat, immediate left co-attachment, not longer, to article or so ...
@>N -> ((N|STA).*GEN.*@>N) IF (R) BARRIER:(NOM,KS) NOTHEAD=(<pref>) # mange danskeres lørdagsfrokost ... also: de anställdas kursbudget
@>N -> (@P<) IF (R) BARRIER:(PRP,KS,N,¤CLAUSE,GEN)
@>N -> (@P<) IF (R) BARRIER:(KS,¤CLAUSE,GEN,<aux>,<mv>) TRANS:(<ap-internal>) TARGET=(<cross-pp>)
@>N -> (<unit>) IF (R) BARRIER:(NUM,DET,N,PROP,PERS,INDP,PRP,KS,¤CLAUSE) NOTTARGET=(ART,ADJ,PCP1,PCP2,N,ADV,INDP) # difficult way to express NUM,<quant> as target
@>N -> (N,PROP,PERS,INDP,VN,ADJ.*GEN) IF (R) BARRIER:(PRP,KS,¤CLAUSE) NOTHEAD=(PROP .*@>N,<unit> .*@>A,<pref>) # cave: Dunlop eller Bridgestone dæk, men: 150 MV vindmøllepark .. cave: $en 2,4 km bred krater
@>N -> (¤NPCLAUSE,@<PRED,@NPHR,@<ADVL,@ADVL>,@<SA,@<OA) IF (R) NOTHEAD=(ADV,PRP|PREF,<pref>) BARRIER:(<aux>,<mv>)
#@>N -> (¤CLAUSE) IF (R)
@>N -> (@AS<,¤AS) IF (R)
@AS-@>N -> (N) IF (R) # et omend betinget "go"

<icl-subj> @SUBJ> -> (INF) IF (R) BARRIER:(V) # Hvad forventes jeg at gøre
<np-list> -> (<np-close>,<np-long>) IF (L) # surrealisterne Dali, Buñuel, Breton og Cocteau
@ICL-@N< -> (N,PROP,PERS,INDP) IF (L) BARRIER:(PRP,KS) NOTHEAD=(@PRED>,@ADVL>)
<np-close> -> (DET) IF (L) HEADCHILD=(@>N) BARRIER:(¤NPHEAD) # 'bortrejst det $meste af året' (has to come first)
"af".*<np-close> -> (NUM) IF (L) BARRIER:(¤NPHEAD) # en $af hendes største opgaver
<np-close> -> (N,PROP,PERS,INDP,¤NPHEAD) IF (L) NOTTARGET=(@FS-@N<,@ICL-N<,@N<PRED,@APP) # these targets can't attach to <clb> or prenominals and preadjects (cp. following rule)
<np-close> -> (N,PROP,PERS,INDP,¤NPHEAD) IF (L) NOTHEAD=(<clb>,@>N,@>A)
<np-long> -> (N,PROP,PERS,INDP,¤NPHEAD) IF (L) HEADCHILD=(<np-close>) # skal komme efter <np-close>
PROP @N< -> (N) IF (L)
<np-long> -> (N,PROP,PERS,INDP,¤NPHEAD) IF (L) TRANS:(@<ADVL,@<PIV,@<SA,@<OA) BARRIER:(<clb>,<mv>,<aux>,@<ACC,@SUBJ>) # I dag spiller notaren en underordnet rolle i Danmark, ja i virkeligheden så underordnet <np-long>, at ...
@N< -> (N,PROP,PERS,INDP,¤NPHEAD) IF (L) NOTHEAD=(<rel>,<interr>) NOTTARGET=(@FS-@N<)
@N<PRED -> (N,PROP,PERS,INDP,¤NPHEAD) IF (L) NOTHEAD=(<rel>,<interr>,@>A,@>N)

@APP -> (N,PROP,PERS,INDP,¤NPHEAD) IF (L) NOTHEAD=(<rel>,<interr>,@>A,@>N)
@N<< -> (N,PROP,PERS,INDP) IF (L) TRANS:(PR|IMPF) # hvad er du selv andet (@N<<) end et menneske?

### ap

<aquant>.*@>A -> (ADJ,ADV,DET,NUM,PCP1,STA,meget,lidt) IF (R) # has to come before all other @>A (though I'd like it to be second), otherwise they are run in batch, and <aquant> @>A will be last ..

@>A -> (@>A) IF (L) TRANS:(<co-pread>) BARRIER:(@>A)
@>A -> (ADJ,ADV,DET,NUM,PCP1,STA,<quant>) IF (R) NOTHEAD=(<aquant>.*@>A) NOTTARGET=(PRP)
PRP.*@>A -> (ADJ,ADV,DET,NUM,PCP1,STA) IF (R) NOTHEAD=(<aquant>.*@>A) TRANS:(@P<) # hendes på samme tid blide og jordbundne udstråling

@>>A -> (ADJ,ADV,PCP1,STA) IF (R) # hvor var det godt
@A< -> (ADJ,ADV,DET,NUM,PCP1,STA,IN) IF (L) NOTHEAD=(@>N)
#<adjp-long> -> (ADJ,ADV,DET,NUM,PCP1,STA,IN) IF (L) TRANS:(@A<)
@ICL-@A<< -> (ADJ,ADV,DET,NUM,PCP1,STA,IN) IF (L) TRANS:(PR|IMPF|N) # et godt sted at starte
@A<< -> (ADJ,ADV,DET,NUM,PCP1,STA,IN) IF (L) TRANS:(PR|IMPF|N)

### comparatives

@KOMP< -> (COM,<KOMP>,mere,mindre,flere,færre,\[så\].*<aquant>,lige=så,samme,anden,anderledes,andet,andre,så=meget,så=lidt,sådan,lika,samma,annat,annan,andra) IF (L) # Swedish added

### @AS averbal nexus

@>AS -> (¤AS) IF (R)
@AS< -> (¤AS) IF (L)
@AS-@<ADVL -> (<mv>) IF (L)
@AS-@ADVL> -> (<mv>) IF (R)
@AS-@<SC -> (<mv>) IF (R)
@AS-@N<PRED -> (N,PROP,PERS,INDP) IF (L)

### sentence appositions

@S< -> (PR,IMPF,@ADVL,@NPHR) IF (L)
@S< -> (¤NPHEAD) IF (L)

@CO -> (@<PRED,@N<PRED,@N<) IF (R) BARRIER:(¤NPHEAD)
@CO -> (AKT,PAS) IF (R) TRANS:(\$-) BARRIER:(AKT,PAS,¤DELIMITER)
@CO -> (¤CLAUSELEVEL,@P<) IF (L)
@CO -> (<cjt>.*(¤UTT,@ADVL,@NPHR)) IF (R) BARRIER:(¤UTT,@ADVL,@NPHR)
@CO -> (¤UTT,@ADVL,@NPHR) IF (R) (ADD:<topkc>) # sentence/clause initial co-ordinator, jumps embedded subclauses if possible ('Men når han var ude at sejle, kunne han godt ...')
@CO -> (PR,IMPF) IF (R) (ADD:<topkc>) # sentence/clause initial co-ordinator

### punctuation (important for dan2eng)

\$« -> (<\*1>.*<\*2>) IF (R) BARRIER:(<\*1>,<\*2>)
\$« -> (.*) IF (R)
\$» -> (.*) IF (L)

### enten -> eller (has to come late, apparently clobbers up the rest of the coordination)
@FOC> -> (@CO) IF (R) (F) # hverken, enten, både, såvel, dels, hvis=ikke, om=ikke, på den ene side, hhv.
@FOC> -> (<mv>) IF (R) # en uddybende snak om hvad det er vi laver
#@FOC> -> (PR,IMPF) # eks. Koen laver mælk --> now @SUB?

#@>>AS -> (@AS-.*) IF (R) # Det føler vi os i dén grad som


