update pack
This commit is contained in:
parent
c03f8a55bd
commit
4a25a92db7
2
configure
vendored
2
configure
vendored
@ -8,7 +8,7 @@ CUR_DIR=$(pwd)
|
|||||||
SRC_DIR="${CUR_DIR}/src"
|
SRC_DIR="${CUR_DIR}/src"
|
||||||
|
|
||||||
# list of components to compile
|
# list of components to compile
|
||||||
CMPLIST="compdic cor dgc dgp fla gph grp gue kon kor kot lem mar rm12 rs12 sen sen-nl ser tags tok.c tok.l tok.pl tre unfla"
|
CMPLIST="compdic cor dgc dgp fla gph grp gue kon kor kot lem mar rat rm12 rs12 sen sen-nl ser tags tok.c tok.l tok.pl tre unfla"
|
||||||
COMP=
|
COMP=
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ Documentation License,,GNU Free Documentation License.
|
|||||||
|
|
||||||
@titlepage
|
@titlepage
|
||||||
@title UAM Text Tools 0.90 - User Manual
|
@title UAM Text Tools 0.90 - User Manual
|
||||||
@subtitle edition 0.01, @today
|
@subtitle edition 0.01, @today{}
|
||||||
@subtitle status: prescript
|
@subtitle status: prescript
|
||||||
@author by Justyna Walkowska, Tomasz Obrębski and Michał Stolarski
|
@author by Justyna Walkowska, Tomasz Obrębski and Michał Stolarski
|
||||||
@page
|
@page
|
||||||
|
@ -4,7 +4,7 @@ include ../config.mak
|
|||||||
TARGETS = gram.dgp
|
TARGETS = gram.dgp
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(TARGETS)
|
all:
|
||||||
|
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
# main section
|
# main section
|
||||||
@ -15,7 +15,7 @@ gram.dgp: gram.dgc
|
|||||||
|
|
||||||
|
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
install: install-grammar install-dictionaries
|
install:
|
||||||
|
|
||||||
.PHONY: install-grammar
|
.PHONY: install-grammar
|
||||||
install-grammar:
|
install-grammar:
|
||||||
|
475
share/gram.dgc
475
share/gram.dgc
@ -1,362 +1,223 @@
|
|||||||
|
|
||||||
# TODO!
|
#==================================================================================================== FLAGI
|
||||||
|
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
|
||||||
# FLAGI
|
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
FLAG RQ
|
FLAG RQ
|
||||||
FLAG NEG
|
FLAG NEG
|
||||||
FLAG init
|
FLAG init
|
||||||
|
#==================================================================================================== KLASY DYSTRYBUCYJNE BIERNE
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
|
||||||
# KLASY DYSTRYBUCYJNE BIERNE
|
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
class $V- = V|VM|AUX|BYC
|
class $V- = V|VM|AUX|BYC
|
||||||
class $N- = N|NV|NPRO|NUMCRD
|
class $N- = N|NV|NPRO|NUMCRD
|
||||||
class $ADJ- = ADJ|ADJPRP|ADJPAP|ADJPP|ADJPRO
|
class $ADJ- = ADJ|ADJPRP|ADJPAP|ADJPP|ADJPRO
|
||||||
class $ADV- = ADV|ADVPRP|ADVANP
|
class $ADV- = ADV|ADVPRP|ADVANP|ADVPRO|P
|
||||||
|
#==================================================================================================== KLASY DYSTRYBUCYJNE CZYNNE
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
|
||||||
# KLASY DYSTRYBUCYJNE CZYNNE
|
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
class $V+ = V|ADVPRP|ADVANP|ADJPRP|ADJPAP|NV
|
class $V+ = V|ADVPRP|ADVANP|ADJPRP|ADJPAP|NV
|
||||||
|
class $FIN+ = (V|BYC)/Vp|V/Vi
|
||||||
|
|
||||||
|
#==================================================================================================== NEGACJA
|
||||||
####################################################################################################
|
#==================================================================================================== neg
|
||||||
# NEG
|
|
||||||
####################################################################################################
|
|
||||||
|
|
||||||
ROLE neg
|
ROLE neg
|
||||||
SGL neg
|
SGL neg
|
||||||
LEFT neg
|
LEFT neg
|
||||||
|
|
||||||
LINK V|VM|AUX|BYC|ADJPRP|ADJPAP|ADJPP NEG neg
|
LINK V|VM|AUX|BYC|ADJPRP|ADJPAP|ADJPP NEG neg
|
||||||
|
|
||||||
|
#==================================================================================================== PYTANIE CZY
|
||||||
|
#==================================================================================================== czy
|
||||||
|
ROLE czy
|
||||||
|
SGL czy
|
||||||
|
RIGHT czy
|
||||||
|
LINK CZY $FIN+/Mdc|V/Vb czy
|
||||||
|
|
||||||
####################################################################################################
|
#==================================================================================================== PODMIOT
|
||||||
# subj
|
#==================================================================================================== subj
|
||||||
####################################################################################################
|
|
||||||
|
|
||||||
ROLE subj
|
ROLE subj
|
||||||
SGL subj
|
SGL subj
|
||||||
AGR subj N
|
AGR subj N
|
||||||
AGR subj G
|
AGR subj G
|
||||||
GOV subj */Cn
|
GOV subj */Cn
|
||||||
|
LINK (V/Kn|BYC|ZOSTAC)/VpP3 (N|NUMCRD) subj
|
||||||
|
LINK (V/Kn|BYC|ZOSTAC)/VpP12 NPRO//RQ- subj
|
||||||
|
LINK (V/Kn|BYC|ZOSTAC)/VpP3 NPRO//RQ- subj
|
||||||
|
LINK (V/Kn|BYC|ZOSTAC)/VpP3 NPRO//RQ+ subj&INIT
|
||||||
|
|
||||||
LINK (V/Kn|BYC)/VpP3 (N|NUMCRD) subj
|
#==================================================================================================== DOPE£NIENIA
|
||||||
LINK (V/Kn|BYC)/VpP12 NPRO//RQ- subj
|
#==================================================================================================== gen
|
||||||
LINK (V/Kn|BYC)/VpP3 NPRO//RQ- subj
|
#ROLE gen
|
||||||
LINK (V/Kn|BYC)/VpP3 NPRO//RQ+ subj&INIT
|
#SGL gen
|
||||||
|
#GOV gen */Cg
|
||||||
|
#LINK $V+ $N-//RQ- gen
|
||||||
|
#LINK $V+ $N-//RQ+ gen&INIT
|
||||||
#====================================================================================================
|
#==================================================================================================== obj
|
||||||
# cmpl_g
|
ROLE obj
|
||||||
#====================================================================================================
|
SGL obj
|
||||||
|
LINK $V+//NEG- $N-/Ca//RQ- obj
|
||||||
ROLE cmpl_g
|
LINK $V+//NEG+ $N-/Cg//RQ- obj
|
||||||
SGL cmpl_g
|
LINK $V+//NEG- $N-/Ca//RQ+ obj&LEFT&INIT
|
||||||
GOV cmpl_g */Cg
|
LINK $V+//NEG+ $N-/Cg//RQ+ obj&LEFT&INIT
|
||||||
|
#==================================================================================================== dat
|
||||||
LINK $V+ $N-//RQ- cmpl_g
|
ROLE dat
|
||||||
LINK $V+ $N-//RQ+ cmpl_g&INIT
|
SGL dat
|
||||||
|
GOV dat */Cd
|
||||||
#====================================================================================================
|
LINK $V+ $N-//RQ- dat
|
||||||
# cmpl_a
|
#==================================================================================================== instr
|
||||||
#====================================================================================================
|
ROLE instr
|
||||||
|
SGL instr
|
||||||
ROLE cmpl_a
|
GOV instr */Ci
|
||||||
SGL cmpl_a
|
LINK $V+ $N-//RQ- instr
|
||||||
GOV cmpl_a */Ca
|
#==================================================================================================== ze
|
||||||
|
ROLE ze
|
||||||
LINK $V+ $N-//RQ-NEG- cmpl_a
|
SGL ze
|
||||||
LINK $V+ $N-//RQ+NEG- cmpl_a&INIT
|
LINK $V+ CONJ/Si ze&FIN
|
||||||
|
#==================================================================================================== inf
|
||||||
#====================================================================================================
|
ROLE inf
|
||||||
# cmpl_d
|
SGL inf
|
||||||
#====================================================================================================
|
LINK $V+ V/Vb inf
|
||||||
|
#==================================================================================================== int
|
||||||
ROLE cmpl_d
|
ROLE int
|
||||||
SGL cmpl_d
|
SGL int
|
||||||
GOV cmpl_d */Cd
|
LINK $V+ V/Vp//RQ+ int
|
||||||
|
#==================================================================================================== CZASY
|
||||||
LINK $V+ $N-//RQ- cmpl_d
|
#==================================================================================================== fut
|
||||||
|
ROLE pred
|
||||||
#====================================================================================================
|
SGL pred
|
||||||
# cmpl_i
|
AGR pred N
|
||||||
#====================================================================================================
|
AGR pred G
|
||||||
|
ROLE fut
|
||||||
ROLE cmpl_i
|
SGL fut
|
||||||
SGL cmpl_i
|
LINK BYC/VpMdTf (V/VpP3|V/Vb)/Ai fut #czas przyszly analityczny
|
||||||
GOV cmpl_i */Ci
|
#==================================================================================================== pass
|
||||||
|
ROLE pass
|
||||||
LINK $V+ $N-//RQ- cmpl_i
|
SGL pass
|
||||||
|
LINK BYC/Vpb ADJPAP/Cn pass #strona bierna
|
||||||
#====================================================================================================
|
LINK ZOSTAC/Vpb ADJPAP/ApCn pass #strona bierna
|
||||||
# cmpl_ze
|
#==================================================================================================== past
|
||||||
#====================================================================================================
|
ROLE past
|
||||||
|
SGL past
|
||||||
ROLE cmpl_ze
|
LINK BYC/VpMc V/VpP3 past #czas zaprzesz³y
|
||||||
SGL cmpl_ze
|
#==================================================================================================== cop
|
||||||
|
ROLE qpred
|
||||||
LINK $V+ CONJ/Si cmpl_ze&FIN
|
#ONE qpred
|
||||||
|
AGR qpred N
|
||||||
#====================================================================================================
|
ROLE pred qpred
|
||||||
# cmpl_inf
|
AGR pred G
|
||||||
#====================================================================================================
|
ROLE fut pred
|
||||||
|
ROLE pass pred
|
||||||
ROLE cmpl_inf
|
ROLE past pred
|
||||||
SGL cmpl_inf
|
ROLE pred
|
||||||
|
SGL pred
|
||||||
LINK $V+ V/Vb cmpl_inf
|
AGR pred N
|
||||||
|
AGR pred G
|
||||||
#====================================================================================================
|
LINK BYC ADJ/Cn pred #BYC jako lacznik w (jest bialy, jest zaszlachtowany)
|
||||||
# cmpl_s
|
LINK BYC N/Ci pred #BYC jako lacznik w (jest pilotem)
|
||||||
#====================================================================================================
|
#==================================================================================================== mod
|
||||||
|
|
||||||
ROLE cmpl_s
|
|
||||||
SGL cmpl_s
|
|
||||||
|
|
||||||
LINK $V+ V/Vp//RQ+ cmpl_s
|
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
|
||||||
# aux
|
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE aux
|
|
||||||
SGL aux
|
|
||||||
AGR aux N
|
|
||||||
AGR aux G
|
|
||||||
|
|
||||||
LINK BYC/VpMdTf (V/VpP3|V/Vb)/Ai aux #czas przyszly analityczny
|
|
||||||
LINK BYC/VpMc V/VpP3 aux #czas zaprzesz³y
|
|
||||||
LINK BYC (ADJPAP|ADJ)/Cn aux #BYC jako lacznik w (jest bialy, jest zaszlachtowany)
|
|
||||||
LINK BYC N/Ci aux #BYC jako lacznik w (jest pilotem)
|
|
||||||
|
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
# MOD
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE mod
|
ROLE mod
|
||||||
AGR mod N
|
AGR mod N
|
||||||
AGR mod C
|
AGR mod C
|
||||||
AGR mod G
|
AGR mod G
|
||||||
|
LINK V|VM|AUX|BYC $ADV-//RQ- mod
|
||||||
LINK V|VM|AUX|BYC $ADV- mod
|
LINK V|VM|AUX|BYC $ADV-//RQ+ mod&LEFT&INIT # kiedy u¶nie
|
||||||
LINK V|VM|AUX|BYC ADVPRO/Zqr mod&LEFT&INIT # kiedy u¶nie
|
LINK N|NV $ADJ-//RQ- mod
|
||||||
LINK N|NV $ADJ- mod
|
LINK N|NV $ADJ-//RQ+ mod&LEFT&INIT
|
||||||
LINK N|NV ADJPRO/Zqr mod&LEFT&INIT
|
#==================================================================================================== pp
|
||||||
LINK N|NV P mod
|
ROLE pp
|
||||||
LINK N|NV P/Zqr mod&LEFT&INIT
|
#LINK V P prep
|
||||||
|
LINK N|NV P//RQ- pp
|
||||||
|
LINK N|NV P//RQ+ pp&LEFT&INIT
|
||||||
#====================================================================================================
|
#==================================================================================================== pcmpl
|
||||||
# PREP
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE prep
|
|
||||||
|
|
||||||
LINK V P prep
|
|
||||||
LINK N P//RQ- prep
|
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
# PCMPL
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE pcmpl
|
ROLE pcmpl
|
||||||
RIGHT pcmpl
|
RIGHT pcmpl
|
||||||
SGL pcmpl
|
SGL pcmpl
|
||||||
AGR pcmpl C
|
AGR pcmpl C
|
||||||
|
|
||||||
LINK P $N- pcmpl
|
LINK P $N- pcmpl
|
||||||
|
|
||||||
REQ P pcmpl
|
REQ P pcmpl
|
||||||
|
#==================================================================================================== conj
|
||||||
#====================================================================================================
|
|
||||||
# conj
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE conj
|
ROLE conj
|
||||||
RIGHT conj
|
RIGHT conj
|
||||||
|
LINK $V+ CONJ/Sc conj&FIN
|
||||||
LINK $V+ CONJ/Sc conj&FIN
|
|
||||||
LINK $N- CONJ/Sc conj
|
LINK $N- CONJ/Sc conj
|
||||||
LINK $ADJ- CONJ/Sc conj
|
LINK $ADJ- CONJ/Sc conj
|
||||||
LINK $ADV- CONJ/Sc conj
|
LINK $ADV- CONJ/Sc conj
|
||||||
|
#==================================================================================================== conj1
|
||||||
#====================================================================================================
|
|
||||||
# conj1
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE conj1
|
ROLE conj1
|
||||||
SGL conj1
|
SGL conj1
|
||||||
LEFT conj1
|
LEFT conj1
|
||||||
LINK N CONJ/S1 conj1
|
LINK N CONJ/S1 conj1
|
||||||
|
#==================================================================================================== conj2
|
||||||
#====================================================================================================
|
|
||||||
# conj2
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE conj2
|
ROLE conj2
|
||||||
SGL conj2
|
SGL conj2
|
||||||
RIGHT conj2
|
RIGHT conj2
|
||||||
LINK N CONJ/S2 conj2
|
LINK N CONJ/S2 conj2
|
||||||
|
#==================================================================================================== ¿e
|
||||||
#====================================================================================================
|
ROLE ze
|
||||||
# ccmpl
|
SGL ze
|
||||||
#====================================================================================================
|
LINK $V+ CONJ/S<¿e> ze
|
||||||
|
#==================================================================================================== ccmpl
|
||||||
ROLE ccmpl
|
ROLE ccmpl
|
||||||
SGL ccmpl
|
SGL ccmpl
|
||||||
RIGHT ccmpl
|
RIGHT ccmpl
|
||||||
|
LINK CONJ/JcSci2 V/Vpi ccmpl
|
||||||
LINK CONJ/JcSci2 V/Vf ccmpl
|
|
||||||
LINK CONJ/JpSci2 ($N-|$V+|$ADJ-|$ADV-) ccmpl
|
LINK CONJ/JpSci2 ($N-|$V+|$ADJ-|$ADV-) ccmpl
|
||||||
|
|
||||||
REQ CONJ/Sci2 ccmpl
|
REQ CONJ/Sci2 ccmpl
|
||||||
|
#==================================================================================================== poss
|
||||||
#====================================================================================================
|
|
||||||
# poss
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE poss
|
ROLE poss
|
||||||
SGL poss
|
SGL poss
|
||||||
GOV poss */Cg
|
GOV poss */Cg
|
||||||
|
|
||||||
LINK N $N- ~ NPRO poss
|
LINK N $N- ~ NPRO poss
|
||||||
LINK N NPRO/Zqr poss&LEFT&INIT
|
LINK N NPRO/Zqr poss&LEFT&INIT
|
||||||
|
#==================================================================================================== numa
|
||||||
#====================================================================================================
|
|
||||||
# numa
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE num_a
|
ROLE num_a
|
||||||
SGL num_a
|
SGL num_a
|
||||||
AGR num_a C
|
AGR num_a C
|
||||||
AGR num_a G
|
AGR num_a G
|
||||||
GOV num_a */Ns
|
GOV num_a */Ns
|
||||||
|
|
||||||
LINK NUMCRD/Sa N|NV num_a
|
LINK NUMCRD/Sa N|NV num_a
|
||||||
|
#==================================================================================================== num
|
||||||
#====================================================================================================
|
|
||||||
# num
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE num
|
ROLE num
|
||||||
SGL num
|
SGL num
|
||||||
|
|
||||||
LINK NUMCRD N|NV num
|
LINK NUMCRD N|NV num
|
||||||
|
#==================================================================================================== restr
|
||||||
#====================================================================================================
|
|
||||||
# restr
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE restr
|
ROLE restr
|
||||||
SGL restr
|
SGL restr
|
||||||
|
|
||||||
LINK ADJ ADV restr
|
LINK ADJ ADV restr
|
||||||
|
#==================================================================================================== quant
|
||||||
#====================================================================================================
|
|
||||||
# quant
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE quant
|
ROLE quant
|
||||||
SGL quant
|
SGL quant
|
||||||
AGR quant N
|
AGR quant N
|
||||||
AGR quant C
|
AGR quant C
|
||||||
AGR quant G
|
AGR quant G
|
||||||
LEFT quant
|
LEFT quant
|
||||||
|
|
||||||
LINK N ADJPRO/Zg quant
|
LINK N ADJPRO/Zg quant
|
||||||
|
#==================================================================================================== part
|
||||||
#====================================================================================================
|
|
||||||
# part
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE part
|
ROLE part
|
||||||
|
|
||||||
LINK $V+ PART part
|
LINK $V+ PART part
|
||||||
|
#==================================================================================================== subj_copred
|
||||||
#====================================================================================================
|
|
||||||
# part
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE czy
|
|
||||||
|
|
||||||
LINK $V+ CZY czy
|
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
# subj_copred
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE subj_copred
|
ROLE subj_copred
|
||||||
SGL subj_copred
|
SGL subj_copred
|
||||||
|
#==================================================================================================== gen_copred
|
||||||
#====================================================================================================
|
ROLE gen_copred
|
||||||
# cmpl_g_copred
|
SGL gen_copred
|
||||||
#====================================================================================================
|
#==================================================================================================== acc_copred
|
||||||
|
ROLE acc_copred
|
||||||
ROLE cmpl_g_copred
|
SGL acc_copred
|
||||||
SGL cmpl_g_copred
|
#==================================================================================================== cmpl_d_copred
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
# cmpl_a_copred
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE cmpl_a_copred
|
|
||||||
SGL cmpl_a_copred
|
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
# CMPL_D_COPRED
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE cmpl_d_copred
|
ROLE cmpl_d_copred
|
||||||
SGL cmpl_d_copred
|
SGL cmpl_d_copred
|
||||||
|
#==================================================================================================== cmpl_i_copred
|
||||||
#====================================================================================================
|
|
||||||
# CMPL_I_COPRED
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE cmpl_i_copred
|
ROLE cmpl_i_copred
|
||||||
SGL cmpl_i_copred
|
SGL cmpl_i_copred
|
||||||
|
#==================================================================================================== rel
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
# REL
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
ROLE rel
|
ROLE rel
|
||||||
RIGHT rel
|
RIGHT rel
|
||||||
SGL rel
|
SGL rel
|
||||||
FIN rel
|
FIN rel
|
||||||
|
LINK N V/Vpi//RQ+ rel&FIN
|
||||||
|
|
||||||
LINK N V/Vp//RQ+ rel&FIN
|
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
#====================================================================================================
|
||||||
# CONSTR
|
# CONSTR
|
||||||
#====================================================================================================
|
#====================================================================================================
|
||||||
#====================================================================================================
|
#CONSTRE gen acc
|
||||||
|
#CONSTRE acc gen
|
||||||
CONSTRE cmpl_g cmpl_a
|
|
||||||
CONSTRE cmpl_a cmpl_g
|
|
||||||
|
|
||||||
CONSTRI conj1 conj2
|
CONSTRI conj1 conj2
|
||||||
CONSTRI conj2 conj1
|
CONSTRI conj2 conj1
|
||||||
|
|
||||||
#CONSTR cmpl_g ~cmpl_a
|
#CONSTR cmpl_g ~cmpl_a
|
||||||
#CONSTR cmpl_a ~cmpl_g
|
#CONSTR cmpl_a ~cmpl_g
|
||||||
#CONSTR cmpl_inf ~cmpl_g ~cmpl_d ~cmpl_a ~cmpl_p ~cmpl_ez ~cmpl_s
|
#CONSTR cmpl_inf ~cmpl_g ~cmpl_d ~cmpl_a ~cmpl_p ~cmpl_ez ~cmpl_s
|
||||||
@ -366,79 +227,47 @@ CONSTRI conj2 conj1
|
|||||||
#CONSTR cmpl_i_copred => cmpl_i
|
#CONSTR cmpl_i_copred => cmpl_i
|
||||||
#CONSTR cmpl_d_copred => cmpl_d
|
#CONSTR cmpl_d_copred => cmpl_d
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
#====================================================================================================
|
|
||||||
# LONG
|
# LONG
|
||||||
#====================================================================================================
|
#==================================================================================================== ncoord
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
#====================================================================================================
|
|
||||||
# ncoord
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
LONG ncoord ^conj,ccmpl
|
LONG ncoord ^conj,ccmpl
|
||||||
LONG ncoord ^conj2,ccmpl
|
LONG ncoord ^conj2,ccmpl
|
||||||
|
|
||||||
AGR ncoord C
|
AGR ncoord C
|
||||||
AGR ncoord N
|
AGR ncoord N
|
||||||
|
|
||||||
LINK N N ncoord
|
LINK N N ncoord
|
||||||
|
#==================================================================================================== vcoord
|
||||||
#====================================================================================================
|
|
||||||
# vcoord
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
LONG vcoord ^conj,ccmpl
|
LONG vcoord ^conj,ccmpl
|
||||||
|
|
||||||
AGR vcoord P
|
AGR vcoord P
|
||||||
AGR vcoord N
|
AGR vcoord N
|
||||||
AGR vcoord A
|
AGR vcoord A
|
||||||
AGR vcoord G
|
AGR vcoord G
|
||||||
|
|
||||||
LINK V V vcoord
|
LINK V V vcoord
|
||||||
|
#==================================================================================================== adjcoord
|
||||||
#====================================================================================================
|
|
||||||
# adjcoord
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
LONG adjcoord ^conj,ccmpl
|
LONG adjcoord ^conj,ccmpl
|
||||||
|
|
||||||
AGR adjcoord C
|
AGR adjcoord C
|
||||||
AGR adjcoord N
|
AGR adjcoord N
|
||||||
AGR adjcoord G
|
AGR adjcoord G
|
||||||
|
|
||||||
LINK ADJ ADJ ncoord
|
LINK ADJ ADJ ncoord
|
||||||
|
#==================================================================================================== advcoord
|
||||||
#====================================================================================================
|
|
||||||
# advcoord
|
|
||||||
#====================================================================================================
|
|
||||||
|
|
||||||
LONG advcoord ^conj,ccmpl
|
LONG advcoord ^conj,ccmpl
|
||||||
|
|
||||||
AGR ncoord C
|
AGR ncoord C
|
||||||
AGR ncoord N
|
AGR ncoord N
|
||||||
|
|
||||||
LINK ADV ADV ncoord
|
LINK ADV ADV ncoord
|
||||||
|
#==================================================================================================== predagr
|
||||||
|
LONG predagr subj^pred
|
||||||
#====================================================================================================
|
AGR predagr N
|
||||||
# relagr
|
AGR predagr G
|
||||||
#====================================================================================================
|
LINK N * predagr
|
||||||
|
#==================================================================================================== relagr
|
||||||
LONG relagr subj,rel^
|
LONG relagr subj,rel^
|
||||||
LONG relagr poss,cmpl_a,rel^
|
LONG relagr poss,acc,rel^
|
||||||
LONG relagr cmpl_a,rel^
|
LONG relagr obj,rel^
|
||||||
LONG relagr cmpl_g,rel^
|
LONG relagr dat,rel^
|
||||||
LONG relagr pcmpl,rel^
|
LONG relagr instr,rel^
|
||||||
|
LONG relagr pcmpl,mod,rel^
|
||||||
AGR relagr N
|
AGR relagr N
|
||||||
AGR relagr G
|
AGR relagr G
|
||||||
|
|
||||||
LINK NPRO/Zqr N relagr
|
LINK NPRO/Zqr N relagr
|
||||||
|
|
||||||
|
|
||||||
#====================================================================================================
|
#====================================================================================================
|
||||||
#====================================================================================================
|
#====================================================================================================
|
||||||
# FLAG
|
# FLAG
|
||||||
@ -452,17 +281,17 @@ LINK NPRO/Zqr N relagr
|
|||||||
SET NPRO/Zrq RQ
|
SET NPRO/Zrq RQ
|
||||||
SET ADJPRO/Zrq RQ
|
SET ADJPRO/Zrq RQ
|
||||||
SET ADVPRO/Zqr RQ
|
SET ADVPRO/Zqr RQ
|
||||||
SET NEG NEG
|
SET CZY RQ
|
||||||
|
|
||||||
PASS subj RQ
|
PASS subj RQ
|
||||||
PASS cmpl_g RQ
|
PASS dat RQ
|
||||||
PASS cmpl_d RQ
|
PASS obj RQ
|
||||||
PASS cmpl_a RQ
|
PASS instr RQ
|
||||||
PASS cmpl_i RQ
|
|
||||||
PASS mod RQ
|
PASS mod RQ
|
||||||
PASS pcmpl RQ
|
PASS pcmpl RQ
|
||||||
PASS prep RQ
|
PASS pp RQ
|
||||||
PASS poss RQ
|
PASS poss RQ
|
||||||
|
|
||||||
|
SET NEG NEG
|
||||||
PASS neg NEG
|
PASS neg NEG
|
||||||
|
|
||||||
|
|
||||||
|
@ -140,6 +140,8 @@ _ 85
|
|||||||
* 93
|
* 93
|
||||||
+ 94
|
+ 94
|
||||||
Ö 95
|
Ö 95
|
||||||
|
< 96
|
||||||
|
> 97
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,6 +145,8 @@ _ 85
|
|||||||
* 93
|
* 93
|
||||||
+ 94
|
+ 94
|
||||||
Ö 95
|
Ö 95
|
||||||
|
< 96
|
||||||
|
> 97
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,6 +111,8 @@ _ 85
|
|||||||
* 93
|
* 93
|
||||||
+ 94
|
+ 94
|
||||||
Ö 95
|
Ö 95
|
||||||
|
< 96
|
||||||
|
> 97
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat $1 | fstrmepsilon | fstdeterminize | fstminimize | fstprint --acceptor --isymbols=$alphabet | fsm2aut | aut2fsa > $2
|
cat $1 | fstrmepsilon | fstdeterminize | fstminimize | fstprint --acceptor --isymbols=$alphabet | fsm2aut | aut2fsa > $2
|
||||||
|
97
src/dgc/dgc
97
src/dgc/dgc
@ -102,23 +102,24 @@ our $statementgrammar = q(
|
|||||||
|
|
||||||
statement : statement1 ";" { $item[1] }
|
statement : statement1 ";" { $item[1] }
|
||||||
|
|
||||||
statement1: /cat/i acat { ['cat', { cat=>$item{acat}, catexp=>attr::parse($item{acat}) }, $item{acat}] }
|
statement1: /cat/i acat { ['cat', { cat=>$item{acat}, catexp=>attr::parse($item{acat}) }, $item{acat}] }
|
||||||
| /flag/i flag { ['flag', { flag=>$item{flag} }, $item{flag}] }
|
| /flag/i flag { ['flag', { flag=>$item{flag} }, $item{flag}] }
|
||||||
| /role/i role { ['role', { role=>$item{role} }, $item{role}] }
|
| /role/i role role { ['role', { role=>$item[2], super=>$item[3] }, $item{role}] }
|
||||||
| /left/i role { ['left', { role=>$item{role} }, 0] }
|
| /role/i role { ['role', { role=>$item{role} }, $item{role}] }
|
||||||
| /right/i role { ['right', { role=>$item{role} }, 0] }
|
| /left/i role { ['left', { role=>$item{role} }, 0] }
|
||||||
| /sgl/i role { ['sgl', { role=>$item{role} }, 0] }
|
| /right/i role { ['right', { role=>$item{role} }, 0] }
|
||||||
| /req/i xcat role { ['req', { cats=>$item{xcat}, role=>$item{role} }, 0] }
|
| /sgl/i role { ['sgl', { role=>$item{role} }, 0] }
|
||||||
| /agr/i role attr { ['agr', { role=>$item{role}, attr=>$item{attr} }, $item{role}] }
|
| /req/i xcat role { ['req', { cats=>$item{xcat}, role=>$item{role} }, 0] }
|
||||||
| /gov/i role xcat { ['gov', { role=>$item{role}, cats=>$item{xcat} }, $item{role}] }
|
| /agr/i role attr { ['agr', { role=>$item{role}, attr=>$item{attr} }, $item{role}] }
|
||||||
| /init/i flagconstr { ['initf', { flag=>$item{flagconstr} }, 0] }
|
| /gov/i role xcat { ['gov', { role=>$item{role}, cats=>$item{xcat} }, $item{role}] }
|
||||||
| /fin/i flagconstr { ['finf', { flag=>$item{flagconstr} }, 0] }
|
| /init/i flagconstr { ['initf', { flag=>$item{flagconstr} }, 0] }
|
||||||
| /init/i role { ['initr', { role=>$item{role} }, 0] }
|
| /fin/i flagconstr { ['finf', { flag=>$item{flagconstr} }, 0] }
|
||||||
| /fin/i role { ['finr', { role=>$item{role} }, 0] }
|
| /init/i role { ['initr', { role=>$item{role} }, 0] }
|
||||||
| /set/i xcat flag { ['set', { cats=>$item{xcat}, flag=>$item{flag} }, 0] }
|
| /fin/i role { ['finr', { role=>$item{role} }, 0] }
|
||||||
| /pass/i role flag { ['pass', { role=>$item{role}, flag=>$item{flag} }, 0] }
|
| /set/i xcat flag { ['set', { cats=>$item{xcat}, flag=>$item{flag} }, 0] }
|
||||||
| /constre/i role role { ['constre', { role1=>$item[2], role2=>$item[3] }, 0] }
|
| /pass/i role flag { ['pass', { role=>$item{role}, flag=>$item{flag} }, 0] }
|
||||||
| /constri/i role role { ['constri', { role1=>$item[2], role2=>$item[3] }, 0] }
|
| /constre/i role role { ['constre', { role1=>$item[2], role2=>$item[3] }, 0] }
|
||||||
|
| /constri/i role role { ['constri', { role1=>$item[2], role2=>$item[3] }, 0] }
|
||||||
|
|
||||||
| /link/i xcat optflags(?) xcat optflags(?) role prop(s?)
|
| /link/i xcat optflags(?) xcat optflags(?) role prop(s?)
|
||||||
{ ['link', { hcats=>$item[2], hflagconstr=>$item[3],
|
{ ['link', { hcats=>$item[2], hflagconstr=>$item[3],
|
||||||
@ -126,7 +127,7 @@ statement1: /cat/i acat { ['cat', { cat=>$item{acat}, catex
|
|||||||
role=>$item[6], props=>$item[7] }, 0] }
|
role=>$item[6], props=>$item[7] }, 0] }
|
||||||
|
|
||||||
| /long/i role role(s? /,/) '^' role(s? /,/)
|
| /long/i role role(s? /,/) '^' role(s? /,/)
|
||||||
{ ['long', { rel=>$item[2], up=>$item[3], down=>$item[5] }, 0] }
|
{ ['long', { rel=>$item[2], up=>$item[3], down=>$item[5] }, $item[2]] }
|
||||||
|
|
||||||
| /class/i classname '=' xcat { ['class', { name=>$item{classname}, cats=>$item{xcat} }, $item{classname}] }
|
| /class/i classname '=' xcat { ['class', { name=>$item{classname}, cats=>$item{xcat} }, $item{classname}] }
|
||||||
|
|
||||||
@ -142,11 +143,11 @@ flag: /\w+/
|
|||||||
|
|
||||||
optflags: "//" flagconstr { $item[2] }
|
optflags: "//" flagconstr { $item[2] }
|
||||||
|
|
||||||
flagconstr: /\w+[+-]/
|
flagconstr: /(\w+[+-])+/
|
||||||
|
|
||||||
prop: '&' /\w+/ { $item[2] }
|
prop: '&' /\w+/ { $item[2] }
|
||||||
|
|
||||||
classname: /\$\w+[+-]/
|
classname: /\$\w+[+-]?/
|
||||||
|
|
||||||
classexpr : classexpr1 '|' classexpr { main::union($item[1],$item[3]) }
|
classexpr : classexpr1 '|' classexpr { main::union($item[1],$item[3]) }
|
||||||
| classexpr1 '~' classexpr { main::intersection( $item[1], main::complement($item[3]) ) }
|
| classexpr1 '~' classexpr { main::intersection( $item[1], main::complement($item[3]) ) }
|
||||||
@ -213,7 +214,6 @@ while(<INPUT>)
|
|||||||
|
|
||||||
# print "#input line $inputlineno\n";
|
# print "#input line $inputlineno\n";
|
||||||
# print Dumper($result);
|
# print Dumper($result);
|
||||||
|
|
||||||
if($result) { register($_, @{$result}) } else { print STDERR "ERROR at line $inputlineno\n" }
|
if($result) { register($_, @{$result}) } else { print STDERR "ERROR at line $inputlineno\n" }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,22 +225,24 @@ my $outline = 0;
|
|||||||
|
|
||||||
|
|
||||||
# print Dumper($idx{gov}->{subj});
|
# print Dumper($idx{gov}->{subj});
|
||||||
|
# print Dumper(%idx);
|
||||||
|
|
||||||
|
#role closure
|
||||||
|
for my $x (@{$in{role}})
|
||||||
|
{
|
||||||
|
print Dumper($x),"\n";
|
||||||
|
}
|
||||||
|
|
||||||
for my $x (@{$in{cat}}) { print_outin("CAT $x->{cat}", $x); }
|
exit;
|
||||||
|
|
||||||
for my $x (@{$in{flag}}) { print_outin("FLAG $x->{flag}", $x); }
|
|
||||||
|
|
||||||
for my $x (@{$in{role}}) { print_outin("ROLE $x->{role}", $x); }
|
|
||||||
|
|
||||||
for my $x (@{$in{long}}) { print_outin("LONG $x->{rel} " . join(",",@{$x->{up}}) . "^" . join(",",@{$x->{down}}), $x) }
|
|
||||||
|
|
||||||
for my $x (@{$in{left}}) { print_outin("LEFT $x->{role}", $x) if chk_role($x->{role}, $x) }
|
|
||||||
|
|
||||||
for my $x (@{$in{right}}) { print_outin("RIGHT $x->{role}", $x) if chk_role($x->{role}, $x) }
|
|
||||||
|
|
||||||
for my $x (@{$in{sgl}}) { print_outin("SGL $x->{role}", $x) if chk_role($x->{role}, $x) }
|
|
||||||
|
|
||||||
|
for my $x (@{$in{cat}}) { print_outin("CAT $x->{cat}", $x); }
|
||||||
|
for my $x (@{$in{flag}}) { print_outin("FLAG $x->{flag}", $x); }
|
||||||
|
for my $x (@{$in{role}}) { print_outin("ROLE $x->{role}", $x); }
|
||||||
|
for my $x (@{$in{derivedrole}}) { print_outin("ROLE $x->{role}", $x); }
|
||||||
|
for my $x (@{$in{long}}) { print_outin("LONG $x->{rel} " . join(",",@{$x->{up}}) . "^" . join(",",@{$x->{down}}), $x) }
|
||||||
|
for my $x (@{$in{left}}) { print_outin("LEFT $x->{role}", $x) if chk_role($x->{role}, $x) }
|
||||||
|
for my $x (@{$in{right}}) { print_outin("RIGHT $x->{role}", $x) if chk_role($x->{role}, $x) }
|
||||||
|
for my $x (@{$in{sgl}}) { print_outin("SGL $x->{role}", $x) if chk_role($x->{role}, $x) }
|
||||||
for my $x (@{$in{req}})
|
for my $x (@{$in{req}})
|
||||||
{
|
{
|
||||||
if( chk_role($x->{role}, $x) )
|
if( chk_role($x->{role}, $x) )
|
||||||
@ -251,15 +253,10 @@ for my $x (@{$in{req}})
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for my $x (@{$in{initr}}) { print_outin("INITR $x->{role}", $x) if chk_role($x->{role}, $x) }
|
||||||
for my $x (@{$in{initr}}) { print_outin("INITR $x->{role}", $x) if chk_role($x->{role}, $x) }
|
for my $x (@{$in{finr}}) { print_outin("FINR $x->{role}", $x) if chk_role($x->{role}, $x) }
|
||||||
|
for my $x (@{$in{initf}}) { print_outin("INITF $x->{flag}", $x) } # SPRAWDZIÆ CZY FLAGA JEST ZADEKLAROWANA
|
||||||
for my $x (@{$in{finr}}) { print_outin("FINR $x->{role}", $x) if chk_role($x->{role}, $x) }
|
for my $x (@{$in{finf}}) { print_outin("FINF $x->{flag}", $x); } # SPRAWDZIÆ CZY FLAGA JEST ZADEKLAROWANA
|
||||||
|
|
||||||
for my $x (@{$in{initf}}) { print_outin("INITF $x->{flag}", $x) } # SPRAWDZIÆ CZY FLAGA JEST ZADEKLAROWANA
|
|
||||||
|
|
||||||
for my $x (@{$in{finf}}) { print_outin("FINF $x->{flag}", $x); } # SPRAWDZIÆ CZY FLAGA JEST ZADEKLAROWANA
|
|
||||||
|
|
||||||
for my $x (@{$in{set}})
|
for my $x (@{$in{set}})
|
||||||
{
|
{
|
||||||
for my $atomcat (map{$_->{cat}} @{$x->{cats}})
|
for my $atomcat (map{$_->{cat}} @{$x->{cats}})
|
||||||
@ -267,15 +264,13 @@ for my $x (@{$in{set}})
|
|||||||
print_outin("SET $atomcat $x->{flag}", $x);
|
print_outin("SET $atomcat $x->{flag}", $x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for my $x (@{$in{pass}}) { print_outin("PASS $x->{role} $x->{flag}", $x); }
|
||||||
for my $x (@{$in{pass}}) { print_outin("PASS $x->{role} $x->{flag}", $x); }
|
for my $x (@{$in{constre}}) { print_outin("CONSTRE $x->{role1} $x->{role2}", $x) if chk_role($x->{role1}, $x) & chk_role($x->{role2}, $x) }
|
||||||
|
for my $x (@{$in{constri}}) { print_outin("CONSTRI $x->{role1} $x->{role2}", $x) if chk_role($x->{role1}, $x) & chk_role($x->{role2}, $x) }
|
||||||
for my $x (@{$in{constre}}) { print_outin("CONSTRE $x->{role1} $x->{role2}", $x) if chk_role($x->{role1}, $x) & chk_role($x->{role2}, $x) }
|
|
||||||
|
|
||||||
for my $x (@{$in{constri}}) { print_outin("CONSTRI $x->{role1} $x->{role2}", $x) if chk_role($x->{role1}, $x) & chk_role($x->{role2}, $x) }
|
|
||||||
|
|
||||||
for my $x (@{$in{link}})
|
for my $x (@{$in{link}})
|
||||||
{
|
{
|
||||||
|
next unless chk_role($x->{role},$x);
|
||||||
|
|
||||||
my @agrs = @{ $idx{agr}->{$x->{role} } or [] };
|
my @agrs = @{ $idx{agr}->{$x->{role} } or [] };
|
||||||
my @govs = @{ $idx{gov}->{$x->{role} } or [] };
|
my @govs = @{ $idx{gov}->{$x->{role} } or [] };
|
||||||
|
|
||||||
@ -303,7 +298,7 @@ for my $x (@{$in{link}})
|
|||||||
sub chk_role
|
sub chk_role
|
||||||
{
|
{
|
||||||
($role, $statement_details) = @_;
|
($role, $statement_details) = @_;
|
||||||
if($idx{role}{$role}) { 1; } else { print_error("undefined role", $statement_details); 0; }
|
if($idx{role}{$role} || $idx{long}{$role}) { 1; } else { print_error("undefined role", $statement_details); 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
sub print_outin
|
sub print_outin
|
||||||
|
1556
src/dgp/cmdline.cc
Normal file
1556
src/dgp/cmdline.cc
Normal file
File diff suppressed because it is too large
Load Diff
1
src/dgp/cmdline.d
Normal file
1
src/dgp/cmdline.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
cmdline.o cmdline.d : cmdline.cc cmdline.h
|
52
src/dgp/cmdline.ggo
Normal file
52
src/dgp/cmdline.ggo
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
package "dgp"
|
||||||
|
version "0.1"
|
||||||
|
|
||||||
|
option "grammar" g "Grammar file"
|
||||||
|
string no typestr="filename"
|
||||||
|
|
||||||
|
option "long" l "Long output"
|
||||||
|
flag off
|
||||||
|
|
||||||
|
option "debug" d "Debug mode."
|
||||||
|
flag off
|
||||||
|
|
||||||
|
option "time" - "Print parse time."
|
||||||
|
flag off
|
||||||
|
|
||||||
|
option "info" - "Print info.
|
||||||
|
h - heads d - dependents
|
||||||
|
s - sets
|
||||||
|
c - constraints n - node/arc counts"
|
||||||
|
string no default="h"
|
||||||
|
#section "Common UTT options"
|
||||||
|
|
||||||
|
|
||||||
|
option "input" f "Input file" string no
|
||||||
|
|
||||||
|
option "output" o "Output file" string no
|
||||||
|
|
||||||
|
option "only-fail" - "Print only segments the program failed to process" flag off hidden
|
||||||
|
|
||||||
|
option "no-fail" - "Print only segments the program processed" flag off hidden
|
||||||
|
|
||||||
|
option "copy" c "Copy succesfully processed segments to output" flag off
|
||||||
|
|
||||||
|
option "process" p "Process segments of this type only" string no multiple
|
||||||
|
|
||||||
|
option "select" s "Select only segments containing this field" string no multiple
|
||||||
|
|
||||||
|
option "ignore" S "Select only segments, which doesn't contain this field" string no multiple
|
||||||
|
|
||||||
|
option "output-field" O "Output field name (default: program name)" string no
|
||||||
|
|
||||||
|
option "input-field" I "Input field name (default: the FORM field)" string no multiple
|
||||||
|
|
||||||
|
option "interactive" i "Toggle interactive mode" flag off
|
||||||
|
|
||||||
|
option "config" - "Configuration file" string typestr="FILENAME" no
|
||||||
|
|
||||||
|
option "one-field" 1 "Print all alternative results in one field (creates compact ambiguous annotation)" flag off
|
||||||
|
|
||||||
|
option "one-line" - "Print annotation alternatives as additional fields in the same segment" flag off
|
||||||
|
|
||||||
|
option "language" - "Language." string no
|
294
src/dgp/cmdline.h
Normal file
294
src/dgp/cmdline.h
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
/** @file cmdline.h
|
||||||
|
* @brief The header file for the command line option parser
|
||||||
|
* generated by GNU Gengetopt version 2.22.6
|
||||||
|
* http://www.gnu.org/software/gengetopt.
|
||||||
|
* DO NOT modify this file, since it can be overwritten
|
||||||
|
* @author GNU Gengetopt by Lorenzo Bettini */
|
||||||
|
|
||||||
|
#ifndef CMDLINE_H
|
||||||
|
#define CMDLINE_H
|
||||||
|
|
||||||
|
/* If we use autoconf. */
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h> /* for FILE */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#ifndef CMDLINE_PARSER_PACKAGE
|
||||||
|
/** @brief the program name (used for printing errors) */
|
||||||
|
#define CMDLINE_PARSER_PACKAGE "dgp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CMDLINE_PARSER_PACKAGE_NAME
|
||||||
|
/** @brief the complete program name (used for help and version) */
|
||||||
|
#define CMDLINE_PARSER_PACKAGE_NAME "dgp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CMDLINE_PARSER_VERSION
|
||||||
|
/** @brief the program version */
|
||||||
|
#define CMDLINE_PARSER_VERSION "0.1"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** @brief Where the command line options are stored */
|
||||||
|
struct gengetopt_args_info
|
||||||
|
{
|
||||||
|
const char *help_help; /**< @brief Print help and exit help description. */
|
||||||
|
const char *full_help_help; /**< @brief Print help, including hidden options, and exit help description. */
|
||||||
|
const char *version_help; /**< @brief Print version and exit help description. */
|
||||||
|
char * grammar_arg; /**< @brief Grammar file. */
|
||||||
|
char * grammar_orig; /**< @brief Grammar file original value given at command line. */
|
||||||
|
const char *grammar_help; /**< @brief Grammar file help description. */
|
||||||
|
int long_flag; /**< @brief Long output (default=off). */
|
||||||
|
const char *long_help; /**< @brief Long output help description. */
|
||||||
|
int debug_flag; /**< @brief Debug mode. (default=off). */
|
||||||
|
const char *debug_help; /**< @brief Debug mode. help description. */
|
||||||
|
int time_flag; /**< @brief Print parse time. (default=off). */
|
||||||
|
const char *time_help; /**< @brief Print parse time. help description. */
|
||||||
|
char * info_arg; /**< @brief Print info.
|
||||||
|
h - heads d - dependents
|
||||||
|
s - sets
|
||||||
|
c - constraints n - node/arc counts (default='h'). */
|
||||||
|
char * info_orig; /**< @brief Print info.
|
||||||
|
h - heads d - dependents
|
||||||
|
s - sets
|
||||||
|
c - constraints n - node/arc counts original value given at command line. */
|
||||||
|
const char *info_help; /**< @brief Print info.
|
||||||
|
h - heads d - dependents
|
||||||
|
s - sets
|
||||||
|
c - constraints n - node/arc counts help description. */
|
||||||
|
char * input_arg; /**< @brief Input file. */
|
||||||
|
char * input_orig; /**< @brief Input file original value given at command line. */
|
||||||
|
const char *input_help; /**< @brief Input file help description. */
|
||||||
|
char * output_arg; /**< @brief Output file. */
|
||||||
|
char * output_orig; /**< @brief Output file original value given at command line. */
|
||||||
|
const char *output_help; /**< @brief Output file help description. */
|
||||||
|
int only_fail_flag; /**< @brief Print only segments the program failed to process (default=off). */
|
||||||
|
const char *only_fail_help; /**< @brief Print only segments the program failed to process help description. */
|
||||||
|
int no_fail_flag; /**< @brief Print only segments the program processed (default=off). */
|
||||||
|
const char *no_fail_help; /**< @brief Print only segments the program processed help description. */
|
||||||
|
int copy_flag; /**< @brief Copy succesfully processed segments to output (default=off). */
|
||||||
|
const char *copy_help; /**< @brief Copy succesfully processed segments to output help description. */
|
||||||
|
char ** process_arg; /**< @brief Process segments of this type only. */
|
||||||
|
char ** process_orig; /**< @brief Process segments of this type only original value given at command line. */
|
||||||
|
unsigned int process_min; /**< @brief Process segments of this type only's minimum occurreces */
|
||||||
|
unsigned int process_max; /**< @brief Process segments of this type only's maximum occurreces */
|
||||||
|
const char *process_help; /**< @brief Process segments of this type only help description. */
|
||||||
|
char ** select_arg; /**< @brief Select only segments containing this field. */
|
||||||
|
char ** select_orig; /**< @brief Select only segments containing this field original value given at command line. */
|
||||||
|
unsigned int select_min; /**< @brief Select only segments containing this field's minimum occurreces */
|
||||||
|
unsigned int select_max; /**< @brief Select only segments containing this field's maximum occurreces */
|
||||||
|
const char *select_help; /**< @brief Select only segments containing this field help description. */
|
||||||
|
char ** ignore_arg; /**< @brief Select only segments, which doesn't contain this field. */
|
||||||
|
char ** ignore_orig; /**< @brief Select only segments, which doesn't contain this field original value given at command line. */
|
||||||
|
unsigned int ignore_min; /**< @brief Select only segments, which doesn't contain this field's minimum occurreces */
|
||||||
|
unsigned int ignore_max; /**< @brief Select only segments, which doesn't contain this field's maximum occurreces */
|
||||||
|
const char *ignore_help; /**< @brief Select only segments, which doesn't contain this field help description. */
|
||||||
|
char * output_field_arg; /**< @brief Output field name (default: program name). */
|
||||||
|
char * output_field_orig; /**< @brief Output field name (default: program name) original value given at command line. */
|
||||||
|
const char *output_field_help; /**< @brief Output field name (default: program name) help description. */
|
||||||
|
char ** input_field_arg; /**< @brief Input field name (default: the FORM field). */
|
||||||
|
char ** input_field_orig; /**< @brief Input field name (default: the FORM field) original value given at command line. */
|
||||||
|
unsigned int input_field_min; /**< @brief Input field name (default: the FORM field)'s minimum occurreces */
|
||||||
|
unsigned int input_field_max; /**< @brief Input field name (default: the FORM field)'s maximum occurreces */
|
||||||
|
const char *input_field_help; /**< @brief Input field name (default: the FORM field) help description. */
|
||||||
|
int interactive_flag; /**< @brief Toggle interactive mode (default=off). */
|
||||||
|
const char *interactive_help; /**< @brief Toggle interactive mode help description. */
|
||||||
|
char * config_arg; /**< @brief Configuration file. */
|
||||||
|
char * config_orig; /**< @brief Configuration file original value given at command line. */
|
||||||
|
const char *config_help; /**< @brief Configuration file help description. */
|
||||||
|
int one_field_flag; /**< @brief Print all alternative results in one field (creates compact ambiguous annotation) (default=off). */
|
||||||
|
const char *one_field_help; /**< @brief Print all alternative results in one field (creates compact ambiguous annotation) help description. */
|
||||||
|
int one_line_flag; /**< @brief Print annotation alternatives as additional fields in the same segment (default=off). */
|
||||||
|
const char *one_line_help; /**< @brief Print annotation alternatives as additional fields in the same segment help description. */
|
||||||
|
char * language_arg; /**< @brief Language.. */
|
||||||
|
char * language_orig; /**< @brief Language. original value given at command line. */
|
||||||
|
const char *language_help; /**< @brief Language. help description. */
|
||||||
|
|
||||||
|
unsigned int help_given ; /**< @brief Whether help was given. */
|
||||||
|
unsigned int full_help_given ; /**< @brief Whether full-help was given. */
|
||||||
|
unsigned int version_given ; /**< @brief Whether version was given. */
|
||||||
|
unsigned int grammar_given ; /**< @brief Whether grammar was given. */
|
||||||
|
unsigned int long_given ; /**< @brief Whether long was given. */
|
||||||
|
unsigned int debug_given ; /**< @brief Whether debug was given. */
|
||||||
|
unsigned int time_given ; /**< @brief Whether time was given. */
|
||||||
|
unsigned int info_given ; /**< @brief Whether info was given. */
|
||||||
|
unsigned int input_given ; /**< @brief Whether input was given. */
|
||||||
|
unsigned int output_given ; /**< @brief Whether output was given. */
|
||||||
|
unsigned int only_fail_given ; /**< @brief Whether only-fail was given. */
|
||||||
|
unsigned int no_fail_given ; /**< @brief Whether no-fail was given. */
|
||||||
|
unsigned int copy_given ; /**< @brief Whether copy was given. */
|
||||||
|
unsigned int process_given ; /**< @brief Whether process was given. */
|
||||||
|
unsigned int select_given ; /**< @brief Whether select was given. */
|
||||||
|
unsigned int ignore_given ; /**< @brief Whether ignore was given. */
|
||||||
|
unsigned int output_field_given ; /**< @brief Whether output-field was given. */
|
||||||
|
unsigned int input_field_given ; /**< @brief Whether input-field was given. */
|
||||||
|
unsigned int interactive_given ; /**< @brief Whether interactive was given. */
|
||||||
|
unsigned int config_given ; /**< @brief Whether config was given. */
|
||||||
|
unsigned int one_field_given ; /**< @brief Whether one-field was given. */
|
||||||
|
unsigned int one_line_given ; /**< @brief Whether one-line was given. */
|
||||||
|
unsigned int language_given ; /**< @brief Whether language was given. */
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
/** @brief The additional parameters to pass to parser functions */
|
||||||
|
struct cmdline_parser_params
|
||||||
|
{
|
||||||
|
int override; /**< @brief whether to override possibly already present options (default 0) */
|
||||||
|
int initialize; /**< @brief whether to initialize the option structure gengetopt_args_info (default 1) */
|
||||||
|
int check_required; /**< @brief whether to check that all required options were provided (default 1) */
|
||||||
|
int check_ambiguity; /**< @brief whether to check for options already specified in the option structure gengetopt_args_info (default 0) */
|
||||||
|
int print_errors; /**< @brief whether getopt_long should print an error message for a bad option (default 1) */
|
||||||
|
} ;
|
||||||
|
|
||||||
|
/** @brief the purpose string of the program */
|
||||||
|
extern const char *gengetopt_args_info_purpose;
|
||||||
|
/** @brief the usage string of the program */
|
||||||
|
extern const char *gengetopt_args_info_usage;
|
||||||
|
/** @brief the description string of the program */
|
||||||
|
extern const char *gengetopt_args_info_description;
|
||||||
|
/** @brief all the lines making the help output */
|
||||||
|
extern const char *gengetopt_args_info_help[];
|
||||||
|
/** @brief all the lines making the full help output (including hidden options) */
|
||||||
|
extern const char *gengetopt_args_info_full_help[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The command line parser
|
||||||
|
* @param argc the number of command line options
|
||||||
|
* @param argv the command line options
|
||||||
|
* @param args_info the structure where option information will be stored
|
||||||
|
* @return 0 if everything went fine, NON 0 if an error took place
|
||||||
|
*/
|
||||||
|
int cmdline_parser (int argc, char **argv,
|
||||||
|
struct gengetopt_args_info *args_info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The command line parser (version with additional parameters - deprecated)
|
||||||
|
* @param argc the number of command line options
|
||||||
|
* @param argv the command line options
|
||||||
|
* @param args_info the structure where option information will be stored
|
||||||
|
* @param override whether to override possibly already present options
|
||||||
|
* @param initialize whether to initialize the option structure my_args_info
|
||||||
|
* @param check_required whether to check that all required options were provided
|
||||||
|
* @return 0 if everything went fine, NON 0 if an error took place
|
||||||
|
* @deprecated use cmdline_parser_ext() instead
|
||||||
|
*/
|
||||||
|
int cmdline_parser2 (int argc, char **argv,
|
||||||
|
struct gengetopt_args_info *args_info,
|
||||||
|
int override, int initialize, int check_required);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The command line parser (version with additional parameters)
|
||||||
|
* @param argc the number of command line options
|
||||||
|
* @param argv the command line options
|
||||||
|
* @param args_info the structure where option information will be stored
|
||||||
|
* @param params additional parameters for the parser
|
||||||
|
* @return 0 if everything went fine, NON 0 if an error took place
|
||||||
|
*/
|
||||||
|
int cmdline_parser_ext (int argc, char **argv,
|
||||||
|
struct gengetopt_args_info *args_info,
|
||||||
|
struct cmdline_parser_params *params);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the contents of the option struct into an already open FILE stream.
|
||||||
|
* @param outfile the stream where to dump options
|
||||||
|
* @param args_info the option struct to dump
|
||||||
|
* @return 0 if everything went fine, NON 0 if an error took place
|
||||||
|
*/
|
||||||
|
int cmdline_parser_dump(FILE *outfile,
|
||||||
|
struct gengetopt_args_info *args_info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the contents of the option struct into a (text) file.
|
||||||
|
* This file can be read by the config file parser (if generated by gengetopt)
|
||||||
|
* @param filename the file where to save
|
||||||
|
* @param args_info the option struct to save
|
||||||
|
* @return 0 if everything went fine, NON 0 if an error took place
|
||||||
|
*/
|
||||||
|
int cmdline_parser_file_save(const char *filename,
|
||||||
|
struct gengetopt_args_info *args_info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print the help
|
||||||
|
*/
|
||||||
|
void cmdline_parser_print_help(void);
|
||||||
|
/**
|
||||||
|
* Print the full help (including hidden options)
|
||||||
|
*/
|
||||||
|
void cmdline_parser_print_full_help(void);
|
||||||
|
/**
|
||||||
|
* Print the version
|
||||||
|
*/
|
||||||
|
void cmdline_parser_print_version(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes all the fields a cmdline_parser_params structure
|
||||||
|
* to their default values
|
||||||
|
* @param params the structure to initialize
|
||||||
|
*/
|
||||||
|
void cmdline_parser_params_init(struct cmdline_parser_params *params);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates dynamically a cmdline_parser_params structure and initializes
|
||||||
|
* all its fields to their default values
|
||||||
|
* @return the created and initialized cmdline_parser_params structure
|
||||||
|
*/
|
||||||
|
struct cmdline_parser_params *cmdline_parser_params_create(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the passed gengetopt_args_info structure's fields
|
||||||
|
* (also set default values for options that have a default)
|
||||||
|
* @param args_info the structure to initialize
|
||||||
|
*/
|
||||||
|
void cmdline_parser_init (struct gengetopt_args_info *args_info);
|
||||||
|
/**
|
||||||
|
* Deallocates the string fields of the gengetopt_args_info structure
|
||||||
|
* (but does not deallocate the structure itself)
|
||||||
|
* @param args_info the structure to deallocate
|
||||||
|
*/
|
||||||
|
void cmdline_parser_free (struct gengetopt_args_info *args_info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The config file parser (deprecated version)
|
||||||
|
* @param filename the name of the config file
|
||||||
|
* @param args_info the structure where option information will be stored
|
||||||
|
* @param override whether to override possibly already present options
|
||||||
|
* @param initialize whether to initialize the option structure my_args_info
|
||||||
|
* @param check_required whether to check that all required options were provided
|
||||||
|
* @return 0 if everything went fine, NON 0 if an error took place
|
||||||
|
* @deprecated use cmdline_parser_config_file() instead
|
||||||
|
*/
|
||||||
|
int cmdline_parser_configfile (const char *filename,
|
||||||
|
struct gengetopt_args_info *args_info,
|
||||||
|
int override, int initialize, int check_required);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The config file parser
|
||||||
|
* @param filename the name of the config file
|
||||||
|
* @param args_info the structure where option information will be stored
|
||||||
|
* @param params additional parameters for the parser
|
||||||
|
* @return 0 if everything went fine, NON 0 if an error took place
|
||||||
|
*/
|
||||||
|
int cmdline_parser_config_file (const char *filename,
|
||||||
|
struct gengetopt_args_info *args_info,
|
||||||
|
struct cmdline_parser_params *params);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks that all the required options were specified
|
||||||
|
* @param args_info the structure to check
|
||||||
|
* @param prog_name the name of the program that will be used to print
|
||||||
|
* possible errors
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int cmdline_parser_required (struct gengetopt_args_info *args_info,
|
||||||
|
const char *prog_name);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
#endif /* CMDLINE_H */
|
BIN
src/dgp/cmdline.o
Normal file
BIN
src/dgp/cmdline.o
Normal file
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
#ifndef CONST_HH
|
#ifndef CONST_HH
|
||||||
#define CONST_HH
|
#define CONST_HH
|
||||||
|
|
||||||
#define MAXTYPES 32
|
#define MAXTYPES 64
|
||||||
#define MAXCATS 4096
|
#define MAXCATS 4096
|
||||||
#define MAXFLAGS 64
|
#define MAXFLAGS 64
|
||||||
#define MAXPROPS 16
|
#define MAXPROPS 16
|
||||||
|
BIN
src/dgp/dgp
Executable file
BIN
src/dgp/dgp
Executable file
Binary file not shown.
@ -43,8 +43,8 @@ NodeProp compute_head_prop(NodeProp headprop, const Link& link, list<Boubble*> b
|
|||||||
if(grammar.is_sgl(link.role))
|
if(grammar.is_sgl(link.role))
|
||||||
{
|
{
|
||||||
ret.forbidden.set(link.role);
|
ret.forbidden.set(link.role);
|
||||||
ret.attached.set(link.role);
|
|
||||||
}
|
}
|
||||||
|
ret.attached.set(link.role);
|
||||||
ret.required.reset(link.role);
|
ret.required.reset(link.role);
|
||||||
|
|
||||||
ret.required |= (grammar.constr_include(link.role) & ~ret.attached);
|
ret.required |= (grammar.constr_include(link.role) & ~ret.attached);
|
||||||
@ -154,7 +154,7 @@ int create_new_node(int anc, NodeProp& prop, Edge edge)
|
|||||||
nodelist.push_back(newheadind);
|
nodelist.push_back(newheadind);
|
||||||
copy_links(anc,newheadind);
|
copy_links(anc,newheadind);
|
||||||
create_reverse_links(newheadind);
|
create_reverse_links(newheadind);
|
||||||
if(debug) sgraph.print_node_debug(stderr,"clone",newheadind,anc);
|
if(debug) sgraph.print_node_debug(stderr,"clone",newheadind);
|
||||||
// if(debug) print_sets(newheadind);
|
// if(debug) print_sets(newheadind);
|
||||||
return newheadind;
|
return newheadind;
|
||||||
}
|
}
|
||||||
@ -174,13 +174,17 @@ void connect_left(int h, int d, const Link& l, list<Boubble*>& new_head_boubbles
|
|||||||
if( newd < 0 )
|
if( newd < 0 )
|
||||||
{
|
{
|
||||||
newd = create_new_node(d,new_dep_prop,new_dep_edge);
|
newd = create_new_node(d,new_dep_prop,new_dep_edge);
|
||||||
|
sgraph[newd].set_skip_conditional(sgraph[d]);
|
||||||
sgraph[newd].prop.has_head = true;
|
sgraph[newd].prop.has_head = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Edge new_head_edge(sgraph[newd].edge,newd);
|
Edge new_head_edge(sgraph[newd].edge,newd);
|
||||||
int newh = find_existing_node(sgraph[h].mnode, new_head_prop, new_head_edge);
|
int newh = find_existing_node(sgraph[h].mnode, new_head_prop, new_head_edge);
|
||||||
if( newh < 0 )
|
if( newh < 0 )
|
||||||
newh = create_new_node(h,new_head_prop,new_head_edge);
|
{
|
||||||
|
newh = create_new_node(h,new_head_prop,new_head_edge);
|
||||||
|
sgraph[newh].set_skip_false();
|
||||||
|
}
|
||||||
|
|
||||||
sgraph[newh].deps.push_back(Arc(newd,l.role,h,d));
|
sgraph[newh].deps.push_back(Arc(newd,l.role,h,d));
|
||||||
sgraph[newd].heads.push_back(Arc(newh,l.role,h,d));
|
sgraph[newd].heads.push_back(Arc(newh,l.role,h,d));
|
||||||
@ -188,8 +192,8 @@ void connect_left(int h, int d, const Link& l, list<Boubble*>& new_head_boubbles
|
|||||||
if(debug)
|
if(debug)
|
||||||
{
|
{
|
||||||
sgraph.print_arc(stderr,"link",newh,d,l.role,0);
|
sgraph.print_arc(stderr,"link",newh,d,l.role,0);
|
||||||
sgraph.print_node_debug(stderr,"",newh,h);
|
sgraph.print_node_debug(stderr,"",newh);
|
||||||
sgraph.print_node_debug(stderr,"",newd,d);
|
sgraph.print_node_debug(stderr,"",newd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,18 +208,22 @@ void connect_right(int h, int d, const Link& l, list<Boubble*>& new_head_boubble
|
|||||||
|
|
||||||
Edge new_head_edge(sgraph[h].edge);
|
Edge new_head_edge(sgraph[h].edge);
|
||||||
int newh = -1;
|
int newh = -1;
|
||||||
if(!new_head_prop.forbidden[l.role]) newh = find_existing_node(sgraph[h].mnode, new_head_prop, new_head_edge);
|
// if(!new_head_prop.forbidden[l.role])
|
||||||
|
newh = find_existing_node(sgraph[h].mnode, new_head_prop, new_head_edge);
|
||||||
if( newh < 0 )
|
if( newh < 0 )
|
||||||
{
|
{
|
||||||
newh = create_new_node(h,new_head_prop,new_head_edge);
|
newh = create_new_node(h,new_head_prop,new_head_edge);
|
||||||
|
sgraph[newh].set_skip_conditional(sgraph[h]);
|
||||||
sgraph[newh].prop.visible_as_neighbour = false;
|
sgraph[newh].prop.visible_as_neighbour = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Edge new_dep_edge;
|
Edge new_dep_edge;
|
||||||
int newd = d;
|
int newd = d;
|
||||||
if( ! (new_dep_edge == sgraph[d].edge) || ! (old_dep_prop == new_dep_prop) )
|
// if( ! (new_dep_edge == sgraph[d].edge) || ! (old_dep_prop == new_dep_prop) )
|
||||||
|
if( ! (old_dep_prop == new_dep_prop) )
|
||||||
{
|
{
|
||||||
newd = create_new_node(d,new_dep_prop,new_dep_edge);
|
newd = create_new_node(d,new_dep_prop,new_dep_edge);
|
||||||
|
sgraph[newd].set_skip_conditional(sgraph[d]);
|
||||||
sgraph[newd].prop.has_head = true;
|
sgraph[newd].prop.has_head = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,8 +234,8 @@ void connect_right(int h, int d, const Link& l, list<Boubble*>& new_head_boubble
|
|||||||
if(debug)
|
if(debug)
|
||||||
{
|
{
|
||||||
sgraph.print_arc(stderr,"link",newh,newd,l.role,1);
|
sgraph.print_arc(stderr,"link",newh,newd,l.role,1);
|
||||||
sgraph.print_node_debug(stderr,"",newh,h);
|
sgraph.print_node_debug(stderr,"",newh);
|
||||||
sgraph.print_node_debug(stderr,"",newd,d);
|
sgraph.print_node_debug(stderr,"",newd);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -470,18 +478,24 @@ void dgp1()
|
|||||||
set_initial_constraints(basenode);
|
set_initial_constraints(basenode);
|
||||||
nodelist.push_back(basenode);
|
nodelist.push_back(basenode);
|
||||||
|
|
||||||
if(debug) sgraph.print_node_debug(stderr,"node",basenode,-1); // STDOUT!!!
|
if(debug) sgraph.print_node_debug(stderr,"node",basenode); // STDOUT!!!
|
||||||
// if(debug) print_sets(basenode);
|
// if(debug) print_sets(basenode);
|
||||||
|
|
||||||
list<int>::iterator cursor=processed;
|
list<int>::iterator cursor=processed;
|
||||||
while(++cursor != nodelist.end())
|
while(++cursor != nodelist.end())
|
||||||
{
|
{
|
||||||
if(debug) sgraph.print_node_debug(stderr,"CUR>",*cursor,-1);
|
if(sgraph[*cursor].skip())
|
||||||
try_connect_dependents(*cursor);
|
{
|
||||||
try_connect_heads(*cursor);
|
if(debug) sgraph.print_node_debug(stderr,"SKIP>",*cursor);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(debug) sgraph.print_node_debug(stderr,"CUR>",*cursor);
|
||||||
|
try_connect_dependents(*cursor);
|
||||||
|
try_connect_heads(*cursor);
|
||||||
|
}
|
||||||
processed=cursor;
|
processed=cursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// reverse_links();
|
// reverse_links();
|
||||||
update_sets();
|
update_sets();
|
||||||
|
3
src/dgp/dgp1.d
Normal file
3
src/dgp/dgp1.d
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
dgp1.o dgp1.d : dgp1.cc dgp1.hh grammar.hh const.hh thesymbols.hh symbol.hh \
|
||||||
|
sgraph.hh mgraph.hh ../common/common.h ../common/../lib/const.h \
|
||||||
|
../common/../dgp/cmdline.h boubble.hh global.hh
|
BIN
src/dgp/dgp1.o
Normal file
BIN
src/dgp/dgp1.o
Normal file
Binary file not shown.
1
src/dgp/global.d
Normal file
1
src/dgp/global.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
global.o global.d : global.cc global.hh
|
BIN
src/dgp/global.o
Normal file
BIN
src/dgp/global.o
Normal file
Binary file not shown.
@ -62,7 +62,7 @@ void Grammar::add_category(const char* s)
|
|||||||
void Grammar::add_type(const char* s)
|
void Grammar::add_type(const char* s)
|
||||||
{
|
{
|
||||||
Role::add(s);
|
Role::add(s);
|
||||||
|
if(Role::count() > MAXTYPES) { fprintf(stderr,"ERROR: too many types. Aborting.\n"); exit(1); }
|
||||||
if(lt.size() <= Role::count()) lt.resize(Role::count()+RESIZE_DELTA);
|
if(lt.size() <= Role::count()) lt.resize(Role::count()+RESIZE_DELTA);
|
||||||
if(gt.size() <= Role::count()) gt.resize(Role::count()+RESIZE_DELTA);
|
if(gt.size() <= Role::count()) gt.resize(Role::count()+RESIZE_DELTA);
|
||||||
if(pass.size() <= Role::count()) pass.resize(Role::count()+RESIZE_DELTA);
|
if(pass.size() <= Role::count()) pass.resize(Role::count()+RESIZE_DELTA);
|
||||||
@ -155,15 +155,16 @@ list<Boubble*> Grammar::trigger_boubbles(Cat c, Role r, Dir d)
|
|||||||
|
|
||||||
//====================================================================================================
|
//====================================================================================================
|
||||||
|
|
||||||
Flag parse_flags(const char* s, const char* v)
|
FlagSet parse_flags(const char* s, const char* v)
|
||||||
{
|
{
|
||||||
|
FlagSet ret;
|
||||||
char buf[16][17];
|
char buf[16][17];
|
||||||
int n=sscanf(s,"%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]",
|
int n=sscanf(s,"%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]%[A-Z]%[+-]",
|
||||||
buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9],buf[10],buf[11],buf[12],buf[13],buf[14],buf[15],buf[16]);
|
buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9],buf[10],buf[11],buf[12],buf[13],buf[14],buf[15],buf[16]);
|
||||||
for(int i=2; i<=n; i+=2)
|
for(int i=2; i<=n; i+=2)
|
||||||
if(strcmp(buf[i-1],v)==0)
|
if(strcmp(buf[i-1],v)==0)
|
||||||
return Flag(buf[i-2]);
|
ret.set(Flag(buf[i-2]));
|
||||||
return Flag("NULL");
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -406,18 +407,18 @@ void Grammar::write(ostream& os)
|
|||||||
for(Links::const_iterator l = connect1[c][d].begin(); l != connect1[c][d].end(); l++)
|
for(Links::const_iterator l = connect1[c][d].begin(); l != connect1[c][d].end(); l++)
|
||||||
{
|
{
|
||||||
os << "LINK\t" << c.str();
|
os << "LINK\t" << c.str();
|
||||||
if(l->hflagplus||l->hflagminus)
|
if(l->hflagplus.any()||l->hflagminus.any())
|
||||||
{
|
{
|
||||||
os << ";";
|
os << ";";
|
||||||
if(l->hflagplus) os << (l->hflagplus).str() << "+";
|
for(Flag f=1; f<Flag::count(); +f) if(l->hflagplus.test(f)) os << "f" << f.str() << "+";
|
||||||
if(l->hflagminus) os << (l->hflagminus).str() << "-";
|
for(Flag f=1; f<Flag::count(); +f) if(l->hflagminus.test(f)) os << "f" << f.str() << "-";
|
||||||
}
|
}
|
||||||
os << "\t" << d.str();
|
os << "\t" << d.str();
|
||||||
if(l->dflagplus||l->dflagminus)
|
if(l->dflagplus.any()||l->dflagminus.any())
|
||||||
{
|
{
|
||||||
os << ";";
|
os << ";";
|
||||||
if(l->dflagplus) os << (l->dflagplus).str() << "+";
|
for(Flag f=1; f<Flag::count(); +f) if(l->dflagplus.test(f)) os << "f" << f.str() << "+";
|
||||||
if(l->dflagminus) os << (l->dflagminus).str() << "-";
|
for(Flag f=1; f<Flag::count(); +f) if(l->dflagminus.test(f)) os << "f" << f.str() << "-";
|
||||||
}
|
}
|
||||||
os << "\t" << (l->role).str();
|
os << "\t" << (l->role).str();
|
||||||
for(Prop p=0; p<Prop::count(); ++p)
|
for(Prop p=0; p<Prop::count(); ++p)
|
||||||
|
3
src/dgp/grammar.d
Normal file
3
src/dgp/grammar.d
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
grammar.o grammar.d : grammar.cc grammar.hh const.hh thesymbols.hh symbol.hh \
|
||||||
|
sgraph.hh mgraph.hh ../common/common.h ../common/../lib/const.h \
|
||||||
|
../common/../dgp/cmdline.h boubble.hh global.hh
|
@ -27,25 +27,25 @@ const FlagSet EmptyFlagSet = FlagSet();
|
|||||||
struct Link
|
struct Link
|
||||||
{
|
{
|
||||||
// Link(Role r, Flag dfplus="NULL", Flag dfminus="NULL") : role(r), dflagplus(dfplus), dflagminus(dfminus) { }
|
// Link(Role r, Flag dfplus="NULL", Flag dfminus="NULL") : role(r), dflagplus(dfplus), dflagminus(dfminus) { }
|
||||||
Link(Role r, PropSet ps=EmptyPropSet, Flag hfp="NULL", Flag hfm="NULL", Flag dfp="NULL", Flag dfm="NULL", int lineno=0)
|
Link(Role r, PropSet ps, FlagSet hfp, FlagSet hfm, FlagSet dfp, FlagSet dfm, int lineno=0)
|
||||||
: role(r), props(ps), hflagplus(hfp), hflagminus(hfm), dflagplus(dfp), dflagminus(dfm) { }
|
: role(r), props(ps), hflagplus(hfp), hflagminus(hfm), dflagplus(dfp), dflagminus(dfm) { }
|
||||||
//Link(Role r) : role(r), dflagplus("NULL") { }
|
//Link(Role r) : role(r), dflagplus("NULL") { }
|
||||||
|
|
||||||
Role role;
|
Role role;
|
||||||
Flag hflagplus;
|
FlagSet hflagplus;
|
||||||
Flag hflagminus;
|
FlagSet hflagminus;
|
||||||
Flag dflagplus;
|
FlagSet dflagplus;
|
||||||
Flag dflagminus;
|
FlagSet dflagminus;
|
||||||
PropSet props;
|
PropSet props;
|
||||||
int lineno;
|
int lineno;
|
||||||
|
|
||||||
bool operator<(const Link& l) const
|
bool operator<(const Link& l) const
|
||||||
{
|
{
|
||||||
if(role < l.role) return true;
|
if(role < l.role) return true;
|
||||||
if(hflagplus < l.hflagplus) return true;
|
if(hflagplus.to_ulong() < l.hflagplus.to_ulong()) return true;
|
||||||
if(hflagminus < l.hflagminus) return true;
|
if(hflagminus.to_ulong() < l.hflagminus.to_ulong()) return true;
|
||||||
if(dflagplus < l.dflagplus) return true;
|
if(dflagplus.to_ulong() < l.dflagplus.to_ulong()) return true;
|
||||||
if(dflagminus < l.dflagminus) return true;
|
if(dflagminus.to_ulong() < l.dflagminus.to_ulong()) return true;
|
||||||
if(props.to_ulong() < l.props.to_ulong()) return true;
|
if(props.to_ulong() < l.props.to_ulong()) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -140,7 +140,7 @@ private:
|
|||||||
// void set_connect(Cat c, Cat d, Role r) { connect[c][d].insert(r); }
|
// void set_connect(Cat c, Cat d, Role r) { connect[c][d].insert(r); }
|
||||||
// void set_connect(Cat c, Cat d, Flag f, Role r) { connect1[c][d].insert(Link(r,f)); }
|
// void set_connect(Cat c, Cat d, Flag f, Role r) { connect1[c][d].insert(Link(r,f)); }
|
||||||
|
|
||||||
void set_connect(Cat h, Flag hfp, Flag hfm, Cat d, Flag dfp, Flag dfm, Role r, PropSet ps, int lineno ) { connect1[h][d].insert(Link(r,ps,hfp,hfm,dfp,dfm,lineno)); }
|
void set_connect(Cat h, FlagSet hfp, FlagSet hfm, Cat d, FlagSet dfp, FlagSet dfm, Role r, PropSet ps, int lineno ) { connect1[h][d].insert(Link(r,ps,hfp,hfm,dfp,dfm,lineno)); }
|
||||||
|
|
||||||
void set_include(Role r, Role s) { include[r].set(s); }
|
void set_include(Role r, Role s) { include[r].set(s); }
|
||||||
void set_exclude(Role r, Role s) { exclude[r].set(s); }
|
void set_exclude(Role r, Role s) { exclude[r].set(s); }
|
||||||
@ -161,9 +161,13 @@ list<const Link*> Grammar::connectable2(Cat h, Cat d, FlagSet hfs, FlagSet dfs)
|
|||||||
{
|
{
|
||||||
list<const Link*> ret;
|
list<const Link*> ret;
|
||||||
for(Links::const_iterator l = connect1[h][d].begin(); l != connect1[h][d].end(); l++)
|
for(Links::const_iterator l = connect1[h][d].begin(); l != connect1[h][d].end(); l++)
|
||||||
if( (l->hflagplus==0 || hfs[l->hflagplus]) && (l->hflagminus==0 || !hfs[l->hflagminus]) )
|
{
|
||||||
if( (l->dflagplus==0 || dfs[l->dflagplus]) && (l->dflagminus==0 || !dfs[l->dflagminus]) )
|
// cout << l->hflagplus.count() << " " << l->hflagminus.count() << " " << hfs.count() << endl;
|
||||||
ret.push_back(&(*l));
|
// cout << l->dflagplus.count() << " " << l->dflagminus.count() << " " << dfs.count() << endl;
|
||||||
|
if( ((l->hflagplus & hfs) == l->hflagplus) && (l->hflagminus & hfs).none() )
|
||||||
|
if( ((l->dflagplus & dfs) == l->dflagplus) && (l->dflagminus & dfs).none() )
|
||||||
|
ret.push_back(&(*l));
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIN
src/dgp/grammar.o
Normal file
BIN
src/dgp/grammar.o
Normal file
Binary file not shown.
@ -38,7 +38,7 @@ unsigned int info=0U;
|
|||||||
bool printtimeinfo=false;
|
bool printtimeinfo=false;
|
||||||
|
|
||||||
|
|
||||||
void output();
|
void output(unsigned int);
|
||||||
|
|
||||||
main(int argc, char* argv[])
|
main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
@ -70,6 +70,11 @@ main(int argc, char* argv[])
|
|||||||
case 'd': info|=SGraph::DEPS; break;
|
case 'd': info|=SGraph::DEPS; break;
|
||||||
case 's': info|=SGraph::SETS; break;
|
case 's': info|=SGraph::SETS; break;
|
||||||
case 'c': info|=SGraph::CONSTRAINTS; break;
|
case 'c': info|=SGraph::CONSTRAINTS; break;
|
||||||
|
case 'a': info|=SGraph::ANCESTOR; break;
|
||||||
|
case 'v': info|=SGraph::VIS_AS_NEIGH; break;
|
||||||
|
case 'e': info|=SGraph::EDGE; break;
|
||||||
|
case 'k': info|=SGraph::SKIP; break;
|
||||||
|
case '*': info|=0b1111111111111111U; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gettimeofday(&readgrammar_starttime,NULL);
|
gettimeofday(&readgrammar_starttime,NULL);
|
||||||
@ -114,7 +119,7 @@ main(int argc, char* argv[])
|
|||||||
dgp1(); // parametry!!! MGraph, SGraph, Grammar
|
dgp1(); // parametry!!! MGraph, SGraph, Grammar
|
||||||
|
|
||||||
gettimeofday(&afterparse,NULL);
|
gettimeofday(&afterparse,NULL);
|
||||||
output();
|
output(info);
|
||||||
gettimeofday(&endtime,NULL);
|
gettimeofday(&endtime,NULL);
|
||||||
|
|
||||||
if(printtimeinfo)
|
if(printtimeinfo)
|
||||||
@ -138,7 +143,7 @@ main(int argc, char* argv[])
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void output()
|
void output(unsigned int info)
|
||||||
{
|
{
|
||||||
for(int si=0; si<segcount; ++si)
|
for(int si=0; si<segcount; ++si)
|
||||||
{
|
{
|
||||||
|
3
src/dgp/main.d
Normal file
3
src/dgp/main.d
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
main.o main.d : main.cc global.hh mgraph.hh const.hh thesymbols.hh symbol.hh \
|
||||||
|
../common/common.h ../common/../lib/const.h ../common/../dgp/cmdline.h \
|
||||||
|
sgraph.hh boubble.hh grammar.hh dgp1.hh cmdline.h
|
BIN
src/dgp/main.o
Normal file
BIN
src/dgp/main.o
Normal file
Binary file not shown.
2
src/dgp/mgraph.d
Normal file
2
src/dgp/mgraph.d
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
mgraph.o mgraph.d : mgraph.cc mgraph.hh const.hh thesymbols.hh symbol.hh \
|
||||||
|
../common/common.h ../common/../lib/const.h ../common/../dgp/cmdline.h
|
BIN
src/dgp/mgraph.o
Normal file
BIN
src/dgp/mgraph.o
Normal file
Binary file not shown.
@ -58,11 +58,11 @@ int SGraph::clone(int ancind, NodeProp newprop, Edge edge)
|
|||||||
SNode &newnode=makenewnode();
|
SNode &newnode=makenewnode();
|
||||||
SNode &ancnode = nodes[ancind];
|
SNode &ancnode = nodes[ancind];
|
||||||
|
|
||||||
newnode.prop = newprop;
|
newnode.prop = newprop;
|
||||||
newnode.edge = edge;
|
newnode.edge = edge;
|
||||||
newnode.mnode = ancnode.mnode;
|
newnode.mnode = ancnode.mnode;
|
||||||
|
newnode.anc = ancind;
|
||||||
mgraph[newnode.mnode].snodes.push_back(lastnodeind());
|
mgraph[newnode.mnode].snodes.push_back(lastnodeind());
|
||||||
|
|
||||||
return lastnodeind();
|
return lastnodeind();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,16 +71,16 @@ int SGraph::clone(int ancind, NodeProp newprop, Edge edge)
|
|||||||
int SGraph::print_node(FILE* f, int n, unsigned int info)
|
int SGraph::print_node(FILE* f, int n, unsigned int info)
|
||||||
{
|
{
|
||||||
char buf[50000];
|
char buf[50000];
|
||||||
sprint_node(buf,n,-1,info);
|
sprint_node(buf,n,info);
|
||||||
fputs(buf,f);
|
fputs(buf,f);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
int SGraph::print_node_debug(FILE* f, const char* pref, int n, int anc)
|
int SGraph::print_node_debug(FILE* f, const char* pref, int n)
|
||||||
{
|
{
|
||||||
char buf[50000];
|
char buf[50000];
|
||||||
sprint_node_debug(buf,pref,n,anc);
|
sprint_node_debug(buf,pref,n);
|
||||||
fputs(buf,f);
|
fputs(buf,f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,14 +96,14 @@ void SGraph::print_arc(FILE* f, const char* msg, int head, int dep, Role role, i
|
|||||||
|
|
||||||
//====================================================================================================
|
//====================================================================================================
|
||||||
|
|
||||||
int SGraph::sprint_node(char* buf, int nodeind, int anc, unsigned int info)
|
int SGraph::sprint_node(char* buf, int nodeind, unsigned int info)
|
||||||
{
|
{
|
||||||
char* buf0=buf;
|
char* buf0=buf;
|
||||||
|
|
||||||
SNode &node=nodes[nodeind];
|
SNode &node=nodes[nodeind];
|
||||||
|
|
||||||
buf+=sprintf(buf," dgp:%d",nodeind);
|
buf+=sprintf(buf," dgp:%d",nodeind);
|
||||||
if(anc>=0) buf+=sprintf(buf,"(%d)",anc);
|
if(node.anc>=0 && info&ANCESTOR) buf+=sprintf(buf,"(%d)",node.anc);
|
||||||
buf+=sprintf(buf, saturated(nodeind) ? ";s" : ";u");
|
buf+=sprintf(buf, saturated(nodeind) ? ";s" : ";u");
|
||||||
|
|
||||||
if (info&HEADS || info&DEPS)
|
if (info&HEADS || info&DEPS)
|
||||||
@ -162,13 +162,30 @@ int SGraph::sprint_node(char* buf, int nodeind, int anc, unsigned int info)
|
|||||||
buf+=sprintf(buf,oss.str().c_str());
|
buf+=sprintf(buf,oss.str().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(info&VIS_AS_NEIGH)
|
||||||
|
buf += sprintf(buf,nodes[nodeind].prop.visible_as_neighbour ? "(van=1)" : "(van=0)");
|
||||||
|
|
||||||
|
if(info&EDGE)
|
||||||
|
{
|
||||||
|
buf += sprintf(buf,"(edge=");
|
||||||
|
for(list<int>::iterator e = nodes[nodeind].edge.others().begin(); e != nodes[nodeind].edge.others().end(); e++ )
|
||||||
|
buf += sprintf(buf,"%d ", *e);
|
||||||
|
if(nodes[nodeind].edge.self())
|
||||||
|
buf += sprintf(buf,"* ");
|
||||||
|
buf += sprintf(buf,")");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(info&SKIP)
|
||||||
|
if(nodes[nodeind].skip()) buf += sprintf(buf,"(skip)");
|
||||||
|
|
||||||
|
|
||||||
// buf+=sprintf(buf,"\n");
|
// buf+=sprintf(buf,"\n");
|
||||||
|
|
||||||
return buf-buf0;
|
return buf-buf0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SGraph::sprint_node_debug(char* buf, const char* pref, int n, int anc)
|
int SGraph::sprint_node_debug(char* buf, const char* pref, int n)
|
||||||
{
|
{
|
||||||
char *buf0 = buf;
|
char *buf0 = buf;
|
||||||
buf+=sprintf(buf,"%-8s",pref);
|
buf+=sprintf(buf,"%-8s",pref);
|
||||||
@ -176,14 +193,8 @@ int SGraph::sprint_node_debug(char* buf, const char* pref, int n, int anc)
|
|||||||
buf+=sprintf(buf,";");
|
buf+=sprintf(buf,";");
|
||||||
buf+=sprintf(buf,"%s ",cat(n).str());
|
buf+=sprintf(buf,"%s ",cat(n).str());
|
||||||
while(buf-buf0<40) buf+=sprintf(buf," ");
|
while(buf-buf0<40) buf+=sprintf(buf," ");
|
||||||
buf+=sprint_node(buf,n,anc,HEADS|DEPS|CONSTRAINTS);
|
|
||||||
|
buf+=sprint_node(buf,n,HEADS|DEPS|CONSTRAINTS|ANCESTOR|VIS_AS_NEIGH|EDGE|SKIP);
|
||||||
buf+=sprintf(buf,"/");
|
|
||||||
buf+=sprintf(buf,nodes[n].prop.visible_as_neighbour ? "o" : "x");
|
|
||||||
if(nodes[n].edge.self())
|
|
||||||
buf += sprintf(buf,"* ");
|
|
||||||
for(list<int>::iterator e = nodes[n].edge.others().begin(); e != nodes[n].edge.others().end(); e++ )
|
|
||||||
buf += sprintf(buf,"%d ", *e);
|
|
||||||
|
|
||||||
buf+=sprintf(buf,"\n");
|
buf+=sprintf(buf,"\n");
|
||||||
return buf-buf0;
|
return buf-buf0;
|
||||||
|
3
src/dgp/sgraph.d
Normal file
3
src/dgp/sgraph.d
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
sgraph.o sgraph.d : sgraph.cc sgraph.hh const.hh mgraph.hh thesymbols.hh symbol.hh \
|
||||||
|
../common/common.h ../common/../lib/const.h ../common/../dgp/cmdline.h \
|
||||||
|
boubble.hh global.hh grammar.hh
|
@ -168,9 +168,10 @@ private:
|
|||||||
|
|
||||||
struct SNode
|
struct SNode
|
||||||
{
|
{
|
||||||
SNode() { prop.clear(); }
|
SNode() : _skip(false), anc(-1) { prop.clear(); }
|
||||||
|
|
||||||
int mnode;
|
int mnode;
|
||||||
|
int anc;
|
||||||
|
|
||||||
NodeProp prop;
|
NodeProp prop;
|
||||||
Edge edge;
|
Edge edge;
|
||||||
@ -184,8 +185,21 @@ struct SNode
|
|||||||
vector<Arc> deps;
|
vector<Arc> deps;
|
||||||
|
|
||||||
void clear() { prop.clear(), LV.reset(), LD.reset(), LH.reset(), heads.clear(), deps.clear(); }
|
void clear() { prop.clear(), LV.reset(), LD.reset(), LH.reset(), heads.clear(), deps.clear(); }
|
||||||
bool saturated() { return prop.required.none(); }
|
bool saturated() const { return prop.required.none(); }
|
||||||
|
|
||||||
|
void skip(bool b) { _skip=b; }
|
||||||
|
bool skip() { return _skip; }
|
||||||
|
void set_skip_false() { skip(false); }
|
||||||
|
void set_skip_conditional(const SNode& ancnode)
|
||||||
|
{
|
||||||
|
if(saturated() && !ancnode.saturated()) skip(false);
|
||||||
|
else if((prop.flags & ancnode.prop.flags) != ancnode.prop.flags) skip(false);
|
||||||
|
else skip(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool _skip;
|
||||||
|
|
||||||
// void edge_clear() { edge.clear(); edge_contains_self=false;}
|
// void edge_clear() { edge.clear(); edge_contains_self=false;}
|
||||||
// void edge_set(int i) { edge.clear(); edge_contains_self=false; edge.push_back(i); }
|
// void edge_set(int i) { edge.clear(); edge_contains_self=false; edge.push_back(i); }
|
||||||
@ -204,7 +218,7 @@ class SGraph
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
enum Output { HEADS=1, DEPS=2, SETS=4, CONSTRAINTS=8, BOUBBLES=16 };
|
enum Output { HEADS=1, DEPS=2, SETS=4, CONSTRAINTS=8, BOUBBLES=16, ANCESTOR=32, VIS_AS_NEIGH=64, EDGE=128, SKIP=256 };
|
||||||
|
|
||||||
SGraph(MGraph& mg) : mgraph(mg) { clear(); }
|
SGraph(MGraph& mg) : mgraph(mg) { clear(); }
|
||||||
|
|
||||||
@ -223,7 +237,7 @@ public:
|
|||||||
char* form(int i) const { return mgraph[nodes[i].mnode].form; }
|
char* form(int i) const { return mgraph[nodes[i].mnode].form; }
|
||||||
|
|
||||||
int print_node(FILE* f, int n, unsigned int info);
|
int print_node(FILE* f, int n, unsigned int info);
|
||||||
int print_node_debug(FILE* f, const char* pref, int n, int anc);
|
int print_node_debug(FILE* f, const char* pref, int n);
|
||||||
|
|
||||||
void print_arc(FILE* f, const char* msg, int left, int right, Role role, int dir); // 0 - left, 1 - right
|
void print_arc(FILE* f, const char* msg, int left, int right, Role role, int dir); // 0 - left, 1 - right
|
||||||
|
|
||||||
@ -245,8 +259,8 @@ private:
|
|||||||
int lastnodeind() { return nodes.size()-1; }
|
int lastnodeind() { return nodes.size()-1; }
|
||||||
SNode& makenewnode() { nodes.push_back(SNode()); nodes.back().clear(); return nodes.back(); }
|
SNode& makenewnode() { nodes.push_back(SNode()); nodes.back().clear(); return nodes.back(); }
|
||||||
|
|
||||||
int sprint_node(char* buf, int n, int anc, unsigned int info);
|
int sprint_node(char* buf, int n, unsigned int info);
|
||||||
int sprint_node_debug(char* buf, const char* pref, int n, int anc);
|
int sprint_node_debug(char* buf, const char* pref, int n);
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -332,7 +346,7 @@ inline int LViterator::next()
|
|||||||
{
|
{
|
||||||
if(waydown.empty())
|
if(waydown.empty())
|
||||||
{
|
{
|
||||||
if(debug) fprintf(stderr,"\t\tLViterator(%d)\treturn %d\n",snode,-1);
|
//if(debug) fprintf(stderr,"\t\tLViterator(%d)\treturn %d\n",snode,-1);
|
||||||
return -1; //
|
return -1; //
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -343,7 +357,7 @@ inline int LViterator::next()
|
|||||||
push_ln(k);
|
push_ln(k);
|
||||||
if(wayup.empty())
|
if(wayup.empty())
|
||||||
{
|
{
|
||||||
if(debug) fprintf(stderr,"\t\tLViterator(%d)\treturn %d\n",snode,-1);
|
//if(debug) fprintf(stderr,"\t\tLViterator(%d)\treturn %d\n",snode,-1);
|
||||||
return -1; // k NIE MA POPRZEDNIKÓW, NIE MO¯E TE¯ ZATEM MIEÆ LEWOSTRONNYCH PODRZÊDNIKÓW
|
return -1; // k NIE MA POPRZEDNIKÓW, NIE MO¯E TE¯ ZATEM MIEÆ LEWOSTRONNYCH PODRZÊDNIKÓW
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -351,7 +365,7 @@ inline int LViterator::next()
|
|||||||
int i = wayup.top();
|
int i = wayup.top();
|
||||||
wayup.pop();
|
wayup.pop();
|
||||||
push_lh(i);
|
push_lh(i);
|
||||||
if(debug) fprintf(stderr,"\t\tLViterator(%d)\treturn %d\n",snode,i);
|
//if(debug) fprintf(stderr,"\t\tLViterator(%d)\treturn %d\n",snode,i);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -362,7 +376,7 @@ inline int LViterator::next()
|
|||||||
int i = wayup.top();
|
int i = wayup.top();
|
||||||
wayup.pop();
|
wayup.pop();
|
||||||
push_lh(i);
|
push_lh(i);
|
||||||
if(debug) fprintf(stderr,"\t\tLViterator(%d)\treturn %d\n",snode,i);
|
//if(debug) fprintf(stderr,"\t\tLViterator(%d)\treturn %d\n",snode,i);
|
||||||
return i;
|
return i;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -374,7 +388,7 @@ inline void LViterator::push_ld(int i)
|
|||||||
if(mgraph[sgraph[a->dst].mnode].pos < mgraph[sgraph[i].mnode].pos)
|
if(mgraph[sgraph[a->dst].mnode].pos < mgraph[sgraph[i].mnode].pos)
|
||||||
{
|
{
|
||||||
push(waydown,a->dst);
|
push(waydown,a->dst);
|
||||||
if(debug) fprintf(stderr,"\t\tLViterator(%d)\tPUSH_LD waydown %d\n",snode,a->dst);
|
//if(debug) fprintf(stderr,"\t\tLViterator(%d)\tPUSH_LD waydown %d\n",snode,a->dst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,7 +399,7 @@ inline void LViterator::push_lh(int i)
|
|||||||
if(mgraph[sgraph[a->dst].mnode].pos < mgraph[sgraph[i].mnode].pos)
|
if(mgraph[sgraph[a->dst].mnode].pos < mgraph[sgraph[i].mnode].pos)
|
||||||
{
|
{
|
||||||
push(wayup,a->dst);
|
push(wayup,a->dst);
|
||||||
if(debug) fprintf(stderr,"\t\tLViterator(%d)\tPUSH_LH wayup %d\n",snode,a->dst);
|
//if(debug) fprintf(stderr,"\t\tLViterator(%d)\tPUSH_LH wayup %d\n",snode,a->dst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,7 +413,7 @@ inline void LViterator::push_ln(int i)
|
|||||||
if(sgraph[*sp].prop.visible_as_neighbour || !strict)
|
if(sgraph[*sp].prop.visible_as_neighbour || !strict)
|
||||||
{
|
{
|
||||||
push(wayup,*sp);
|
push(wayup,*sp);
|
||||||
if(debug) fprintf(stderr,"\t\tLViterator(%d)\tPUSH_LN wayup %d\n",snode, *sp);
|
//if(debug) fprintf(stderr,"\t\tLViterator(%d)\tPUSH_LN wayup %d\n",snode, *sp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -433,14 +447,14 @@ inline int LNiterator::next()
|
|||||||
{
|
{
|
||||||
if(wayup.empty())
|
if(wayup.empty())
|
||||||
{
|
{
|
||||||
if(debug) fprintf(stderr,"\t\tLNiterator(%d)\treturn %d\n",snode,-1);
|
//if(debug) fprintf(stderr,"\t\tLNiterator(%d)\treturn %d\n",snode,-1);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int i = wayup.top();
|
int i = wayup.top();
|
||||||
wayup.pop();
|
wayup.pop();
|
||||||
if(debug) fprintf(stderr,"\t\tLNiterator(%d)\treturn %d\n",snode,i);
|
//if(debug) fprintf(stderr,"\t\tLNiterator(%d)\treturn %d\n",snode,i);
|
||||||
return i;
|
return i;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -454,7 +468,7 @@ inline void LNiterator::push_ln(int i)
|
|||||||
for(vector<int>::iterator sp = spredecessors.begin(); sp != spredecessors.end(); ++sp )
|
for(vector<int>::iterator sp = spredecessors.begin(); sp != spredecessors.end(); ++sp )
|
||||||
{
|
{
|
||||||
wayup.push(*sp);
|
wayup.push(*sp);
|
||||||
if(debug) fprintf(stderr,"\t\tLNiterator(%d)\tPUSH %d\n",snode,-1);
|
//if(debug) fprintf(stderr,"\t\tLNiterator(%d)\tPUSH %d\n",snode,-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -504,7 +518,7 @@ inline void LHiterator::push_lh(int i)
|
|||||||
if(mgraph[sgraph[a->dst].mnode].pos < mgraph[sgraph[i].mnode].pos)
|
if(mgraph[sgraph[a->dst].mnode].pos < mgraph[sgraph[i].mnode].pos)
|
||||||
{
|
{
|
||||||
wayup.push(a->dst);
|
wayup.push(a->dst);
|
||||||
if(debug) fprintf(stderr,"\t\tLHiterator(%d)\tPUSH %d\n",snode,-1);
|
//if(debug) fprintf(stderr,"\t\tLHiterator(%d)\tPUSH %d\n",snode,-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -552,7 +566,7 @@ inline void LDiterator::push_ld(int i)
|
|||||||
if(mgraph[sgraph[a->dst].mnode].pos < mgraph[sgraph[snode].mnode].pos)
|
if(mgraph[sgraph[a->dst].mnode].pos < mgraph[sgraph[snode].mnode].pos)
|
||||||
{
|
{
|
||||||
waydown.push(a->dst);
|
waydown.push(a->dst);
|
||||||
if(debug) fprintf(stderr,"\t\tLDiterator(%d)\tPUSH %d\n",snode,-1);
|
//if(debug) fprintf(stderr,"\t\tLDiterator(%d)\tPUSH %d\n",snode,-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIN
src/dgp/sgraph.o
Normal file
BIN
src/dgp/sgraph.o
Normal file
Binary file not shown.
1
src/dgp/symbol.d
Normal file
1
src/dgp/symbol.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
symbol.o symbol.d : symbol.cc symbol.hh
|
BIN
src/dgp/symbol.o
Normal file
BIN
src/dgp/symbol.o
Normal file
Binary file not shown.
16
src/rat/Makefile
Normal file
16
src/rat/Makefile
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
include ../../config.mak
|
||||||
|
rat:
|
||||||
|
|
||||||
|
.PHONY: install
|
||||||
|
install:
|
||||||
|
ifdef BIN_DIR
|
||||||
|
install -m 0755 rat $(BIN_DIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: uninstall
|
||||||
|
uninstall:
|
||||||
|
ifdef BIN_DIR
|
||||||
|
rm $(BIN_DIR)/rat
|
||||||
|
endif
|
||||||
|
|
||||||
|
clean:
|
43
src/rat/rat
Executable file
43
src/rat/rat
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
# encoding: UTF-8
|
||||||
|
|
||||||
|
require 'attr'
|
||||||
|
require 'getoptlong'
|
||||||
|
|
||||||
|
Help = <<END
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
rmattr [OPTION]... infile
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--help -h Help.
|
||||||
|
--output=PATH -o PATH Automatic choice.
|
||||||
|
--multi -m Put all trees to separate latex files.
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
$rm = []
|
||||||
|
$pos = nil
|
||||||
|
|
||||||
|
opts = GetoptLong.new(
|
||||||
|
[ "--attr", "-a", GetoptLong::REQUIRED_ARGUMENT ],
|
||||||
|
[ "--pos", "-p", GetoptLong::REQUIRED_ARGUMENT ],
|
||||||
|
[ "--help", "-h", GetoptLong::NO_ARGUMENT ]
|
||||||
|
)
|
||||||
|
|
||||||
|
opts.each do |o,a|
|
||||||
|
case o
|
||||||
|
when '--attr'
|
||||||
|
$rm << a.to_sym
|
||||||
|
when '--pos'
|
||||||
|
$pos = a
|
||||||
|
when '--help'
|
||||||
|
print Help
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
while l=gets
|
||||||
|
print l.gsub(/#{$pos or POS}\/#{AVLIST}/){|c| Cat.new(c) - $rm }
|
||||||
|
end
|
||||||
|
|
65
src/tre/tre
65
src/tre/tre
@ -144,12 +144,14 @@ def tre(input)
|
|||||||
$pref = "#{seg[1]} #{seg[2]} SYN *"
|
$pref = "#{seg[1]} #{seg[2]} SYN *"
|
||||||
parsegraph(nodes)
|
parsegraph(nodes)
|
||||||
set_ord #(0...(nodes.length)).each{|i| set_distance_from_i i }
|
set_ord #(0...(nodes.length)).each{|i| set_distance_from_i i }
|
||||||
printgraph if $DEBUG
|
printgraph_debug if $DEBUG
|
||||||
if $GRAPH
|
if $GRAPH
|
||||||
if $FORMAT =~ /c/
|
if $FORMAT =~ /c/
|
||||||
printconll
|
printconll
|
||||||
|
elsif $FORMAT =~ /dot/
|
||||||
|
printdot
|
||||||
else
|
else
|
||||||
printground
|
printgraph
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
thetrees = $FOREST ? genforest : gentrees
|
thetrees = $FOREST ? genforest : gentrees
|
||||||
@ -298,22 +300,6 @@ def par_output(tree)
|
|||||||
output_left = ldeps.map{|arc| ' (' + (($INFO =~ /l/) ? arc[2].upcase : '') + par_output([arc[1],arcs]) + ')'}.join
|
output_left = ldeps.map{|arc| ' (' + (($INFO =~ /l/) ? arc[2].upcase : '') + par_output([arc[1],arcs]) + ')'}.join
|
||||||
output_right = rdeps.map{|arc| ' (' + (($INFO =~ /l/) ? arc[2].upcase : '') + par_output([arc[1],arcs]) + ')'}.join
|
output_right = rdeps.map{|arc| ' (' + (($INFO =~ /l/) ? arc[2].upcase : '') + par_output([arc[1],arcs]) + ')'}.join
|
||||||
|
|
||||||
# for arc in ldeps
|
|
||||||
# output += ' ('
|
|
||||||
# output += arc[2].upcase if $INFO =~ /l/
|
|
||||||
# output += par_output(arc[1],arcs)
|
|
||||||
# output += ')'
|
|
||||||
# end
|
|
||||||
|
|
||||||
# print ' ',nodeinfo(root)
|
|
||||||
|
|
||||||
# for arc in rdeps
|
|
||||||
# print ' ('
|
|
||||||
# print arc[2].upcase if $INFO =~ /l/
|
|
||||||
# printpar(arc[1],arcs)
|
|
||||||
# print ')'
|
|
||||||
# end
|
|
||||||
|
|
||||||
output_left + ' ' + nodeinfo(root) + output_right
|
output_left + ' ' + nodeinfo(root) + output_right
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -372,21 +358,10 @@ end
|
|||||||
|
|
||||||
#NOWE-START
|
#NOWE-START
|
||||||
|
|
||||||
def successors i
|
def successors i; $succ.select{|e| e[0]==i}.map{|e| e[1]} end
|
||||||
$succ.select{|e| e[0]==i}.map{|e| e[1]}
|
def predecessors i; $succ.select{|e| e[1]==i}.map{|e| e[0]} end
|
||||||
end
|
def start_nodes; $succ.map{|e| e[1]}.map{|e| predecessors(e)}.uniq.map{|e| e[0]} end
|
||||||
|
def end_nodes; $succ.map{|e| e[0]}.map{|e| successors(e)}.uniq.map{|e| e[0]} end
|
||||||
def predecessors i
|
|
||||||
$succ.select{|e| e[1]==i}.map{|e| e[0]}
|
|
||||||
end
|
|
||||||
|
|
||||||
def start_nodes
|
|
||||||
$succ.map{|e| e[1]}.map{|e| predecessors(e)}.uniq.map{|e| e[0]}
|
|
||||||
end
|
|
||||||
|
|
||||||
def end_nodes
|
|
||||||
$succ.map{|e| e[0]}.map{|e| successors(e)}.uniq.map{|e| e[0]}
|
|
||||||
end
|
|
||||||
|
|
||||||
def set_ord
|
def set_ord
|
||||||
positions = $pos.uniq.sort
|
positions = $pos.uniq.sort
|
||||||
@ -496,17 +471,21 @@ def buildL(min,max,tree)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def printgraph()
|
def printgraph_debug
|
||||||
print "N: #{$n}\n"
|
print "N: #{$n}\n"
|
||||||
|
print "FORM: #{$form.inspect}\n"
|
||||||
|
print "POS: #{$pos.inspect}\n"
|
||||||
print "SAT: #{set_to_s($sat)}\n"
|
print "SAT: #{set_to_s($sat)}\n"
|
||||||
print "SUCC: #{rel_to_s($succ)}\n"
|
print "SUCC: #{rel_to_s($succ)}\n"
|
||||||
print "VIS: #{rel_to_s($vis)}\n"
|
print "VIS: #{rel_to_s($vis)}\n"
|
||||||
print "LHS: #{rel_to_s($lhs)}\n"
|
print "LHS: #{rel_to_s($lhs)}\n"
|
||||||
print "ARCS: #{arcs_to_s($arcs)}\n"
|
print "ARCS: #{arcs_to_s($arcs)}\n"
|
||||||
|
puts "ORD: #{$ord.inspect}"
|
||||||
|
puts "ORD1: #{$ord1.inspect}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def printground
|
def printgraph
|
||||||
for i in 1...($form.length-1)
|
for i in 1...($form.length-1)
|
||||||
print "#{$ord1[i]} #{$form[i]} #{$lem[i]} "
|
print "#{$ord1[i]} #{$form[i]} #{$lem[i]} "
|
||||||
print $arcs.select{|a| $ord1[$gphid[a[1]]] == $ord1[i]}.map{|a| "#{a[2]}:#{$ord1[$gphid[a[0]]]}"}.sort.uniq.join(' ')
|
print $arcs.select{|a| $ord1[$gphid[a[1]]] == $ord1[i]}.map{|a| "#{a[2]}:#{$ord1[$gphid[a[0]]]}"}.sort.uniq.join(' ')
|
||||||
@ -514,6 +493,22 @@ def printground
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def printdot
|
||||||
|
# printgraph_debug
|
||||||
|
dgprange = 1..($n-2)
|
||||||
|
puts "digraph g {"
|
||||||
|
puts "rankdir=LR"
|
||||||
|
words = $form[1..-2].uniq
|
||||||
|
puts "{ " + (0...(words.length)).map{|i| "w#{i}"}.join(" -> ") + " }"
|
||||||
|
(0...(words.length)).each{|i| puts "w#{i} [label=\"#{words[i]}\"]"}
|
||||||
|
dgprange.each{|i| puts "#{i} [label=< <b>#{i}.#{nodeinfo(i)} </b> >]"}
|
||||||
|
$arcs.each{|a| puts "#{a[0]} -> #{a[1]} [label=\"#{a[2]}\"]" }
|
||||||
|
for wi in (0...(words.length))
|
||||||
|
puts "{ rank=same; w#{wi}; " + dgprange.select{|i| $ord[i]==wi}.map{|x| " #{x};"}.join + " }"
|
||||||
|
end
|
||||||
|
puts "}"
|
||||||
|
end
|
||||||
|
|
||||||
def printconll
|
def printconll
|
||||||
for i in 1...($form.length-1)
|
for i in 1...($form.length-1)
|
||||||
id = $ord1[i]
|
id = $ord1[i]
|
||||||
|
Loading…
Reference in New Issue
Block a user