From a15e59b825ae3aa1d5f3555afaf4cdbf22beda62 Mon Sep 17 00:00:00 2001 From: Tomasz Obrebski Date: Tue, 13 Mar 2012 17:07:34 +0100 Subject: [PATCH] =?UTF-8?q?dodana=20opcja=20--time=20w=20dgp,=20poprawione?= =?UTF-8?q?=20przesy=B3anie=20b=B1belk=F3w,=20obsluga=20&LEFT,=20&RIGHT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- share/cats.dgc | 504 ------------------------------------- share/gram.dgc | 545 +++++++++++++++++++++++++++++++--------- src/dgp/cmdline_dgp.ggo | 10 +- src/dgp/dgp1.cc | 28 ++- src/dgp/grammar.cc | 2 + src/dgp/grammar.hh | 26 +- src/dgp/main.cc | 23 +- src/dgp/sgraph.cc | 2 +- 8 files changed, 497 insertions(+), 643 deletions(-) delete mode 100644 share/cats.dgc diff --git a/share/cats.dgc b/share/cats.dgc deleted file mode 100644 index 9248e00..0000000 --- a/share/cats.dgc +++ /dev/null @@ -1,504 +0,0 @@ -ADJ/CaDcGapNs -ADJ/CaDcGiNs -ADJ/CaDcGpNp -ADJ/CaDpGapNs -ADJ/CaDpGiNs -ADJ/CaDpGpNp -ADJ/CaDsGapNs -ADJ/CaDsGiNs -ADJ/CaDsGpNp -ADJ/CaiDcGfNs -ADJ/CaiDpGfNs -ADJ/CaiDsGfNs -ADJ/CanvDcGafinNp -ADJ/CanvDcGnNs -ADJ/CanvDpGafinNp -ADJ/CanvDpGfNs -ADJ/CanvDpGnNs -ADJ/CanvDsGafinNp -ADJ/CanvDsGnNs -ADJ/CavDcGfNs -ADJ/CavDsGfNs -ADJ/CdDcGainpNs -ADJ/CdDcNp -ADJ/CdDpGainpNs -ADJ/CdDpNp -ADJ/CdDsGainpNs -ADJ/CdDsNp -ADJ/CdglDcGfNs -ADJ/CdglDpGfNs -ADJ/CdglDsGfNs -ADJ/CgDcGainpNs -ADJ/CgDpGainpNs -ADJ/CgDsGainpNs -ADJ/CglDcNp -ADJ/CglDpNp -ADJ/CglDsNp -ADJ/CiDcNp -ADJ/CiDpNp -ADJ/CiDsNp -ADJ/CilDcGainpNs -ADJ/CilDpGainpNs -ADJ/CilDsGainpNs -ADJ/CnvDcGaipNs -ADJ/CnvDcGpNp -ADJ/CnvDpGaipNs -ADJ/CnvDpGpNp -ADJ/CnvDsGaipNs -ADJ/CnvDsGpNp -ADJNUM/CaGapNs -ADJNUM/CaGiNs -ADJNUM/CaGpNp -ADJNUM/CaiGfNs -ADJNUM/CanvGafinNp -ADJNUM/CanvGnNs -ADJNUM/CdGainpNs -ADJNUM/CdglGfNs -ADJNUM/CdNp -ADJNUM/CgGainpNs -ADJNUM/CglNp -ADJNUM/CilGainpNs -ADJNUM/CiNp -ADJNUM/CnvGaipNs -ADJNUM/CnvGfNs -ADJNUM/CnvGpNp -ADJPAP/CaGapNs -ADJPAP/CaGiNs -ADJPAP/CaGpNp -ADJPAP/CaiGfNs -ADJPAP/CanvGafinNp -ADJPAP/CanvGnNs -ADJPAP/CdGainpNs -ADJPAP/CdglGfNs -ADJPAP/CdNp -ADJPAP/CgGainpNs -ADJPAP/CglNp -ADJPAP/CilGainpNs -ADJPAP/CiNp -ADJPAP/CnvGaipNs -ADJPAP/CnvGfNs -ADJPAP/CnvGpNp -ADJPP/CaGapNs -ADJPP/CaGiNs -ADJPP/CaGpNp -ADJPP/CaiGfNs -ADJPP/CanvGafinNp -ADJPP/CanvGnNs -ADJPP/CdGainpNs -ADJPP/CdglGfNs -ADJPP/CdNp -ADJPP/CgGainpNs -ADJPP/CglNp -ADJPP/CilGainpNs -ADJPP/CiNp -ADJPP/CnvGaipNs -ADJPP/CnvGfNs -ADJPP/CnvGpNp -ADJPRO/CaGapNs -ADJPRO/CaGiNs -ADJPRO/CaGpNp -ADJPRO/CaiGfNs -ADJPRO/CanvGafinNp -ADJPRO/CanvGnNs -ADJPRO/CdGainpNs -ADJPRO/CdglGfNs -ADJPRO/CdNp -ADJPRO/CgGainpNs -ADJPRO/CglNp -ADJPRO/CilGainpNs -ADJPRO/CiNp -ADJPRO/CnvGaipNs -ADJPRO/CnvGfNs -ADJPRO/CnvGpNp -ADJPRP/CaGapNs -ADJPRP/CaGiNs -ADJPRP/CaGpNp -ADJPRP/CaiGfNs -ADJPRP/CanvGafinNp -ADJPRP/CanvGnNs -ADJPRP/CdGainpNs -ADJPRP/CdglGfNs -ADJPRP/CdNp -ADJPRP/CgGainpNs -ADJPRP/CglNp -ADJPRP/CilGainpNs -ADJPRP/CiNp -ADJPRP/CnvGaipNs -ADJPRP/CnvGfNs -ADJPRP/CnvGpNp -ADVANP -ADVANP/C -ADV/Dc -ADV/Dp -ADV/Ds -ADVNUM -ADVPRO -ADVPRO/C -ADVPRP -ADVPRP/C -APP -BYC/GafinMcNpP1Vp -BYC/GafinMcNpP2Vp -BYC/GafinMcNpP3Vp -BYC/GafinMdNpP1TaVp -BYC/GafinMdNpP2TaVp -BYC/GafinMdNpP3TaVp -BYC/GaipMcNsP1Vp -BYC/GaipMcNsP2Vp -BYC/GaipMcNsP3Vp -BYC/GaipMdNsP1TaVp -BYC/GaipMdNsP2TaVp -BYC/GaipMdNsP3TaVp -BYC/GfMcNsP1Vp -BYC/GfMcNsP2Vp -BYC/GfMcNsP3Vp -BYC/GfMdNsP1TaVp -BYC/GfMdNsP2TaVp -BYC/GfMdNsP3TaVp -BYC/GnMcNsP3Vp -BYC/GnMdNsP3TaVp -BYC/GpMcNpP1Vp -BYC/GpMcNpP2Vp -BYC/GpMcNpP3Vp -BYC/GpMdNpP1TaVp -BYC/GpMdNpP2TaVp -BYC/GpMdNpP3TaVp -BYC/MdNpP1TfrVp -BYC/MdNpP2TfrVp -BYC/MdNpP3TfrVp -BYC/MdNsP1TfrVp -BYC/MdNsP2TfrVp -BYC/MdNsP3TfrVp -BYC/MiNpP1Vp -BYC/MiNpP2Vp -BYC/MiNsP2Vp -BYC/Vb -CONJ -EXCL -N/Ca -N/CaGaNp -N/CaGaNs -N/CaGfNp -N/CaGfNs -N/CaGiNp -N/CaGiNs -N/CaGnNp -N/CaGnNs -N/CaG?Np -N/CaG?Ns -N/CaGpNp -N/CaGpNs -N/CaNp -N/Cd -N/CdGaNp -N/CdGaNs -N/CdGfNp -N/CdGfNs -N/CdGiNp -N/CdGiNs -N/CdGnNp -N/CdGnNs -N/CdG?Np -N/CdG?Ns -N/CdGpNp -N/CdGpNs -N/CdNp -N/Cg -N/CgGaNp -N/CgGaNs -N/CgGfNp -N/CgGfNs -N/CgGiNp -N/CgGiNs -N/CgGnNp -N/CgGnNs -N/CgG?Np -N/CgG?Ns -N/CgGpNp -N/CgGpNs -N/CgNp -N/Ci -N/CiGaNp -N/CiGaNs -N/CiGfNp -N/CiGfNs -N/CiGiNp -N/CiGiNs -N/CiGnNp -N/CiGnNs -N/CiG?Np -N/CiG?Ns -N/CiGpNp -N/CiGpNs -N/CiNp -N/Cl -N/ClGaNp -N/ClGaNs -N/ClGfNp -N/ClGfNs -N/ClGiNp -N/ClGiNs -N/ClGnNp -N/ClGnNs -N/ClG?Np -N/ClG?Ns -N/ClGpNp -N/ClGpNs -N/ClNp -N/Cn -N/CnGaNp -N/CnGaNs -N/CnGfNp -N/CnGfNs -N/CnGiNp -N/CnGiNs -N/CnGnNp -N/CnGnNs -N/CnG?Np -N/CnG?Ns -N/CnGpNp -N/CnGpNs -N/CnNp -N/CvGaNp -N/CvGaNs -N/CvGfNp -N/CvGfNs -N/CvGiNp -N/CvGiNs -N/CvGnNp -N/CvGnNs -N/CvG?Np -N/CvG?Ns -N/CvGpNp -N/CvGpNs -N/CvNp -NPRO/Ca -NPRO/CaGafinNp -NPRO/CaGaipNs -NPRO/CaGfNs -NPRO/CaGnNs -NPRO/CaGpNp -NPRO/CaGpNs -NPRO/CaNp -NPRO/CaNs -NPRO/Cd -NPRO/CdGafinNp -NPRO/CdGaipNs -NPRO/CdGfNs -NPRO/CdGnNs -NPRO/CdGpNp -NPRO/CdGpNs -NPRO/CdNp -NPRO/CdNs -NPRO/Cg -NPRO/CgGafinNp -NPRO/CgGaipNs -NPRO/CgGfNs -NPRO/CgGnNs -NPRO/CgGpNp -NPRO/CgGpNs -NPRO/CgNp -NPRO/CgNs -NPRO/Ci -NPRO/CiGafinNp -NPRO/CiGaipNs -NPRO/CiGfNs -NPRO/CiGnNs -NPRO/CiGpNp -NPRO/CiGpNs -NPRO/CiNp -NPRO/CiNs -NPRO/Cl -NPRO/ClGafinNp -NPRO/ClGaipNs -NPRO/ClGfNs -NPRO/ClGnNs -NPRO/ClGpNp -NPRO/ClGpNs -NPRO/ClNp -NPRO/ClNs -NPRO/CnGafinNp -NPRO/CnGaipNs -NPRO/CnGfNs -NPRO/CnGnNs -NPRO/CnGpNp -NPRO/CnGpNs -NPRO/CnNp -NPRO/CnNs -NUMCOL/Ca -NUMCOL/Cd -NUMCOL/Cg -NUMCOL/Ci -NUMCOL/Cl -NUMCOL/Cn -NUMCRD/Ca -NUMCRD/CaGafin -NUMCRD/CaGain -NUMCRD/CaGf -NUMCRD/CaGp -NUMCRD/Cd -NUMCRD/Cg -NUMCRD/Ci -NUMCRD/CiGainp -NUMCRD/CiGf -NUMCRD/Cl -NUMCRD/Cn -NUMCRD/CnGafin -NUMCRD/CnGain -NUMCRD/CnGf -NUMCRD/CnGp -NUMORD/CaGapNs -NUMORD/CaGiNs -NUMORD/CaGpNp -NUMORD/CaiGfNs -NUMORD/CanvGafinNp -NUMORD/CanvGnNs -NUMORD/CdGainpNs -NUMORD/CdglGfNs -NUMORD/CdNp -NUMORD/CgGainpNs -NUMORD/CglNp -NUMORD/CilGainpNs -NUMORD/CiNp -NUMORD/CnvGaipNs -NUMORD/CnvGfNs -NUMORD/CnvGpNp -NUMPAR -NUMPAR/Dc -NUMPAR/Dp -NUMPAR/Ds -NUMPAR/GainpNs -NUMPAR/GfNs -NUMPAR/Ns -NV/Ca -NV/Cd -NV/Cg -NV/Ci -NV/Cl -NV/Cn -ONO -P -PART -P/Ca -P/Cag -P/Cagi -P/Cai -P/Cal -P/Cd -P/Cdg -P/Cg -P/Cgi -P/Cl -PPRO/C -V/AiGafinMcNpP1Vp -V/AiGafinMcNpP2Vp -V/AiGafinMcNpP3Vp -V/AiGafinMdNpP1TaVp -V/AiGafinMdNpP2TaVp -V/AiGafinMdNpP3TaVp -V/AiGaipMcNsP1Vp -V/AiGaipMcNsP2Vp -V/AiGaipMcNsP3Vp -V/AiGaipMdNsP1TaVp -V/AiGaipMdNsP2TaVp -V/AiGaipMdNsP3TaVp -V/AiGfMcNsP1Vp -V/AiGfMcNsP2Vp -V/AiGfMcNsP3Vp -V/AiGfMdNsP1TaVp -V/AiGfMdNsP2TaVp -V/AiGfMdNsP3TaVp -V/AiGnMcNsP3Vp -V/AiGnMdNsP3TaVp -V/AiGpMcNpP1Vp -V/AiGpMcNpP2Vp -V/AiGpMcNpP3Vp -V/AiGpMdNpP1TaVp -V/AiGpMdNpP2TaVp -V/AiGpMdNpP3TaVp -V/AiMdNpP1TfrVp -V/AiMdNpP2TfrVp -V/AiMdNpP3TfrVp -V/AiMdNsP1TfrVp -V/AiMdNsP2TfrVp -V/AiMdNsP3TfrVp -V/AiMiNpP1Vp -V/AiMiNpP2Vp -V/AiMiNsP2Vp -V/AiTaVi -V/AiVb -V/ApGafinMcNpP1Vp -V/ApGafinMcNpP2Vp -V/ApGafinMcNpP3Vp -V/ApGafinMdNpP1TaVp -V/ApGafinMdNpP2TaVp -V/ApGafinMdNpP3TaVp -V/ApGaipMcNsP1Vp -V/ApGaipMcNsP2Vp -V/ApGaipMcNsP3Vp -V/ApGaipMdNsP1TaVp -V/ApGaipMdNsP2TaVp -V/ApGaipMdNsP3TaVp -V/ApGfMcNsP1Vp -V/ApGfMcNsP2Vp -V/ApGfMcNsP3Vp -V/ApGfMdNsP1TaVp -V/ApGfMdNsP2TaVp -V/ApGfMdNsP3TaVp -V/ApGnMcNsP3Vp -V/ApGnMdNsP3TaVp -V/ApGpMcNpP1Vp -V/ApGpMcNpP2Vp -V/ApGpMcNpP3Vp -V/ApGpMdNpP1TaVp -V/ApGpMdNpP2TaVp -V/ApGpMdNpP3TaVp -V/ApMdNpP1TfrVp -V/ApMdNpP2TfrVp -V/ApMdNpP3TfrVp -V/ApMdNsP1TfrVp -V/ApMdNsP2TfrVp -V/ApMdNsP3TfrVp -V/ApMiNpP1Vp -V/ApMiNpP2Vp -V/ApMiNsP2Vp -V/ApTaVi -V/ApVb -V/GafinMcNpP1Vp -V/GafinMcNpP2Vp -V/GafinMcNpP3Vp -V/GafinMdNpP1TaVp -V/GafinMdNpP2TaVp -V/GafinMdNpP3TaVp -V/GaipMcNsP1Vp -V/GaipMcNsP2Vp -V/GaipMcNsP3Vp -V/GaipMdNsP1TaVp -V/GaipMdNsP2TaVp -V/GaipMdNsP3TaVp -V/GfMcNsP1Vp -V/GfMcNsP2Vp -V/GfMcNsP3Vp -V/GfMdNsP1TaVp -V/GfMdNsP2TaVp -V/GfMdNsP3TaVp -V/GiMdNpP1TfrVp -V/GiMdNpP2TfrVp -V/GiMdNpP3TfrVp -V/GiMdNsP1TfrVp -V/GiMdNsP2TfrVp -V/GiMdNsP3TfrVp -V/GiMiNpP1Vp -V/GiMiNpP2Vp -V/GiMiNsP2Vp -V/GiTaVi -V/GiVb -V/GnMcNsP3Vp -V/GnMdNsP3TaVp -V/GpMcNpP1Vp -V/GpMcNpP2Vp -V/GpMcNpP3Vp -V/GpMdNpP1TaVp -V/GpMdNpP2TaVp -V/GpMdNpP3TaVp -VNI diff --git a/share/gram.dgc b/share/gram.dgc index 10134bc..5a212e6 100644 --- a/share/gram.dgc +++ b/share/gram.dgc @@ -1,6 +1,433 @@ -#FLAG REL -#UP REL +FLAG RQ +FLAG init + +#==================================================================================================== +# subj +#==================================================================================================== + +ROLE subj +SGL subj +AGR subj N +AGR subj G +GOV subj */Cn + +LINK V/VpP3Kn,BYC/VpP3 N,NUMCRD subj +LINK V/VpP12Kn,BYC/VpP12 NPRO;RQ- subj +LINK V/VpP3Kn,BYC/VpP3 NPRO;RQ- subj +LINK V/VpP3Kn,BYC/VpP3 NPRO;RQ+ subj&INIT + +#==================================================================================================== +# cmpl_g +#==================================================================================================== + +ROLE cmpl_g +SGL cmpl_g +GOV cmpl_g */Cg + +LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV N,NPRO,NUMCRD cmpl_g + +#==================================================================================================== +# cmpl_a +#==================================================================================================== + +ROLE cmpl_a +SGL cmpl_a +GOV cmpl_a */Ca + +LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV N,NPRO,NUMCRD;RQ- cmpl_a +LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV NPRO;RQ+ cmpl_a&INIT + +#==================================================================================================== +# cmpl_d +#==================================================================================================== + +ROLE cmpl_d +SGL cmpl_d +GOV cmpl_d */Cd + +LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV N,NPRO,NUMCRD cmpl_d + +#==================================================================================================== +# cmpl_i +#==================================================================================================== + +ROLE cmpl_i +SGL cmpl_i +GOV cmpl_i */Ci + +LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV N,NPRO,NUMCRD cmpl_i + +#==================================================================================================== +# cmpl_ze +#==================================================================================================== + +ROLE cmpl_ze +SGL cmpl_ze + +LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV CONJ/Si cmpl_ze&FIN + +#==================================================================================================== +# cmpl_inf +#==================================================================================================== + +ROLE cmpl_inf +SGL cmpl_inf + +LINK V,VM,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV V/Vb cmpl_inf + +#==================================================================================================== +# cmpl_s +#==================================================================================================== + +ROLE cmpl_s +SGL cmpl_s + +#==================================================================================================== +# aux +#==================================================================================================== + +ROLE aux +SGL aux +AGR aux N +AGR aux G + +LINK BYC/VpMdTf V/AiVpP3,V/AiVb aux #czas przyszly analityczny +LINK BYC/VpMc V/VpP3 aux #czas zaprzesz³y +LINK BYC ADJPAP/Cn,ADJ/Cn,N/Ci aux #BYC jako lacznik w (jest bialy, jest zaszlachtowany, jest pilotem) + +#==================================================================================================== +# mod +#==================================================================================================== + +ROLE mod +AGR mod N +AGR mod C +AGR mod G + +LINK V ADV,ADVPRP,ADVANP mod +LINK V ADVPRO/Zqr mod&INIT +LINK N,NV ADJ,ADJPAP,ADJPRP mod +LINK N,NV ADJPRO/Zqr mod&INIT + +#==================================================================================================== +# prep +#==================================================================================================== + +ROLE prep + +LINK V P prep +LINK N P;RQ- prep + +#==================================================================================================== +# pcmpl +#==================================================================================================== + +ROLE pcmpl +RIGHT pcmpl +SGL pcmpl +AGR pcmpl C + +LINK P N,NV,NPRO pcmpl + +REQ P pcmpl + +#==================================================================================================== +# conj +#==================================================================================================== + +ROLE conj +RIGHT conj + +LINK N CONJ/Sc conj +LINK V/Vp CONJ/Sc conj&FIN + +#==================================================================================================== +# conj1 +#==================================================================================================== + +ROLE conj1 +SGL conj1 +LEFT conj1 +LINK N CONJ/S1 conj1 + +#==================================================================================================== +# conj2 +#==================================================================================================== + +ROLE conj2 +SGL conj2 +RIGHT conj2 +LINK N CONJ/S2 conj2 + +#==================================================================================================== +# ccmpl +#==================================================================================================== + +ROLE ccmpl +SGL ccmpl +RIGHT ccmpl + +LINK CONJ/JpSci2 N ccmpl +LINK CONJ/JcpSci2 V/Vp ccmpl + +REQ CONJ/Sci2 ccmpl + +#==================================================================================================== +# poss +#==================================================================================================== + +ROLE poss +SGL poss +GOV poss */Cg + +LINK N N,NV poss + +#==================================================================================================== +# num +#==================================================================================================== + +ROLE num +SGL num + +LINK NUMCRD N,NV num + +#==================================================================================================== +# restr +#==================================================================================================== + +ROLE restr +SGL restr + +LINK ADJ ADV restr + +#==================================================================================================== +# quant +#==================================================================================================== + +ROLE quant +SGL quant +AGR quant N +AGR quant C +AGR quant G +LEFT quant + +LINK N ADJPRO/Zg quant + +#==================================================================================================== +# part +#==================================================================================================== + +ROLE part + +LINK V,BYC PART part + +#==================================================================================================== +# subj_copred +#==================================================================================================== + +ROLE subj_copred +SGL subj_copred + +#==================================================================================================== +# cmpl_g_copred +#==================================================================================================== + +ROLE cmpl_g_copred +SGL cmpl_g_copred + +#==================================================================================================== +# cmpl_a_copred +#==================================================================================================== + +ROLE cmpl_a_copred +SGL cmpl_a_copred + +#==================================================================================================== +# cmpl_d_copred +#==================================================================================================== + +ROLE cmpl_d_copred +SGL cmpl_d_copred + +#==================================================================================================== +# cmpl_i_copred +#==================================================================================================== + +ROLE cmpl_i_copred +SGL cmpl_i_copred + + +#==================================================================================================== +# rel +#==================================================================================================== + +ROLE rel +RIGHT rel +SGL rel +FIN rel + +LINK N V/Vp;RQ+ rel&FIN + +#==================================================================================================== +#==================================================================================================== +# CONSTR +#==================================================================================================== +#==================================================================================================== + +CONSTRE cmpl_g cmpl_a +CONSTRE cmpl_a cmpl_g + +CONSTRI conj1 conj2 +CONSTRI conj2 conj1 + +#CONSTR cmpl_g ~cmpl_a +#CONSTR cmpl_a ~cmpl_g +#CONSTR cmpl_inf ~cmpl_g ~cmpl_d ~cmpl_a ~cmpl_p ~cmpl_ez ~cmpl_s +#CONSTR subj_copred => subj +#CONSTR cmpl_g_copred => cmpl_g +#CONSTR cmpl_a_copred => cmpl_a +#CONSTR cmpl_i_copred => cmpl_i +#CONSTR cmpl_d_copred => cmpl_d + + + +#==================================================================================================== +#==================================================================================================== +# LONG +#==================================================================================================== +#==================================================================================================== + +#==================================================================================================== +# ncoord +#==================================================================================================== + +LONG ncoord conj> ccmpl> +LONG ncoord conj2> ccmpl> + +AGR ncoord C +AGR ncoord N + +LINK N N ncoord + +#==================================================================================================== +# vcoord +#==================================================================================================== + +LONG vcoord conj> ccmpl> + +AGR vcoord P +AGR vcoord N +AGR vcoord A +AGR vcoord G + +LINK V V vcoord + +#==================================================================================================== +# adjcoord +#==================================================================================================== + +LONG adjcoord conj> ccmpl> + +AGR adjcoord C +AGR adjcoord N +AGR adjcoord G + +LINK ADJ ADJ ncoord + +#==================================================================================================== +# advcoord +#==================================================================================================== + +LONG advcoord conj> ccmpl> + +AGR ncoord C +AGR ncoord N + +LINK ADV ADV ncoord + + +#==================================================================================================== +# relagr +#==================================================================================================== + +LONG relagr ~cmpl_a -#CONSTR cmpl_inf => ~(cmpl_g|cmpl_d|cmpl_a|cmpl_p|cmpl_ze|cmpl_s) -#CONSTR subj_pred => subj -#constr cmpl_pred => cmpl - - - -#subj -ROLE subj # deklaracja roli (typ zaleznosci) podmiot -AGR subj N # zgodnosc podrzednika z nadrzednikiem co do liczby -AGR subj G # zgodnosc podrzednika z nadrzednikiem co do rodzaju -GOV subj */Cn # wymaganie by podrzednik byl w mianowniku - -# pary kategorii, jakie mozna polaczyc zaleznoscia typu podmiot - -# nadrzednik podrzednik -LINK V/VpP3,BYC/VpP3 N,NPRO subj - -# (przecinek znaczy lub) - -ROLE cmpl_ga # dopelnienie w bierniku/dopelniaczu -ROLE cmpl_d # w celowniku -ROLE cmpl_i # w narzedniku -ROLE cmpl_inf # w bezokoliczniku -ROLE cmpl_s # bedace zdaniem -ROLE cmpl_ze # bedace zdaniem poprzedzonym 'ze' -ROLE aux # -ROLE mod # modyfikator (okolicznik/przydawka) (niewymagane okreÅ›lenie) (biaÅ‚y kot) -ROLE prep # modyfikator w postaci frazy przyimkowej -ROLE pcmpl # dopeÅ‚nienie przyimka (wymagany rzeczownik) -ROLE ccmpl # dopeÅ‚nienie spójnika (wymagany drugi czÅ‚on konstrukcji spójnikowej) -ROLE poss # np. książka Marii, ojciec kolegi -ROLE restr # (bardzo <- duży) -ROLE part # partykuÅ‚a -ROLE coord # koordynacja (powiÄ…zanie pierwszego czÅ‚onu konstrukcji współrzÄ™dnej - # ze spójnikiem współrzÄ™dnym centralnym ( Oto [pies -> i] kot. ) - - -AGR aux N -AGR aux G - -AGR mod N -AGR mod C -AGR mod G - -AGR pcmpl C - -GOV cmpl_ga */Cga -GOV cmpl_d */Cd -GOV cmpl_i */Ci -GOV poss */Cg - -SGL subj -SGL cmpl_ga -SGL cmpl_d -SGL cmpl_i -SGL cmpl_inf -SGL aux -SGL pcmpl -SGL ccmpl -SGL poss -SGL restr - -REQ P pcmpl -REQ CONJ ccmpl - -RIGHT pcmpl -RIGHT ccmpl -RIGHT cmpl_ze -RIGHT poss - - -#cmpl_* -LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV N,NPRO cmpl_ga -LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV N,NPRO cmpl_d -LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV N,NPRO cmpl_i -LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV V/Vb cmpl_inf -LINK V,ADVPRP,ADVANP,ADJPRP,ADJPAP,NV CONJ cmpl_ze - -#aux -#czas przyszly analityczny -LINK BYC/VpMdTf V/AiVpP3,V/AiVb aux -#czas zaprzeszly(?) -LINK BYC/VpMc V/VpP3 aux -#BYC jako lacznik w (jest bialy, jest zaszlachtowany, jest pilotem) -LINK BYC ADJPAP/Cn,ADJ/Cn,N/Ci aux - -#mod - -LINK V ADV,ADVPRP,ADVANP,ADVPRO mod -LINK N,NV ADJ,ADJPAP,ADJPRP,ADJPRO mod - - -#prep -LINK N,V P prep - -#pcmpl -LINK P N,NV pcmpl - - -#poss -LINK N N,NV,NPRO poss - - -#ccmpl -LINK CONJ V/Vp ccmpl - - -#restr -LINK ADJ ADV restr - - -#part -LINK V PART part diff --git a/src/dgp/cmdline_dgp.ggo b/src/dgp/cmdline_dgp.ggo index c59786d..a71c56d 100644 --- a/src/dgp/cmdline_dgp.ggo +++ b/src/dgp/cmdline_dgp.ggo @@ -10,9 +10,11 @@ option "long" l "Long output" 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 t - parse time -" + h - heads d - dependents + s - sets + c - constraints n - node/arc counts" string no default="h" diff --git a/src/dgp/dgp1.cc b/src/dgp/dgp1.cc index caa81d2..cdf4fee 100644 --- a/src/dgp/dgp1.cc +++ b/src/dgp/dgp1.cc @@ -302,14 +302,34 @@ void connect_right(list::iterator h, list::iterator d, const Link& l, //==================================================================================================== -bool check_boubbles_at_target(list boubbles, int node) +// sprawdza czy te, spo¶ród b±bli, które dotar³y do celu node +// daj± wynik prawdziwy, dodatkowo - usuwa je z listy boubbles + +bool check_boubbles_at_target(list& boubbles, int node) { - for(list::iterator b = boubbles.begin(); b != boubbles.end(); b++) - if( (*b)->is_at_target() && !grammar.check_longrel(sgraph.cat((*b)->src()), sgraph.cat(node), (*b)->rel())) - return false; + list::iterator last; // ostatnio sprawdzany b±bel + bool remove=false; // czy usun±æ ostatnio sprawdzany b±bel + + for(list::iterator b = boubbles.begin(); b != boubbles.end(); b = remove ? boubbles.erase(b) : ++b ) + if( (*b)->is_at_target() ) + if( grammar.check_longrel(sgraph.cat((*b)->src()), sgraph.cat(node), (*b)->rel()) ) + remove=true; + else + return false; + else + remove=false; + return true; } +// bool check_boubbles_at_target(list boubbles, int node) +// { +// for(list::iterator b = boubbles.begin(); b != boubbles.end(); ++b ) +// if( (*b)->is_at_target() && !grammar.check_longrel(sgraph.cat((*b)->src()), sgraph.cat(node), (*b)->rel()) ) +// return false; +// return true; +// } + //==================================================================================================== void try_connect_dependents(list::iterator j) diff --git a/src/dgp/grammar.cc b/src/dgp/grammar.cc index bd81717..8394c57 100644 --- a/src/dgp/grammar.cc +++ b/src/dgp/grammar.cc @@ -186,6 +186,8 @@ bool Grammar::read(FILE* f) Prop::add("INIT"); Prop::add("FIN"); + Prop::add("LEFT"); + Prop::add("RIGHT"); //<<< TU? diff --git a/src/dgp/grammar.hh b/src/dgp/grammar.hh index a577d11..141535d 100644 --- a/src/dgp/grammar.hh +++ b/src/dgp/grammar.hh @@ -191,17 +191,17 @@ list Grammar::connectable2(Cat h, Cat d, FlagSet hfs, FlagSet dfs) //---------------------------------------------------------------------------------------------------- -inline -bool Grammar::check_constr(NodeProp& hprop, NodeProp& dprop, int dir, Role role) // dir: 0-left 1-right -{ - return - !hprop.forbidden[role] && - ( dir==1 || !right[role] ) && - ( dir==0 || !left[role] ) && - ( dir==1 || (hprop.attached&init).none() ) && - ( dir==0 || (hprop.attached&fin).none() ) - ; -} +// inline +// bool Grammar::check_constr(NodeProp& hprop, NodeProp& dprop, int dir, Role role) // dir: 0-left 1-right +// { +// return +// !hprop.forbidden[role] && +// ( dir==1 || !right[role] ) && +// ( dir==0 || !left[role] ) && +// ( dir==1 || (hprop.attached&init).none() ) && +// ( dir==0 || (hprop.attached&fin).none() ) +// ; +// } //---------------------------------------------------------------------------------------------------- @@ -210,8 +210,8 @@ bool Grammar::check_constr2(NodeProp& hprop, NodeProp& dprop, int dir, const Lin { return !hprop.forbidden[link.role] && - ( dir==1 || !right[link.role] ) && - ( dir==0 || !left[link.role] ) && + ( dir==1 || (!right[link.role] && !link.props[Prop("RIGHT")]) ) && // ZREZYGNOWAÆ Z TABLICY right[] + ( dir==0 || (!left[link.role] && !link.props[Prop("LEFT")]) ) && ( dir!=0 || !hprop.init_attached ) && ( dir!=1 || !hprop.fin_attached ) ; diff --git a/src/dgp/main.cc b/src/dgp/main.cc index e948591..b70ce74 100644 --- a/src/dgp/main.cc +++ b/src/dgp/main.cc @@ -6,6 +6,9 @@ * Author: Tomasz Obrebski */ +#include +#include + #include "global.hh" #include "mgraph.hh" #include "sgraph.hh" @@ -16,6 +19,8 @@ #define MAXSEGMENTS 500 +#define MICROSECONDSELAPSED(A,B) ((B.tv_sec - A.tv_sec)*1000000 + (B.tv_usec - A.tv_usec)) + char segment[MAXSEGMENTS][MAXLINE]; int segcount=0; char seg_mnode[MAXSEGMENTS]; @@ -30,6 +35,8 @@ FILE* grammarf; FILE* debugf=stdout; unsigned int info=0U; +bool printtimeinfo=false; + void output(); main(int argc, char* argv[]) @@ -52,6 +59,8 @@ main(int argc, char* argv[]) if(args.debug_given) debug=true; + if(args.time_given) printtimeinfo=true; + for(char* c=args.info_arg; *c!='\0' ; ++c) switch(*c) { @@ -69,7 +78,7 @@ main(int argc, char* argv[]) // grammar.write(cout); // exit(0); - + struct timeval starttime,afterinput,afterparse,endtime; mgraph.clear(); sgraph.clear(); @@ -77,6 +86,7 @@ main(int argc, char* argv[]) char line[1000]; while (fgets(line, MAXLINE+1, inputf)) { + gettimeofday(&starttime,NULL); line[strlen(line)-1] = '\0'; strcpy(segment[segcount],line); @@ -89,8 +99,19 @@ main(int argc, char* argv[]) getfield(line,"3",segtype); if(strcmp(segtype,"EOS")==0) { + gettimeofday(&afterinput,NULL); dgp1(); // parametry!!! MGraph, SGraph, Grammar + gettimeofday(&afterparse,NULL); output(); + gettimeofday(&endtime,NULL); + + if(printtimeinfo) + { + fprintf(stderr,"### INPUT TIME: %10.2fms\n", (float)MICROSECONDSELAPSED(starttime,afterinput)/1000 ); + fprintf(stderr,"### PARSE TIME: %10.2fms\n", (float)MICROSECONDSELAPSED(afterinput,afterparse)/1000 ); + fprintf(stderr,"### OUTPUT TIME: %10.2fms\n", (float)MICROSECONDSELAPSED(afterparse,endtime)/1000 ); + fprintf(stderr,"### TOTAL TIME: %10.2fms\n", (float)MICROSECONDSELAPSED(starttime,endtime)/1000 ); + } mgraph.clear(); sgraph.clear(); diff --git a/src/dgp/sgraph.cc b/src/dgp/sgraph.cc index 5b356b4..66aa81c 100644 --- a/src/dgp/sgraph.cc +++ b/src/dgp/sgraph.cc @@ -147,7 +147,7 @@ int SGraph::sprint_node(char* buf, int nodeind, int anc, unsigned int info) for(Role i=1; i<=Role::count(); ++i) if(node.prop.forbidden[i]) buf+=sprintf(buf,"%s!%s",(cont++)?",":"",i.str()); for(Role i=1; i<=Role::count(); ++i) - if(node.prop.required[i]) buf+=sprintf(buf,"%s&%s",(cont++)?",":"",i.str()); + if(node.prop.required[i]) buf+=sprintf(buf,"%s-%s",(cont++)?",":"",i.str()); for(Role i=1; i<=Role::count(); ++i) if(node.prop.attached[i]) buf+=sprintf(buf,"%s+%s",(cont++)?",":"",i.str()); for(Flag i=1; i<=Flag::count(); ++i)