The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Lingua::Zompist::Cadhinor - Inflect Cadhinor nouns, verbs, and adjectives

VERSION

This document refers to version 0.92 of Lingua::Zompist::Cadhinor, released on 2002-05-20.

SYNOPSIS

  # no imports; using fully qualified function names
  use Lingua::Zompist::Cadhinor;
  $i_am = Lingua::Zompist::Cadhinor::demeric('ESAN')->[0];

  # import specific functions into the current namespace
  use Lingua::Zompist::Cadhinor qw( demeric crifel );
  $you_know = demeric('SCRIFEC')->[1];
  $they_had = crifel('TENEC')->[5];

  # import all functions into the current namespace
  use Lingua::Zompist::Cadhinor ':all';
  $i_am = demeric('ESAN')->[0];

  $table = noun('CUONOS');  # nouns
  $table = noun('SEO');     # pronouns
  $table = noun('KETTOS');  # pronouns
  $table = adj('KHALTES');  # adjectives

  # verbs -- separate functions
  $table = demeric('SCRIFEC');     # (static definite) present
  $table = scrifel('SCRIFEC');     # (static definite) past
  $table = izhcrifel('SCRIFEC');   # (static definite) past anterior
  $table = budemeric('SCRIFEC');   # (static) remote present
  $table = buscrifel('SCRIFEC');   # (static) remote past
  $table = bubefel('SCRIFEC');     # (static remote) imperative

  # dynamic definite present
  $table = dynamic('SCRIFEC', 'prilise', 'demeric');
  $table = dynamic('SCRIFEC', 'definite', 'present');
  # dynamic remote past
  $table = dynamic('SCRIFEC', 'buprilise', 'scrifel');
  $table = dynamic('SCRIFEC', 'remote', 'past');

  ($present, $past, $gerund) = part('SCRIFEC'); # participles

  # verbs -- via the %verb hash -- in English
  $table = $verb{static}{definite}{present}->('SCRIFEC');
  $table = $verb{dynamic}{remote}{past}->('SCRIFEC');

  # verbs -- via the %verb hash -- in Verdurian/Cadhinor
  $table = $verb{nuncre}{prilise}{demeric}->('SCRIFEC');
  $table = $verb{olocec}{buprilise}{scrifel}->('SCRIFEC');

DESCRIPTION

Overview

Lingua::Zompist::Cadhinor is a module which allows you to inflect Cadhinor words. You can conjugate verbs and decline nouns, pronouns, adjectives, and the definite article.

There is one function to inflect nouns and pronouns. There are also functions for inflect adjectives and to form comparative and superlative forms as well as adverbs from them. Finally, there are several functions to inflect verbs, depending on the aspect, mood, and tense, and a function to form the participles of a verb.

There is also a hash which you can ask to import which may make the maze of verb-inflecting functions a little easier to use.

Exports

Lingua::Zompist::Cadhinor exports no functions by default, in order to avoid namespace pollution. This enables, for example, Lingua::Zompist::Cadhinor and Lingua::Zompist::Verdurian to be used in the same program, since otherwise some 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'.

You can also ask to import the hash %verb. This hash is not imported by default, even if you ask for ':all'; you have to ask for it by name. For example:

  use Lingua::Zompist::Cadhinor qw(:all %verb);
  # or
  use Lingua::Zompist::Cadhinor '%verb';

Capitalisation and character set

This module expects all input to be in upper case and will return all output in upper case. You should use the standard Latin transcription method for Cadhinor (with "TH" for ten, "DH" for edh, and "KH" for kodh).

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.

noun

This function allows you to inflect nouns and pronouns (including personal pronouns such as SEO and LET and relative and interrogative pronouns such as KEDIE, PSIAT, and KETTOS).

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 ten elements, in the following order: nominative singular, genitive singular, accusative singular, dative singular, ablative singular, nominative plural, genitive plural, accusative plural, dative plural, ablative plural. In some cases, some of those elements may be undef (especially in the plural of non-personal pronouns such as KETTOS or THIKEDIE -- but not KAE).

The function should determine the gender and declension of the noun or pronoun automatically. Nouns ending in -IS are taken to be feminine unless they are on an internal list of neuter nouns in -IS. If you find a neuter noun in -IS which is not recognised correctly, please send me email.

  • If you use the singular of a personal pronoun (SEO, LET, TU, or the pseudo-nominative ZE), then you will get both the singular and the plural forms of that pronoun as the ten elements of the resulting arrayref.

  • If you use the plural of a personal pronoun (TAS, MUKH, CAI, or the pseudo-nominative ZA), then you will get the plural forms as the first five elements of the arrayref. The last five elements will be undef.

  • The pseudo-nominative corresponding to the accusative ZETH is ZE; that corresponding to its plural forms is ZA (borrowed from Verdurian).

adj

This function inflects adjectives (including AELU and ILLU). It expects one argument (the adjective to decline) and returns an arrayref on success, or undef or the empty list on failure.

The arrayref will itself contain three arrayrefs, each with ten elements. The first arrayref will contain the masculine forms, the second arrayref will contain the neuter forms, and the third 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 - ablative 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 -- first declension adjectives end in -<cons>/-O/-A, second declension in -ES/-E/-IES, and third declension in -IS/-IS/-IS); however, if there is popular demand for such a function it could be quickly added.

comp

This function returns the comparative form of an adjective (as, "higher" from "high"). It takes one argument (the adjective to inflect) and returns the comparative form, or undef on failure.

super

This function returns the superlative form of an adjective (as, "highest" from "high"). It takes one argument (the adjective to inflect) and returns the superlative form, or undef on failure.

adv

This function returns the adverb corresponding to an adjective (as, "highly" from "high"). It takes one argument (the adjective) and returns the corresponding adverb, or undef on failure.

demeric

This function declines a verb in the (static definite) 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").

scrifel

This function declines a verb in the (static definite) past tense. It is otherwise similar to the function demeric.

izhcrifel

This function declines a verb in the (static definite) past anterior tense. It is otherwise similar to the function demeric.

budemeric

This function declines a verb in the (static) remote present tense. It is otherwise similar to the function demeric.

The name is derived from buprilise "remote" and demeric "present".

buscrifel

This function declines a verb in the (static) remote past tense. It is otherwise similar to the function demeric.

The name is derived from buprilise "remote" and scrifel "past".

bubefel

This function declines a verb in the (static remote) imperative. It is otherwise similar to the function demeric.

  • Note that there is no befel function, since the imperative exists only in the remote mood in Cadhinor.

  • Note also that the first and fourth elements of the returned arrayref will be undef, since the Cadhinor imperative only has forms for second and third persons in singular and plural.

The name is derived from buprilise "remote" and befel "imperative".

dynamic

This function declines a verb in the dynamic aspect. It takes three arguments: first, the verb to decline; second, the mood (one of "prilise" or "buprilise", or the English versions "definite" and "remote"); and third, the tense (one of "demeric", "scrifel", "izhcrifel", or "befel", or the English versions "present", "past", "pastanterior" (or "past anterior"), and "imperative").

The return values are similar to those of the other verbal functions.

part

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 (nominative) participle, the past (accusative) participle, and the gerund (participle of need; "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 regular adjectives, the other forms of the participles may be obtained by calling the adj function, if desired.

%verb

To ease the confusion caused by the different verbal functions (remembering to use a 'bu-' function for the remote tense, or the different interface in the dynamic aspect), it is also possible to inflect verbs by importing the hash %verb into the current namespace.

This hash contains references to subroutines which only need to be passed the name of the verb to be inflected.

To fully qualify a tense, use the aspect, mood, and tense in that order, for example:

  $table = $verb{static}{remote}{present}->('SCRIFEC');

This will place an arrayref with the forms of the static remote present of the verb "SCRIFEC" in $table. It is also possible to use the Verdurian/Cadhinor names of the moods and tenses:

  $table = $verb{nuncre}{buprilise}{demeric}->('SCRIFEC');

The Verdurian/Cadhinor names for static and dynamic are nuncre and olocec, respectively.

For convenience, it is also possible to use an abbreviated notation. Since I suppose that the most common aspect is the static aspect, and the most common mood the definite mood, you can leave off those aspects and moods if you wish. So the following should all yield the same result:

  $table = $verb{static}{definite}{past}->('SCRIFEC');
  $table = $verb{definite}{past}->('SCRIFEC');
  $table = $verb{static}{past}->('SCRIFEC');
  $table = $verb{past}->('SCRIFEC');
  $table = $verb{nuncre}{prilise}{scrifel}->('SCRIFEC');
  $table = $verb{prilise}{scrifel}->('SCRIFEC');
  $table = $verb{nuncre}{scrifel}->('SCRIFEC');
  $table = $verb{scrifel}->('SCRIFEC');

As a special nod to laziness, if you use {imperative} or {befel} without specifying a mood, remote rather than the definite mood is chosen, since there is no definite imperative in Cadhinor. So $verb{befel}->('CREGEN')->[1] and $verb{static}{imperative}->('CREGEN')->[1] give you the equivalent of $verb{static}{remote}{imperative}->('CREGEN')->[1] rather than the equivalent of $verb{static}{definite}{imperative}->('CREGEN')->[1].

On the other hand, you may find this interface to be more confusing than calling the different functions directly. Take your pick and use whichever you prefer :-).

BUGS

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/native.htm or PreCadh.doc, or that you asked Mark Rosenfelder himself; the grammar occasionally changes as small errors are found or words change.

FEEDBACK

If you use this module, then I'd appreciate hearing about it, just so I have an idea of how many people use it. Drop me a line at the address listed in "AUTHOR".

SEE ALSO

Lingua::Zompist::Kebreni, Lingua::Zompist::Verdurian, http://www.zompist.com/native.htm, PreCadh.doc (available from http://www.zompist.com/embassy.htm#learning )

AUTHOR

Philip Newton, <pne@cpan.org>

COPYRIGHT AND LICENCE

[This is basically the BSD licence.]

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:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

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.