# phrases.gra - AGFL grammar module of the Russian grammar for noun phrase description # for Information Retrieval. # This file is a module of the Russian Parser for Information Retrieval (RuForIR) AGFL grammar, # version 2.1, 25.10.2002. # It can be processed usg the AGFL parser generator to generate the RuForIR parser. # # The grammar is based on the Affix Grammar for Basic Russian. # Original version 1997 # Updated by I. Azarova, 2002 # # Copyright 1997-2002 Saint-Petersburg University expanded_noun (GENDER, ANIM, NUMBER, CASE): prep_phrase (CASE)/ prep_phrase; attr_phrase (GENDER, ANIM, NUMBER, CASE)/ attr_phrase; noun_phrase (GENDER, ANIM, NUMBER, CASE)/ noun_phrase. adj_phrase (GENDER, ANIM, NUMBER, CASE): expanded_noun (GENDER, ANIM, NUMBER, CASE), adjunct / "\n\t", expanded_noun, "\n\t", "\n\t\t", adjunct,"\n\t\t"; prejunct, expanded_noun (GENDER, ANIM, NUMBER, CASE) / "\n\t", prejunct, "\n\t", "\n\t", expanded_noun, "\n\t". prep_phrase (CASE_ALL): terminal_preposition (CASE_ALL), attr_phrase (GENDER, ANIM, NUMBER, CASE_ALL) / "\n\t", terminal_preposition, "\n\t", "\n\t\t", attr_phrase, "\n\t\t"; terminal_preposition (CASE_ALL), noun_phrase (GENDER, ANIM, NUMBER, CASE_ALL) / "\n\t", terminal_preposition, "\n\t", "\n\t\t", noun_phrase, "\n\t\t"; terminal_preposition (CASE_ALL), terminal_pron_th_prep (GENDER, third, NUMBER, CASE_ALL) / "\n\t", terminal_preposition, "\n\t", "\n\t", terminal_pron_th_prep, "\n\t"; prepositional_terminal_pronoun (ANIM, CASE_ALL, PROTY)/ "\n\t", prepositional_terminal_pronoun, "\n\t". attr_phrase (GENDER, ANIM, NUMBER, CASE): adjective_one (GENDER, ANIM, NUMBER, CASE), adjective_two (GENDER, ANIM, NUMBER, CASE), terminal_noun (GENDER, ANIM, NUMBER, CASE) / "\n\t\t", adjective_one, "\n\t\t", "\n\t\t", adjective_two, "\n\t\t", "\n\t\t", terminal_noun, "\n\t\t"; terminal_adjective (GENDER, ANIM, NUMBER, CASE), terminal_noun (GENDER, ANIM, NUMBER, CASE) / "\n\t\t", terminal_adjective,"\n\t\t", "\n\t\t", terminal_noun, "\n\t\t"; terminal_noun (GENDER, ANIM, NUMBER, CASE), terminal_adjective (GENDER, ANIM, NUMBER, CASE) / "\n\t\t", terminal_noun, "\n\t\t", "\n\t\t", terminal_adjective,"\n\t\t". adjective_one (GENDER, ANIM, NUMBER, CASE): terminal_adjective (GENDER, ANIM, NUMBER, CASE). adjective_two (GENDER, ANIM, NUMBER, CASE): terminal_adjective (GENDER, ANIM, NUMBER, CASE). noun_phrase (GENDER, ANIM, NUMBER, nom): terminal_noun (GENDER, ANIM, NUMBER, nom) / "\n\t\t", terminal_noun, "\n\t\t"; terminal_pronoun (ANIM, nom, PROTY)/ "\n\t\t", terminal_pronoun, "\n\t\t"; terminal_pron_th (GENDER, third, NUMBER, nom) / "\n\t\t", terminal_pron_th, "\n\t\t"; terminal_numeral (small, nom, GENDER), terminal_noun (GENDER, ANIM, sg, gen)/ "\n\t\t", terminal_numeral, terminal_noun, "\n\t\t"; terminal_numeral (plur, nom, GENDER), terminal_noun (GENDER, ANIM, pl, gen)/ "\n\t\t", terminal_numeral, terminal_noun, "\n\t\t". pronoun_phrase (GENDER, PERSON, ANIM, NUMBER, nom): terminal_pron (PERSON, NUMBER, nom) / "\n\t\t", terminal_pron, "\n\t\t". noun_phrase (GENDER, ANIM, NUMBER, acc): terminal_noun (GENDER, ANIM, NUMBER, acc) / "\n\t\t", terminal_noun, "\n\t\t"; terminal_pronoun (ANIM, acc, PROTY)/ "\n\t\t", terminal_pronoun, "\n\t\t"; terminal_pron_th (GENDER, third, NUMBER, acc) / "\n\t\t", terminal_pron_th, "\n\t\t"; terminal_pron (PERSON, NUMBER, acc) / "\n\t\t", terminal_pron, "\n\t\t"; terminal_numeral (plur, nom, GENDER), terminal_noun (GENDER, ANIM, pl, gen)/ "\n\t\t", terminal_numeral, terminal_noun, "\n\t\t"; terminal_numeral (small, nom, GENDER), terminal_noun (GENDER, inanm, sg, gen)/ "\n\t\t", terminal_numeral, terminal_noun, "\n\t\t"; terminal_numeral (small, gen, GENDER), terminal_noun (GENDER, anm, pl, acc)/ "\n\t\t", terminal_numeral, "\n\t\t", "\n\t\t", terminal_noun, "\n\t\t". noun_phrase (GENDER, ANIM, NUMBER, CASE_O): terminal_noun (GENDER, ANIM, NUMBER, CASE_O) / "\n\t\t", terminal_noun, "\n\t\t"; terminal_pronoun (ANIM, CASE_ALL, PROTY)/ "\n\t\t", terminal_pronoun, "\n\t\t"; terminal_pron_th (GENDER, third, NUMBER, CASE_O) / "\n\t\t", terminal_pron_th, "\n\t\t"; terminal_pron (PERSON, NUMBER, CASE_O) / "\n\t\t", terminal_pron, "\n\t\t"; terminal_numeral (QUANT, CASE_O, GENDER), terminal_noun (GENDER, ANIM, pl, CASE_O)/ "\n\t\t", terminal_numeral, "\n\t\t", "\n\t\t", terminal_noun, "\n\t\t". adjunct: prep_phrase (CASE) / prep_phrase; terminal_infinitive (ASPECT, TRANS, REFL, VOICE) / terminal_infinitive; terminal_adverb / terminal_adverb. prejunct: prep_phrase (CASE) / prep_phrase; terminal_adverb / terminal_adverb. verb_phrase_exp(MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE): verb_phrase(MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE), adjunct /"\n\t",verb_phrase, "\n\t", "\n\t", adjunct,"\n\t"; prejunct, verb_phrase(MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE)/"\n\t", prejunct,"\n\t", "\n\t", verb_phrase, "\n\t"; verb_phrase(MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE)/ verb_phrase. verb_phrase(MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE): objective_verb_phrase(MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE)/ objective_verb_phrase; # subjective_verb_phrase(MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE)/ subjective_verb_phrase; # mixed_verb_phrase(MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE)/ mixed_verb_phrase . # perfect transitive verb gropus -- maximum 3 valences objective_verb_phrase(MOOD, perf, GENDER, third, NUMBER, tran, REFL, active): sub_noun_phrase (GENDER, ANIM, NUMBER, nom), terminal_verb (MOOD, perf, GENDER, third, NUMBER, tran, REFL, active), obj_noun_phrase (acc), prep_phrase (CASE)/ "\n\t\t", sub_noun_phrase,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t", "\n\t\t", prep_phrase,"\n\t\t"; sub_noun_phrase (GENDER, ANIM, NUMBER, nom), terminal_adverb, terminal_verb (MOOD, perf, GENDER, third, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", sub_noun_phrase,"\n\t\t", "\n\t\t", terminal_adverb, "\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t"; sub_noun_phrase (GENDER, ANIM, NUMBER, nom), terminal_verb (MOOD, perf, GENDER, third, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", sub_noun_phrase,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t"; terminal_verb (MOOD, perf, GENDER, third, NUMBER, tran, REFL, active), obj_noun_phrase (acc), prep_phrase (CASE)/ "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t", "\n\t\t", prep_phrase,"\n\t\t"; terminal_verb (MOOD, perf, GENDER, third, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t"; terminal_infinitive (perf, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", terminal_infinitive, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t". objective_verb_phrase(MOOD, perf, GENDER, MAN, NUMBER, tran, REFL, active): terminal_pron (MAN, NUMBER, nom), terminal_verb (MOOD, perf, GENDER, MAN, NUMBER, tran, REFL, active), obj_noun_phrase (acc), prep_phrase (CASE)/ "\n\t\t", terminal_pron,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t", "\n\t\t", prep_phrase,"\n\t\t"; terminal_pron (MAN, NUMBER, nom), terminal_adverb, terminal_verb (MOOD, perf, GENDER, MAN, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", terminal_pron,"\n\t\t", "\n\t\t", terminal_adverb, "\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t"; terminal_pron (MAN, NUMBER, nom), terminal_verb (MOOD, perf, GENDER, MAN, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", terminal_pron,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t"; terminal_verb (MOOD, perf, GENDER, MAN, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t". # imperfect transitive verb gropus -- maximum 2 valences objective_verb_phrase(MOOD, imperf, GENDER, third, NUMBER, tran, REFL, active): sub_noun_phrase (GENDER, ANIM, NUMBER, nom), terminal_verb (MOOD, imperf, GENDER, third, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", sub_noun_phrase,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t"; terminal_verb (MOOD, imperf, GENDER, third, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t"; terminal_verb (MOOD, imperf, GENDER, third, NUMBER, tran, REFL, active)/ "\n\t\t", terminal_verb, "\n\t\t"; terminal_infinitive (imperf, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", terminal_infinitive, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t". objective_verb_phrase(MOOD, imperf, GENDER, MAN, NUMBER, tran, REFL, active): terminal_pron (MAN, NUMBER, nom), terminal_verb (MOOD, imperf, GENDER, MAN, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", terminal_pron,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t"; terminal_pron (MAN, NUMBER, nom), terminal_verb (MOOD, imperf, GENDER, MAN, NUMBER, tran, REFL, active)/ "\n\t\t", terminal_pron,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t"; terminal_verb (MOOD, imperf, GENDER, MAN, NUMBER, tran, REFL, active), obj_noun_phrase (acc)/ "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", obj_noun_phrase,"\n\t\t". # intransitive verb gropus -- maximum 3 valences objective_verb_phrase(MOOD, ASPECT, GENDER, third, NUMBER, intran, REFL, active): sub_noun_phrase (GENDER, ANIM, NUMBER, nom), terminal_verb (MOOD, ASPECT, GENDER, third, NUMBER, intran, REFL, active), compl_noun_phrase (CASE_O), prep_phrase (CASE)/ "\n\t\t", sub_noun_phrase,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", compl_noun_phrase,"\n\t\t", "\n\t\t", prep_phrase,"\n\t\t"; sub_noun_phrase (GENDER, ANIM, NUMBER, nom), terminal_verb (MOOD, ASPECT, GENDER, third, NUMBER, intran, REFL, active), compl_noun_phrase (CASE_O)/ "\n\t\t", sub_noun_phrase,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", compl_noun_phrase,"\n\t\t"; sub_noun_phrase (GENDER, ANIM, NUMBER, nom), terminal_verb (MOOD, ASPECT, GENDER, third, NUMBER, intran, REFL, active), prep_phrase (CASE)/ "\n\t\t", sub_noun_phrase,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", prep_phrase,"\n\t\t"; terminal_verb (MOOD, ASPECT, GENDER, third, NUMBER, intran, REFL, active), compl_noun_phrase (CASE_O)/ "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", compl_noun_phrase,"\n\t\t"; terminal_verb (MOOD, ASPECT, GENDER, third, NUMBER, intran, REFL, active),prep_phrase (CASE)/ "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", prep_phrase,"\n\t\t"; terminal_infinitive (ASPECT, intran, REFL, active), compl_noun_phrase (CASE_O)/ "\n\t\t", terminal_infinitive, "\n\t\t", "\n\t\t", compl_noun_phrase,"\n\t\t". objective_verb_phrase(MOOD, ASPECT, GENDER, MAN, NUMBER, intran, REFL, active): terminal_pron (MAN, NUMBER, nom), terminal_verb (MOOD, ASPECT, GENDER, MAN, NUMBER, intran, REFL, active), compl_noun_phrase (CASE_O), prep_phrase (CASE)/ "\n\t\t", terminal_pron,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", compl_noun_phrase,"\n\t\t", "\n\t\t", prep_phrase,"\n\t\t"; terminal_pron (MAN, NUMBER, nom), terminal_verb (MOOD, ASPECT, GENDER, MAN, NUMBER, intran, REFL, active), compl_noun_phrase (CASE_O)/ "\n\t\t", terminal_pron,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", compl_noun_phrase,"\n\t\t"; terminal_pron (MAN, NUMBER, nom), terminal_verb (MOOD, ASPECT, GENDER, MAN, NUMBER, intran, REFL, active), prep_phrase (CASE)/ "\n\t\t", terminal_pron,"\n\t\t", "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", prep_phrase,"\n\t\t"; terminal_verb (MOOD, ASPECT, GENDER, MAN, NUMBER, intran, REFL, active),compl_noun_phrase (CASE_O)/ "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", compl_noun_phrase,"\n\t\t"; terminal_verb (MOOD, ASPECT, GENDER, MAN, NUMBER, intran, REFL, active),prep_phrase (CASE)/ "\n\t\t", terminal_verb, "\n\t\t", "\n\t\t", prep_phrase,"\n\t\t"; terminal_verb (MOOD, perf, GENDER, MAN, NUMBER, intran, REFL, active) / "\n\t\t", terminal_verb, "\n\t\t". # passive verb gropus -- maximum 1 valences objective_verb_phrase(MOOD, ASPECT, GENDER, third, NUMBER, tran, non, passive): sub_noun_phrase (GENDER, ANIM, NUMBER, nom), terminal_verb (MOOD, ASPECT, GENDER, third, NUMBER, tran, non, passive)/ "\n\t\t", sub_noun_phrase,"\n\t\t", "\n\t\t",terminal_verb, "\n\t\t"; terminal_verb (MOOD, ASPECT, GENDER, third, NUMBER, tran, non, passive)/ "\n\t\t",terminal_verb, "\n\t\t". sub_noun_phrase (GENDER, ANIM, NUMBER, nom): noun_phrase (GENDER, ANIM, NUMBER, nom) / "\n", noun_phrase, "\n"; attr_phrase (GENDER, ANIM, NUMBER, nom) / "\n", attr_phrase, "\n". obj_noun_phrase (acc): noun_phrase (GENDER, ANIM, NUMBER, acc) / "\n", noun_phrase, "\n"; attr_phrase (GENDER, ANIM, NUMBER, acc) / "\n", attr_phrase, "\n"; terminal_infinitive (ASPECT, TRANS, REFL, VOICE). compl_noun_phrase (CASE_O): noun_phrase (GENDER, ANIM, NUMBER, CASE_O) / "\n", noun_phrase, "\n"; attr_phrase (GENDER, ANIM, NUMBER, CASE_O) / "\n", attr_phrase, "\n".