@@ -253,15 +253,34 @@ def process_phrases_with_ir_aller(self, node, expl, polarity, phrase_ords, head_
253253 return
254254
255255 xcomps = [x for x in node .children if x .udeprel == 'xcomp' ]
256- if node .lemma in ['ir' , 'aller' ] and node .upos == 'VERB' and xcomps :
256+ if node .lemma in ['ir' , 'aller' , 'estar' ] and node .upos == 'VERB' and xcomps :
257257 node .misc ['PhraseAux' ] = 'Yes'
258258
259259 voice = node .feats ['Voice' ]
260260 auxes = [x for x in xcomps [0 ].children if x .udeprel == 'aux' ]
261261 aux_pass = [x for x in auxes if x .deprel == 'aux:pass' ]
262262 auxes_without_pass = [x for x in auxes if x .deprel != 'aux:pass' ]
263263
264- if node .feats ['Tense' ] == 'Pres' :
264+ # European Portuguese: estar + a + Inf
265+ if node .lemma == 'estar' :
266+
267+ if node .feats ['Tense' ] == 'Pres' :
268+ tense = 'Pres'
269+ aspect = 'Prog'
270+
271+ elif node .feats ['Tense' ] == 'Imp' :
272+ tense = 'Past'
273+ aspect = 'ImpProg'
274+
275+ elif node .feats ['Tense' ] == 'Past' :
276+ tense = 'Past'
277+ aspect = 'PerfProg'
278+
279+ elif node .feats ['Tense' ] == 'Fut' :
280+ tense = 'Fut'
281+ aspect = 'Prog'
282+
283+ elif node .feats ['Tense' ] == 'Pres' :
265284 tense = 'Fut'
266285
267286 elif node .feats ['Tense' ] == 'Imp' :
@@ -275,13 +294,14 @@ def process_phrases_with_ir_aller(self, node, expl, polarity, phrase_ords, head_
275294 tense = 'PastFut'
276295 aspect = 'Perf'
277296
297+
278298 if auxes_without_pass :
279299 if auxes [0 ].lemma == 'estar' :
280300 aspect += 'Prog'
281301 if auxes [0 ].lemma == 'haber' :
282302 aspect += 'Perf'
283303
284- adp_a = [x for x in xcomps [0 ].children if x .lemma == 'a' and x .upos == 'ADP' and x . udeprel == 'mark' ]
304+ adp_a = [x for x in xcomps [0 ].children if x .lemma == 'a' and x .udeprel == 'mark' ]
285305 cop = [x for x in xcomps [0 ].children if x .udeprel == 'cop' ]
286306 phrase_ords = [node .ord , xcomps [0 ].ord ] + [x .ord for x in auxes ] + [x .ord for x in cop ]
287307 if adp_a :
0 commit comments