# rusforir.gra - central AGFL grammar module of the Russian grammar 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
GRAMMAR rusforir.
#|segment mode|
|invisible characters " :\t\n\r\'\`\"\(\)"|
|word terminators " \t\n+:,;.!?/%\$\'\`\""|
#----------------------------ROOT------------------------------#
ANIM :: anm | inanm.
CASE :: CASE_ALL | nom.
CASE_ALL :: CASE_O | acc. # gen, dat, abl, loc, acc
CASE_O :: CASEO | LOC. # gen, dat, abl, loc
CASEO :: GEN | DIRP. # gen, dat, abl
CASEM :: CENTRE | PERIPH. # all
CENTRE :: DIR | GEN. # nom, gen, acc
PERIPH :: DIRP | LOC. # dat, abl, loc
DIRP :: DAT | ABL. # dat, abl.
DIR :: nom | acc.
FCASE :: GEN | DAT | LOC.
GEN :: gen. # | ADD.
#ADD :: part.
DAT :: dat.
ABL :: abl.
LOC :: loc. # | ADDL.
#ADDL :: rloc.
NUMBER :: sg | pl.
QUANT :: small | plur.
ASPECT :: perf | imperf.
GENPER :: GENDER | PERSON.
GENDER :: MASC | FEM | NEUT.
GENMN :: MASC | NEUT. # masc | neut
GENFN :: FEM | NEUT. # fem | neut
MASC :: masc.
FEM :: fem.
NEUT :: neut.
PERSON :: MAN | third.
MAN :: first | second.
MOOD :: TENSE | UNREAL.
UNREAL :: subj | imper.
TENSE :: PRFUT | past.
PRFUT :: pres | fut | presfut.
TRANS :: tran | intran.
REFL :: refl | non.
VOICE :: active | passive.
PRPERSON :: PERSON | refl.
SENTYPE :: one_comp | two_comp.
COMMTYPE :: affir | ques.
CONJTYPE :: COORD | SUBORD.
COORD :: union | oppos | expl.
SUBORD :: subord | comp.
#LEMMA :: TEXT.
TEXT :: LEMMA.
TEXT :: VALUE.
ROOT segment.
INCLUDES phrases.
INCLUDES rmeta.
INCLUDES rinterface.
INCLUDES rinflexnoun.
INCLUDES rinflexverb.
INCLUDES rinflexadjective.
INCLUDES rmorphnoun.
INCLUDES rmorphverb.
INCLUDES rmorphadjective.
INCLUDES rmorphpronoun.
INCLUDES rnounphrase.
INCLUDES rverbphrase.
segment :
phrase, [pmark(COMMTYPE)] / phrase;
oneword / oneword.
phrase:
adj_phrase (GENDER, ANIM, NUMBER, CASE)/"\n", adj_phrase, "\n";
expanded_noun (GENDER, ANIM, NUMBER, CASE)/ "\n", expanded_noun, "\n";
verb_phrase_exp (MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE)/ "\n", verb_phrase_exp, "\n".
oneword:
terminal_verb (MOOD, ASPECT, GENDER, PERSON, NUMBER, TRANS, REFL, VOICE)/ "\n", terminal_verb, "\n";
terminal_infinitive (ASPECT, TRANS, REFL, VOICE)/ "\n", terminal_infinitive, "\n";
terminal_pred_adjective (GENDER, NUMBER)/ "\n", terminal_pred_adjective, "\n";
functional_word / "\n", functional_word, "\n";
terminal_particle (PARTTYPE)/ "\n", terminal_particle, "\n";
terminal_adverb / "\n", terminal_adverb, "\n";
terminal_noun (GENDER, ANIM, NUMBER, CASE) / "\n", terminal_noun, "\n";
terminal_pron (PERSON, NUMBER, CASE)/ "\n", terminal_pron, "\n";
terminal_pron_th (GENDER, third, NUMBER, CASE) / "\n", terminal_pron_th, "\n";
terminal_pron_th_prep (GENDER, third, NUMBER, CASE) / "\n", terminal_pron_th_prep, "\n";
terminal_pronoun (ANIM, CASE, PROTY)/ "\n", terminal_pronoun, "\n";
prepositional_terminal_pronoun (ANIM, CASE, PROTY)/ "\n", prepositional_terminal_pronoun, "\n";
terminal_adjective (GENDER, ANIM, NUMBER, CASE)/ "\n", terminal_adjective, "\n";
terminal_numeral (QUANT, CASE, GENDER) / "\n", terminal_numeral, "\n";
terminal_preposition (CASE_ALL)/ "\n", terminal_preposition, "\n".