public function ordenarSlot($subjmasc, $subjpl) { $nucli = $this->paraulafinal; $elementaux = array(); if ($nucli != null) { switch ($nucli->tipus) { case "name": $numeros = array(); $quantifieradj = array(); // stores the quantifiers that complement the adj instead of the nucleus $hasquantifieradj = false; $hasnumorquant = false; $haspossessive = 0; // al nostre sistema només els nuclis poden tenir possessius // també l'activarem si té ordinals o altres elements que van // entre l'article i el nom // calculem els valors per la concordància general $masc = true; $plural = false; // si el nom és femení if ($nucli->propietats->mf == "fem") { $masc = false; } // si el nom és plural if ($nucli->propietats->singpl == "pl") { $plural = true; } // si té modificadors de femení i l'accepta if ($nucli->propietats->femeni != "NULL" && $nucli->fem) { $masc = false; } // si té modificador de plural if ($nucli->plural) { $plural = true; } // PREPOSICIÓ // posem la preposició, si n'hi ha if ($this->prep != null) { $elementaux[0] = $this->prep; $elementaux[1] = null; $this->slotstring[] = $elementaux; } // Posem, si cal, la preposició "a", davant dels slots de temps if ($this->category == "Time") { $CI =& get_instance(); $CI->load->library('Mymatching'); $matching = new Mymatching(); if ($matching->isTimePrep($nucli->text)) { $elementaux[0] = $matching->tempsPrep[$nucli->text]; $elementaux[1] = null; $this->slotstring[] = $elementaux; } } // QUANTIFICADOR O POSSESSIUS // si el nom té un modificador, que només pot ser un quantificador o possessiu if ($this->CModassigned) { for ($i = 0; $i < count($this->CModassignedkey); $i++) { $quantifierslot = $this->cmpMod[$this->CModassignedkey[$i]]; // si és un número if ($quantifierslot->paraulafinal->isClass("numero")) { $numeros[] = $quantifierslot; // si és un número diferent d'1, tot passarà a ser plural if ($quantifierslot->paraulafinal->text != "un") { $plural = true; } } else { // si el nucli també té un adjectiu assignat, mirem si va millor amb l'adjectiu if ($this->CAdjassigned) { // si és quantifier i anava just davant de l'adjectiu, el guardem per després if ($quantifierslot->paraulafinal->inputorder - $this->cmpAdjs[$this->CAdjassignedkey]->paraulafinal->inputorder == -1 && $quantifierslot->paraulafinal->classes[0] == "quant") { $quantifieradj[] = $quantifierslot; $hasquantifieradj = true; } else { if ($masc && !$plural) { $elementaux[0] = $quantifierslot->paraulafinal->propietats->masc; } else { if ($masc && $plural) { $elementaux[0] = $quantifierslot->paraulafinal->propietats->mascpl; } else { if (!$masc && !$plural) { $elementaux[0] = $quantifierslot->paraulafinal->propietats->fem; } else { $elementaux[0] = $quantifierslot->paraulafinal->propietats->fempl; } } } $elementaux[1] = $quantifierslot->paraulafinal; $this->slotstring[] = $elementaux; $hasnumorquant = true; if (strpos($quantifierslot->paraulafinal->classes[0], "pos") === 0) { $haspossessive++; $hasnumorquant = false; } } } else { if ($masc && !$plural) { $elementaux[0] = $quantifierslot->paraulafinal->propietats->masc; } else { if ($masc && $plural) { $elementaux[0] = $quantifierslot->paraulafinal->propietats->mascpl; } else { if (!$masc && !$plural) { $elementaux[0] = $quantifierslot->paraulafinal->propietats->fem; } else { $elementaux[0] = $quantifierslot->paraulafinal->propietats->fempl; } } } $elementaux[1] = $quantifierslot->paraulafinal; $this->slotstring[] = $elementaux; $hasnumorquant = true; if (strpos($quantifierslot->paraulafinal->classes[0], "pos") === 0) { $haspossessive++; $hasnumorquant = false; } } } } } // ADVERBI DE LLOC if ($this->CAdvassigned) { $adverbistring = $this->cmpAdvs[$this->CAdvassignedkey]->paraulafinal; // dividir-lo en cada una de les paraules que formen l'adverbi $auxstring = explode(" ", $adverbistring->text); // afegir cada paraula en ordre a slotstring for ($i = 0; $i < count($auxstring); $i++) { $elementaux[0] = $auxstring[$i]; $elementaux[1] = $adverbistring; $this->slotstring[] = $elementaux; } } // NUMEROS for ($i = 0; $i < count($numeros); $i++) { if ($masc) { $elementaux[0] = $numeros[$i]->paraulafinal->propietats->masc; } else { $elementaux[0] = $numeros[$i]->paraulafinal->propietats->fem; } $elementaux[1] = $numeros[$i]->paraulafinal; $this->slotstring[] = $elementaux; $hasnumorquant = true; } // ORDINALS if ($this->CAdjassigned) { $adjectiu = $this->cmpAdjs[$this->CAdjassignedkey]->paraulafinal; if ($adjectiu->isClass("ordinal")) { if ($masc && !$plural) { $elementaux[0] = $adjectiu->propietats->masc; } else { if ($masc && $plural) { $elementaux[0] = $adjectiu->propietats->mascpl; } else { if (!$masc && !$plural) { $elementaux[0] = $adjectiu->propietats->fem; } else { $elementaux[0] = $adjectiu->propietats->fempl; } } } $elementaux[1] = $adjectiu; $this->slotstring[] = $elementaux; $haspossessive++; $this->CAdjassigned = false; // indiquem que ja s'ha vist l'adjectiu } } // NOM + COORDINACIÓ if ($plural) { if ($nucli->propietats->mf != "fem" && !$masc) { $elementaux[0] = $nucli->propietats->fempl; } else { $elementaux[0] = $nucli->propietats->plural; } } else { if ($masc && !$plural) { $elementaux[0] = $nucli->propietats->nomtext; } else { if ($nucli->propietats->mf == "fem") { $elementaux[0] = $nucli->propietats->nomtext; } else { $elementaux[0] = $nucli->propietats->femeni; } } } $elementaux[1] = $nucli; // com que el nucli és un nom, afegim la informació extra $elementaux[2] = true; $elementaux[3] = $masc; $elementaux[4] = $plural; $elementaux[5] = $hasnumorquant; $elementaux[6] = false; $elementaux[7] = $haspossessive; $this->slotstring[] = $elementaux; // si té element coordinat if ($nucli->paraulacoord != null) { $paraulacoord = $nucli->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada, el plural es passa, però el femení // s'ha de mirar si la paraula ho era o no el tenia el modificador $masccoord = true; $pluralcoord = $plural; if ($paraulacoord->propietats->mf == "fem" || $paraulacoord->fem) { $masccoord = false; } // el plural només pot canviar si plural era false i la paraulacoord sempre és plural // que aleshores ha de passar a true o si volíem que la paraulacoord fos plural if ($paraulacoord->propietats->singpl == "pl" || $paraulacoord->plural) { $plural = true; } if ($pluralcoord) { $elementaux[0] = $paraulacoord->propietats->plural; } else { if ($masccoord && !$pluralcoord) { $elementaux[0] = $paraulacoord->propietats->nomtext; } else { if ($paraulacoord->propietats->mf == "fem") { $elementaux[0] = $paraulacoord->propietats->nomtext; } else { $elementaux[0] = $paraulacoord->propietats->femeni; } } } $elementaux[1] = $paraulacoord; // com que la paraula coordinada ha de ser un nom, afegim la info extra $elementaux[2] = true; $elementaux[3] = $masccoord; $elementaux[4] = $pluralcoord; $elementaux[5] = $hasnumorquant; $elementaux[6] = false; $elementaux[7] = $haspossessive; $this->slotstring[] = $elementaux; } // ADJECTIUS I COMPLEMENTS DE NOM // si té un adjectiu i no un complement de nom if ($this->CAdjassigned && !$this->NCassigned) { // si l'adjectiu tenia un quantificador l'afegim if ($hasquantifieradj) { for ($i = 0; $i < count($quantifieradj); $i++) { // aquí els quantificadors tenen forma invariable $elementaux[0] = $quantifieradj[$i]->paraulafinal->propietats->masc; $elementaux[1] = $quantifieradj[$i]->paraulafinal; $this->slotstring[] = $elementaux; } } // tant si tenia quantificador com si no, posem l'adjectiu $adjectiu = $this->cmpAdjs[$this->CAdjassignedkey]->paraulafinal; if ($masc && !$plural) { $elementaux[0] = $adjectiu->propietats->masc; } else { if ($masc && $plural) { $elementaux[0] = $adjectiu->propietats->mascpl; } else { if (!$masc && !$plural) { $elementaux[0] = $adjectiu->propietats->fem; } else { $elementaux[0] = $adjectiu->propietats->fempl; } } } $elementaux[1] = $adjectiu; $this->slotstring[] = $elementaux; // si té element adjectiu coordinat if ($adjectiu->paraulacoord != null) { $paraulacoord = $adjectiu->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada amb la mateixa concordància if ($masc && !$plural) { $elementaux[0] = $paraulacoord->propietats->masc; } else { if ($masc && $plural) { $elementaux[0] = $paraulacoord->propietats->mascpl; } else { if (!$masc && !$plural) { $elementaux[0] = $paraulacoord->propietats->fem; } else { $elementaux[0] = $paraulacoord->propietats->fempl; } } } $elementaux[1] = $paraulacoord; $this->slotstring[] = $elementaux; } } else { if ($this->NCassigned && !$this->CAdjassigned) { $nouncmpslot = $this->complements[$this->NCassignedkey]; $nouncmp = $nouncmpslot->paraulafinal; // afegim la preposició "de" $elementaux[0] = $nouncmpslot->prep; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim el nom $masccmp = true; $pluralcmp = false; // si el nom és femení if ($nouncmp->propietats->mf == "fem") { $masccmp = false; } // si el nom és plural if ($nouncmp->propietats->singpl == "pl") { $pluralcmp = true; } // si té modificadors de femení i l'accepta if ($nouncmp->propietats->femeni != "NULL" && $nouncmp->fem) { $masccmp = false; } // si té modificador de plural if ($nouncmp->plural) { $pluralcmp = true; } if ($pluralcmp) { $elementaux[0] = $nouncmp->propietats->plural; } else { if ($masccmp && !$pluralcmp) { $elementaux[0] = $nouncmp->propietats->nomtext; } else { if ($nouncmp->propietats->mf == "fem") { $elementaux[0] = $nouncmp->propietats->nomtext; } else { $elementaux[0] = $nouncmp->propietats->femeni; } } } $elementaux[1] = $nouncmp; // com que el nucli és un nom, afegim la informació extra $elementaux[2] = true; $elementaux[3] = $masccmp; $elementaux[4] = $pluralcmp; $elementaux[5] = false; $elementaux[6] = true; $elementaux[7] = $haspossessive; $this->slotstring[] = $elementaux; // si té element coordinat if ($nouncmp->paraulacoord != null) { $paraulacoord = $nouncmp->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada amb la seva concordància $masccmp = true; $pluralcmp = false; // si el nom és femení if ($paraulacoord->propietats->mf == "fem") { $masccmp = false; } // si el nom és plural if ($paraulacoord->propietats->singpl == "pl") { $pluralcmp = true; } // si té modificadors de femení i l'accepta if ($paraulacoord->propietats->femeni != "NULL" && $paraulacoord->fem) { $masccmp = false; } // si té modificador de plural if ($paraulacoord->plural) { $pluralcmp = true; } if ($pluralcmp) { $elementaux[0] = $paraulacoord->propietats->plural; } else { if ($masccmp && !$pluralcmp) { $elementaux[0] = $paraulacoord->propietats->nomtext; } else { if ($paraulacoord->propietats->mf == "fem") { $elementaux[0] = $paraulacoord->propietats->nomtext; } else { $elementaux[0] = $paraulacoord->propietats->femeni; } } } $elementaux[1] = $paraulacoord; // com que el nucli és un nom, afegim la informació extra $elementaux[2] = true; $elementaux[3] = $masccmp; $elementaux[4] = $pluralcmp; $elementaux[5] = false; $elementaux[6] = true; $elementaux[7] = $haspossessive; $this->slotstring[] = $elementaux; } } else { if ($this->NCassigned && $this->CAdjassigned) { $nouncmpslot = $this->complements[$this->NCassignedkey]; $adjectiuslot = $this->cmpAdjs[$this->CAdjassignedkey]; $puntsFitAdjWithNucli = $adjectiuslot->puntsfinal; // calculem els punts que tindria fent fit al complement $CI =& get_instance(); $CI->load->library('Mymatching'); $matching = new Mymatching(); $classeadj = $adjectiuslot->paraulafinal->classes[$adjectiuslot->indexclassfinalword]; $numclassesnomcmp = count($nouncmpslot->paraulafinal->classes); $puntsFitAdjWithCMP = 1000; for ($j = 0; $j < $numclassesnomcmp; $j++) { $classenomaux = $nouncmpslot->paraulafinal->classes[$j]; if ($matching->isSetKeyAdjNoun($classeadj) && $matching->isSetKeyNoun($classenomaux)) { $tipusx = $matching->adjNounFitKeys[$classeadj]; $tipusy = $matching->nounsFitKeys[$classenomaux]; if ($matching->adjNounFit[$tipusx][$tipusy] < $puntsFitAdjWithCMP) { $puntsFitAdjWithCMP = $matching->adjNounFit[$tipusx][$tipusy]; } } } // nom - adjectiu $distance = $nouncmpslot->paraulafinal->inputorder - $adjectiuslot->paraulafinal->inputorder; // com més lluny i com menys fit facin, pitjor $puntsFitAdjWithCMP = 7 - $puntsFitAdjWithCMP - abs($distance); if ($distance == -1) { $puntsFitAdjWithCMP += 1; } // si fa millor fit al NUCLI if ($puntsFitAdjWithNucli >= $puntsFitAdjWithCMP) { // insertem primer l'adjectiu // si l'adjectiu tenia un quantificador l'afegim if ($hasquantifieradj) { for ($i = 0; $i < count($quantifieradj); $i++) { // aquí els quantificadors tenen forma invariable $elementaux[0] = $quantifieradj[$i]->paraulafinal->propietats->masc; $elementaux[1] = $quantifieradj[$i]->paraulafinal; $this->slotstring[] = $elementaux; } } // tant si tenia quantificador com si no, posem l'adjectiu $adjectiu = $adjectiuslot->paraulafinal; if ($masc && !$plural) { $elementaux[0] = $adjectiu->propietats->masc; } else { if ($masc && $plural) { $elementaux[0] = $adjectiu->propietats->mascpl; } else { if (!$masc && !$plural) { $elementaux[0] = $adjectiu->propietats->fem; } else { $elementaux[0] = $adjectiu->propietats->fempl; } } } $elementaux[1] = $adjectiu; $this->slotstring[] = $elementaux; // si té element adjectiu coordinat l'afegim if ($adjectiu->paraulacoord != null) { $paraulacoord = $adjectiu->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada amb la mateixa concordància if ($masc && !$plural) { $elementaux[0] = $paraulacoord->propietats->masc; } else { if ($masc && $plural) { $elementaux[0] = $paraulacoord->propietats->mascpl; } else { if (!$masc && !$plural) { $elementaux[0] = $paraulacoord->propietats->fem; } else { $elementaux[0] = $paraulacoord->propietats->fempl; } } } $elementaux[1] = $paraulacoord; $this->slotstring[] = $elementaux; } // després insertem el nom que fa de complement $nouncmp = $nouncmpslot->paraulafinal; // afegim la preposició "de" $elementaux[0] = $nouncmpslot->prep; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim el nom $masccmp = true; $pluralcmp = false; // si el nom és femení if ($nouncmp->propietats->mf == "fem") { $masccmp = false; } // si el nom és plural if ($nouncmp->propietats->singpl == "pl") { $pluralcmp = true; } // si té modificadors de femení i l'accepta if ($nouncmp->propietats->femeni != "NULL" && $nucli->fem) { $masccmp = false; } // si té modificador de plural if ($nouncmp->plural) { $pluralcmp = true; } if ($pluralcmp) { $elementaux[0] = $nouncmp->propietats->plural; } else { if ($masccmp && !$pluralcmp) { $elementaux[0] = $nouncmp->propietats->nomtext; } else { if ($nouncmp->propietats->mf == "fem") { $elementaux[0] = $nouncmp->propietats->nomtext; } else { $elementaux[0] = $nouncmp->propietats->femeni; } } } $elementaux[1] = $nouncmp; // com que el nucli és un nom, afegim la informació extra $elementaux[2] = true; $elementaux[3] = $masccmp; $elementaux[4] = $pluralcmp; $elementaux[5] = false; $elementaux[6] = true; $elementaux[7] = $haspossessive; $this->slotstring[] = $elementaux; // si té element coordinat if ($nouncmp->paraulacoord != null) { $paraulacoord = $nouncmp->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada amb la seva concordància $masccmp = true; $pluralcmp = false; // si el nom és femení if ($paraulacoord->propietats->mf == "fem") { $masccmp = false; } // si el nom és plural if ($paraulacoord->propietats->singpl == "pl") { $pluralcmp = true; } // si té modificadors de femení i l'accepta if ($paraulacoord->propietats->femeni != "NULL" && $paraulacoord->fem) { $masccmp = false; } // si té modificador de plural if ($paraulacoord->plural) { $pluralcmp = true; } if ($pluralcmp) { $elementaux[0] = $paraulacoord->propietats->plural; } else { if ($masccmp && !$pluralcmp) { $elementaux[0] = $paraulacoord->propietats->nomtext; } else { if ($paraulacoord->propietats->mf == "fem") { $elementaux[0] = $paraulacoord->propietats->nomtext; } else { $elementaux[0] = $paraulacoord->propietats->femeni; } } } $elementaux[1] = $paraulacoord; // com que el nucli és un nom, afegim la informació extra $elementaux[2] = true; $elementaux[3] = $masccmp; $elementaux[4] = $pluralcmp; $elementaux[5] = false; $elementaux[6] = true; $elementaux[7] = $haspossessive; $this->slotstring[] = $elementaux; } } else { // primer insertem el nom que fa de complement $nouncmp = $nouncmpslot->paraulafinal; // afegim la preposició "de" $elementaux[0] = $nouncmpslot->prep; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim el nom $masccmp = true; $pluralcmp = false; // si el nom és femení if ($nouncmp->propietats->mf == "fem") { $masccmp = false; } // si el nom és plural if ($nouncmp->propietats->singpl == "pl") { $pluralcmp = true; } // si té modificadors de femení i l'accepta if ($nouncmp->propietats->femeni != "NULL" && $nucli->fem) { $masccmp = false; } // si té modificador de plural if ($nouncmp->plural) { $pluralcmp = true; } if ($pluralcmp) { $elementaux[0] = $nouncmp->propietats->plural; } else { if ($masccmp && !$pluralcmp) { $elementaux[0] = $nouncmp->propietats->nomtext; } else { if ($nouncmp->propietats->mf == "fem") { $elementaux[0] = $nouncmp->propietats->nomtext; } else { $elementaux[0] = $nouncmp->propietats->femeni; } } } $elementaux[1] = $nouncmp; // com que el nucli és un nom, afegim la informació extra $elementaux[2] = true; $elementaux[3] = $masccmp; $elementaux[4] = $pluralcmp; $elementaux[5] = false; $elementaux[6] = true; $elementaux[7] = $haspossessive; $this->slotstring[] = $elementaux; // si té element coordinat if ($nouncmp->paraulacoord != null) { $paraulacoord = $nouncmp->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada amb la seva concordància $masccmp = true; $pluralcmp = false; // si el nom és femení if ($paraulacoord->propietats->mf == "fem") { $masccmp = false; } // si el nom és plural if ($paraulacoord->propietats->singpl == "pl") { $pluralcmp = true; } // si té modificadors de femení i l'accepta if ($paraulacoord->propietats->femeni != "NULL" && $paraulacoord->fem) { $masccmp = false; } // si té modificador de plural if ($paraulacoord->plural) { $pluralcmp = true; } if ($pluralcmp) { $elementaux[0] = $paraulacoord->propietats->plural; } else { if ($masccmp && !$pluralcmp) { $elementaux[0] = $paraulacoord->propietats->nomtext; } else { if ($paraulacoord->propietats->mf == "fem") { $elementaux[0] = $paraulacoord->propietats->nomtext; } else { $elementaux[0] = $paraulacoord->propietats->femeni; } } } $elementaux[1] = $paraulacoord; // com que el nucli és un nom, afegim la informació extra $elementaux[2] = true; $elementaux[3] = $masccmp; $elementaux[4] = $pluralcmp; $elementaux[5] = false; $elementaux[6] = true; $elementaux[7] = $haspossessive; $this->slotstring[] = $elementaux; } // després afegim l'adjectiu // si l'adjectiu tenia un quantificador l'afegim if ($hasquantifieradj) { for ($i = 0; $i < count($quantifieradj); $i++) { // aquí els quantificadors tenen forma invariable $elementaux[0] = $quantifieradj[$i]->paraulafinal->propietats->masc; $elementaux[1] = $quantifieradj[$i]->paraulafinal; $this->slotstring[] = $elementaux; } } // tant si tenia quantificador com si no, posem l'adjectiu que concorda amb el complement $adjectiu = $adjectiuslot->paraulafinal; if ($masccmp && !$pluralcmp) { $elementaux[0] = $adjectiu->propietats->masc; } else { if ($masccmp && $pluralcmp) { $elementaux[0] = $adjectiu->propietats->mascpl; } else { if (!$masccmp && !$pluralcmp) { $elementaux[0] = $adjectiu->propietats->fem; } else { $elementaux[0] = $adjectiu->propietats->fempl; } } } $elementaux[1] = $adjectiu; $this->slotstring[] = $elementaux; // si té element adjectiu coordinat l'afegim if ($adjectiu->paraulacoord != null) { $paraulacoord = $adjectiu->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada amb la mateixa concordància if ($masccmp && !$pluralcmp) { $elementaux[0] = $paraulacoord->propietats->masc; } else { if ($masccmp && $pluralcmp) { $elementaux[0] = $paraulacoord->propietats->mascpl; } else { if (!$masccmp && !$pluralcmp) { $elementaux[0] = $paraulacoord->propietats->fem; } else { $elementaux[0] = $paraulacoord->propietats->fempl; } } } $elementaux[1] = $paraulacoord; $this->slotstring[] = $elementaux; } } } } } // Fi si té complement de nom i adjectiu break; case "adj": // PREPOSICIÓ // posem la preposició, si n'hi ha if ($this->prep != null) { $elementaux[0] = $this->prep; $elementaux[1] = null; $this->slotstring[] = $elementaux; } // QUANTIFICADOR // si l'adjectiu té un modificador, que només pot ser un quantificador if ($this->CModassigned) { for ($i = 0; $i < count($this->CModassignedkey); $i++) { $quantifierslot = $this->cmpMod[$this->CModassignedkey[$i]]; // el quantificador és invariable $elementaux[0] = $quantifierslot->paraulafinal->propietats->masc; $elementaux[1] = $quantifierslot->paraulafinal; $this->slotstring[] = $elementaux; } } // POSEM L'ADJECTIU, HA DE CONCORDAR AMB EL SUBJECTE, ja que l'adjectiu // només té slots per fer de nucli en verbs copulatius o verbless patterns // tenint en compte els modificadors de subjecte // si estan definits, tenen preferència els modificadors de l'adjectiu // Si és d'un slot de MANNER no ha de concordar // si és de manera posem l'adjectiu en masculí if ($this->category == "Manner") { $elementaux[0] = $nucli->text; $elementaux[1] = $nucli; $elementaux[2] = false; $this->slotstring[] = $elementaux; // si té element adjectiu coordinat if ($nucli->paraulacoord != null) { $paraulacoord = $nucli->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada amb la mateixa concordància $elementaux[0] = $paraulacoord->text; $elementaux[1] = $paraulacoord; $this->slotstring[] = $elementaux; } } else { // posem l'adjectiu que concordi if (!$subjmasc && $subjpl) { $elementaux[0] = $nucli->propietats->fempl; } else { if (!$subjmasc && !$subjpl) { $elementaux[0] = $nucli->propietats->fem; } else { if ($subjmasc && $subjpl) { $elementaux[0] = $nucli->propietats->mascpl; } else { $elementaux[0] = $nucli->propietats->masc; } } } // sobreescrivim si l'adjectiu tenia modificadors activats // ho fem perquè si és verbless no té subjecte if ($nucli->fem && $nucli->plural) { $elementaux[0] = $nucli->propietats->fempl; } else { if ($nucli->fem) { $elementaux[0] = $nucli->propietats->fem; } else { if ($nucli->plural) { $elementaux[0] = $nucli->propietats->mascpl; } } } $elementaux[1] = $nucli; $elementaux[2] = false; $this->slotstring[] = $elementaux; // si té element adjectiu coordinat if ($nucli->paraulacoord != null) { $paraulacoord = $nucli->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada amb la mateixa concordància if (!$subjmasc && $subjpl) { $elementaux[0] = $paraulacoord->propietats->fempl; } else { if (!$subjmasc && !$subjpl) { $elementaux[0] = $paraulacoord->propietats->fem; } else { if ($subjmasc && $subjpl) { $elementaux[0] = $paraulacoord->propietats->mascpl; } else { $elementaux[0] = $paraulacoord->propietats->masc; } } } // sobreescrivim si l'adjectiu tenia modificadors activats // ho fem perquè si és verbless no té subjecte if ($nucli->fem && $nucli->plural) { $elementaux[0] = $paraulacoord->propietats->fempl; } else { if ($nucli->fem) { $elementaux[0] = $paraulacoord->propietats->fem; } else { if ($nucli->plural) { $elementaux[0] = $paraulacoord->propietats->mascpl; } } } $elementaux[1] = $paraulacoord; $this->slotstring[] = $elementaux; } } break; case "verb": // MODIFICADOR, NOMÉS ELS QUE NO VAN A L'INICI DE LA FRASE // més endavant, si hi ha pronoms febles amb el verb, l'ordre potser es canviarà // NO FEM RES: HO FARAN EL CONJUGADOR I EL CLEANER POSARÀ ELS MODIFICADORS QUE FALTIN // A ON CALGUI DE LA FRASE /* if ($this->CModassigned) { $CI = &get_instance(); $CI->load->library('Mymatching'); $matching = new Mymatching(); for ($i=0; $i<count($this->CModassignedkey); $i++) { $quantifier = $this->cmpMod[$this->CModassignedkey[$i]]->paraulafinal; // si és dels que va entre subjecte i verb if ($matching->isModAfterSubj($quantifier->text)) { $elementaux[0] = $quantifier->text; $elementaux[1] = $quantifier; $this->slotstring[] = $elementaux; } } } // POSEM EL VERB, de moment en infinitiu $elementaux[0] = $nucli->text; $elementaux[1] = $nucli; $elementaux[2] = false; $this->slotstring[] = $elementaux; */ break; case "modifier": // PREPOSICIÓ // posem la preposició, si n'hi ha if ($this->prep != null) { $elementaux[0] = $this->prep; $elementaux[1] = null; $this->slotstring[] = $elementaux; } // NUCLI -> que és un modificador $elementaux[0] = $nucli->text; $elementaux[1] = $nucli; $elementaux[2] = false; $this->slotstring[] = $elementaux; // QUANTIFICADORS, si n'hi ha if ($this->CModassigned) { for ($i = 0; $i < count($this->CModassignedkey); $i++) { $quantifier = $this->cmpMod[$this->CModassignedkey[$i]]->paraulafinal; $elementaux[0] = $quantifier->text; $elementaux[1] = $quantifier; $this->slotstring[] = $elementaux; } } break; case "adv": // PREPOSICIÓ // posem la preposició, si n'hi ha if ($this->prep != null) { $elementaux[0] = $this->prep; $elementaux[1] = null; $this->slotstring[] = $elementaux; } // QUANTIFICADORS, si n'hi ha if ($this->CModassigned) { for ($i = 0; $i < count($this->CModassignedkey); $i++) { $quantifier = $this->cmpMod[$this->CModassignedkey[$i]]->paraulafinal; $elementaux[0] = $quantifier->text; $elementaux[1] = $quantifier; $this->slotstring[] = $elementaux; } } // NUCLI -> que és un adverbi $elementaux[0] = $nucli->text; $elementaux[1] = $nucli; $elementaux[2] = false; $this->slotstring[] = $elementaux; break; case "questpart": // Va sense preposició // NUCLI -> que és una partícula de pregunta $elementaux[0] = $nucli->text; $elementaux[1] = $nucli; $elementaux[2] = false; $this->slotstring[] = $elementaux; break; // Per qualsevol altra mena de nucli // posar primer la preposició, si n'hi ha, i després el valor per defecte // Per qualsevol altra mena de nucli // posar primer la preposició, si n'hi ha, i després el valor per defecte default: // PREPOSICIÓ // posem la preposició, si n'hi ha if ($this->prep != null) { $elementaux[0] = $this->prep; $elementaux[1] = null; $this->slotstring[] = $elementaux; } // NUCLI $elementaux[0] = $nucli->text; $elementaux[1] = $nucli; $elementaux[2] = false; $this->slotstring[] = $elementaux; // si té element element coordinat if ($nucli->paraulacoord != null) { $paraulacoord = $nucli->paraulacoord; // afegim la "i" $elementaux[0] = "i"; $elementaux[1] = null; $this->slotstring[] = $elementaux; // afegim la paraula coordinada $elementaux[0] = $paraulacoord->text; $elementaux[1] = $paraulacoord; $this->slotstring[] = $elementaux; } break; } } else { // PREPOSICIÓ // posem la preposició, si n'hi ha if ($this->prep != null) { $elementaux[0] = $this->prep; $elementaux[1] = null; $this->slotstring[] = $elementaux; } $elementaux[0] = $this->defvalue; $elementaux[1] = null; $elementaux[2] = false; $this->slotstring[] = $elementaux; } // print_r($this->slotstring); echo "<br /><br />"; }