Lingua::Zompist::Verdurian - Inflect Verdurian nouns, verbs, and adjectives
This document refers to version 0.91 of Lingua::Zompist::Verdurian, released on 2002-05-20.
use Lingua::Zompist::Verdurian; $i_am = Lingua::Zompist::Verdurian::demeric('esan')->;
use Lingua::Zompist::Verdurian ':all'; $i_am = demeric('esan')->;
use Lingua::Zompist::Verdurian qw( demeric crifel ); $you_know = demeric('shrifec')->; $they_had = crifel('tenec')->; $word = noun('cuon'); # nouns $word = noun('se'); # pronouns $word = noun('mu'); $word = adj('haute'); # adjectives $word = adj('so'); # definite article # verbs $word = demeric('ivrec'); # present $word = scrifel('ivrec'); # past $word = izhcrifel('ivrec'); # past anterior $word = ctanec('ivrec'); # future $word = epesec('ivrec'); # conditional $word = befel('ivrec'); # imperative $word = classimp('ivrec'); # "classical" imperative $word = part('ivrec'); # participles # keep "unnecessary" accents or not # Note: "lav\xedsia" is "lavi'sia" $Lingua::Zompist::Verdurian::keep_accents = 1; # default $word = noun("lav\xedsia")->; # lavi'sem $Lingua::Zompist::Verdurian::keep_accents = 0; # previous behaviour $word = noun("lav\xedsia")->; # lavisem
Lingua::Zompist::Verdurian is a module which allows you to inflect Verdurian words. You can conjugate verbs and decline nouns, pronouns, adjectives, and the definite article.
There is one function to inflect nouns and pronouns, and another to inflect adjectives and the definite article. Verbs are covered by several functions: one for each tense or mood and another for the participles.
Lingua::Zompist::Verdurian exports no functions by default, in order to avoid namespace pollution. This enables, for example, Lingua::Zompist::Verdurian and Lingua::Zompist::Cadhinor to be used in the same program, since otherwise many of the function names would clash. However, all functions listed here can be imported explicitly by naming them, or they can be imported all together by using the tag ':all'.
This module expects input to be in iso-8859-1 (Latin-1) and will return output in that character set as well. For example, redelcë (meaning woman) should have a byte with the value 235 as the last character, and its accusative, redelcä, will have a byte with the value 228 as its last character.
In the future, this module may expect and produce the charset used by the Maraille font. At that point, the module Lingua::Zompist::Convert is expected to be available, which should be able to convert between that charset and standard charsets such as iso-8859-1 and utf-8.
This function allows you to inflect nouns and pronouns (including personal pronouns such as se and le and relative and interrogative pronouns such as ktë, fsya, and ifkio).
It takes one argument, the noun or pronoun to inflect, and returns an arrayref on success, or
undef or the empty list on failure (for example, because it could not determine which conjugation a noun belonged to).
In general, the arrayref will have eight elements, in the following order: nominative singular, genitive singular, accusative singular, dative singular, nominative plural, genitive plural, accusative plural, dative plural. In some cases, some of those elements may be
undef (especially in the plural of non-personal pronouns such as kio or ifcë -- but not ke).
The function should determine the gender and declension of the noun or pronoun automatically. Nouns ending in -a are taken to be feminine unless they are on an internal list of masculine nouns in -a. If you find a masculine noun in -a which is not recognised correctly, please send me email.
Some special notes:
If you use a plural personal pronoun as input to this function, only the first four elements will be filled (with the plural forms) and the last four elements will be
undef. This appears to be more DWIMmish (at least, it is for me -- I've used ta, for example, as input and wondered why it was being treated as a feminine noun rather than as a personal pronoun).
This function inflects adjectives and the definite article so (which behaves like a declension I adjective). It expects one argument (the adjective to decline or the word so) and returns an arrayref on success, or
undef or the empty list on failure.
The arrayref will itself contain two arrayrefs, each with eight elements. The first arrayref will contain the masculine forms and the second arrayref will contain the feminine forms. The forms are in the same order as in the arrayref returned by the noun function. Briefly, this order is nominative - genitive - accusative - dative in singular and plural.
This function should determine the declension of an adjective automatically.
There is currently no function which returns the declension of an adjective (partly because the matter is so simple -- declension I adjectives end in -C/-a, II in -e/-ë, III in -y/-y, and IV in -ë/a); however, if there is popular demand for such a function it could be quickly added.
This function declines a verb in the present tense. It takes the verb to inflect as its argument and returns an arrayref on success, or
undef or the empty list on failure.
The arrayref will contain six elements, in the following order: first person singular ("I"), second person singular ("thou"), third person singular ("he/she/it"), first person plural ("we"), second person plural ("[all of] you"), third person plural ("they").
This function declines a verb in the past tense. It is otherwise similar to the function demeric.
However, note that esan behaves slightly differently in the past tense. The third person singular and plural form returned are fue/esne and fueu/esnu. fue and fueu are the normal forms for "he/she/it was" and "they were", but esne and esneu are used in an existential sense, as "there was" and "there were". (For example, Ver2Eng.doc gives esne mudray as "there was a wise man" and fue mudray as "he was wise".)
http://www.zompist.com/morphology.htm only mentions esne in this sense, but I believe esnu should also be possible. Ver2Eng.doc, on the other hand, gives a full complement of forms esnai, esnei, esne, esnam, esno, esnu, which I suppose could be used for sentences such as "and suddenly I wasn't any more". In general, however, I think only the third person forms of the existential forms are used.
This function declines a verb in the past anterior tense. It is otherwise similar to the function demeric.
This function declines a verb in the future tense. It is otherwise similar to the function demeric.
This function declines a verb in the conditional. It is otherwise similar to the function demeric.
This function declines a verb in the imperative. It is otherwise similar to the function demeric.
Note that kies has no imperative.
This function declines a verb in the so-called "classical imperative". It is otherwise similar to the function demeric, except for the fact that of the six elements in the arrayref that is returned on success, only elements 1 and 4 have a value, the others being
undef -- since the classical imperative only has forms for le and mu.
Note that kies has no classical imperative.
This function returns the three participles of a verb. It takes the verb as an argument and returns an arrayref (in scalar context) or a list (in list context) of three elements: the present participle, the past participle, and the gerund ("to be <verb>ed"). On failure, it returns
undef or the empty list.
Specifically, the form returned for each participle is the masculine nominative singular form of the participle (which can be considered the citation form). Since participles decline like declension I adjectives (or declension IV adjectives, in the case of present participles of verbs of the C conjugation), the other forms of the participles may be obtained by calling the adj function, if desired.
This variable can be accessed via
$Lingua::Zompist::Verdurian::keep_accents . Setting it to a true value causes accents to be retained even when the accented syllable would be accented anyway due to its position. Setting it to a false value causes such "unnecessary" accents to be deleted. The default value of this variable is true.
For example, the accusative plural of lavísia (a dance) is lavísem if the value of
$Lingua::Zompist::Verdurian::keep_accents is true (retaining the accent) and lavisem if the value of
$Lingua::Zompist::Verdurian::keep_accents is false (removing the accent since the i is accented anyway due to its being the penultimate vowel now).
This variable only affects the declension of nouns and adjectives, not verbal conjugations.
This module should handle irregular words correctly. However, if there is a word that is inflected incorrectly, please send me email and notify me.
However, please make sure that you have checked against a current version of http://www.zompist.com/morphology.htm or that you asked Mark Rosenfelder himself; the grammar occasionally changes as small errors are found or words change.
If you use this module, I'd appreciate it if you drop me a line at the email address in "AUTHOR", just so that I have an idea of how many people use this module at all. Also, if you have any comments, feel free to email me.
Philip Newton, <firstname.lastname@example.org>
Copyright (C) 2001, 2002 by Philip Newton. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.