# 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".