POSTS
[Rails] [LaTeX] [Latin] Conjugate Verbs Fully* in Latin with Ruby
BlogOK I said that you conjugate the verb fully, but that’s not entirely true. As I’ve not yet learned the subjunctive system, I’m limited to the indicative present and perfect systems. I’ve also included the participles as well as the infinitives.
Might I add that linguistic and string processing with Ruby is a pleasure. Many Years (tm) ago I tried this is French with Java and it was an unholy pain.
Can anyone guess where I’m going with these last few posts?
- Simplified macron-based entry ( ={a}, ={e}, etc.)
- Process simplified text to UTF-8 ( the language of rails )
- Code to process these strings into full conjugations
- Rails as a display engine
What do you think I’m making?
BTW: This code is very much rough draft, it’s enough to handle the ideas, but needs more modularization and more refactoring, so this is not “steven at his best” level code
[code lang="ruby "]
#!/usr/bin/env ruby -Ku -rjcode
require 'rubygems'
require 'activesupport'
require 'pp'
module LatinSpelling
@@macron_table = {"?" => 'a',"?" => 'e',"?"=>'i',"?"=>'o',"?"=>'u',
"\xc5\x8d"=>"o"}
def get_last_two_chars(input)
return [ input.chars[-2,1].to_s.chomp, input.chars[-1,1].to_s.chomp ]
end
def special_char?(x)
return true if @@macron_table.keys.include?(x.to_s)
end
def check_macrons(input)
# Three rules: Long vowels are shortened when they are followed
# 1. by another vowel
# 2. by m/r/t at the end of a word
# 3. by nt or nd anywhere
if (input.class.to_s == "Array")
return input.map do |person|
check_macrons(person)
end
end
if (input.class.to_s == "String")
# 1. preceeding another macronized letter
input = repair_double_macron(input).to_s if input =~ /[?????][?????aeiou]/
# 2. by m/r/t at the end of a word
if input =~ /[mrt]$/
last_two=get_last_two_chars(input)
if @@macron_table.keys.include?("#{last_two[0]}")
last_two[0] = @@macron_table["#{last_two[0]}"]
returnString = input.chars[0..(input.jlength()-3)] + last_two.join('').to_s
input = returnString.to_s
end # end if @@macron_table
end # end if input =~/[mrt]/
# 3. by nt or nd anywhere
input = repair_nt(input).to_s if input =~ /[?????]n[td]/
end
return input
end # end check_macrons
def repair_double_macron(dmString)
# dmString == "double macron String"
return dmString if dmString !~ /[?????][?????aeiou]/
dblPosition = dmString =~ /([?????][?????aeiou])/
# puts dblPosition.to_s + dmString.chars[dblPosition..dblPosition] + $1
base=dmString[0..dblPosition-1]
rest=dmString.chars[dblPosition+1..99]
firstDblMacChar=$1.chars[0..0]
base=base+ @@macron_table[firstDblMacChar.to_s] \
if @@macron_table.keys.include?(firstDblMacChar)
return base + repair_double_macron(rest)
end
def repair_nt(ntString)
return ntString if ntString !~ /n[td]/
ntPosition = ntString =~ /(n[td])/
base=ntString[0..ntPosition-1]
testchar=base.chars[base.jlength-1..base.jlength-1]
rest=ntString.chars[base.jlength..99]
nSuffix=rest.chars[0..1]
rest=rest.chars[2..99]
base=base.chars[0..base.jlength-2]
if @@macron_table.keys.include?(testchar)
base=base + @@macron_table[testchar.to_s]
end
return base + nSuffix + repair_nt(rest)
end
def is_char_macron_letter(c)
if "?????" =~ /#{c}/
puts "contains and should be set to #{c}"
puts c
puts "hi" + @@macron_table.keys
end
end
end
class Verb < Object
include LatinSpelling
attr_reader :firstpersonform, :infinitive,
:perfectstem, :passperfpart, :stem, :conjugation, :singular_string, :plural_string
attr_writer :singular_string, :plural_string
def initialize(initString)
@definition_string=initString
(@firstpersonform, @infinitive, @perfectstem, @passperfpart)=initString.split(/,\s+/)
pparts=initString.split(/,\s+/)
@passive_endings = ["r", "ris", "tur", "mur", "min\xc4\xab", "ntur"]
@personages = ["First Singular", "Second Singular", "Third Singular",
"First Plural", "Second Plural", "Third Plural"]
@conjugation = evaluate_conjugation
@singular_string= @plural_string = String.new
end
def active_present
oneTwoEndings=%w(s t mus tis nt)
thirdEndings=%w(o is it imus itis unt)
thirdIOEndings=%w(is it imus itis iunt)
if @conjugation == "1" or @conjugation == "2"
return check_macrons([firstpersonform, oneTwoEndings.collect{|x| stem + x}]).flatten!
end
if @conjugation =="3"
return check_macrons([thirdEndings.collect{|x| stem + x}]).flatten!
end
if conjugation=="3-io" or conjugation=="4"
return check_macrons([firstpersonform, thirdIOEndings.collect{|x| stem + x}]).flatten!
end
end
def active_imperfect
oneTwoEndings=%w(bam b?s bat b?mus b?tis bant)
thirdEndings=%w(?bam ?b?s ?bat ?b?mus ?b?tis ?bant)
if @conjugation == "1" or @conjugation == "2"
return check_macrons([oneTwoEndings.collect{|x| stem + x}]).flatten
end
if @conjugation == "3"
return check_macrons([thirdEndings.collect{|x| stem + x}]).flatten
end
if conjugation=="3-io" or conjugation=="4"
base=firstpersonform.clone
base.gsub!(/.$/,'')
check_macrons([thirdEndings.collect{|x| base + x}]).flatten!
end
end
def active_future
oneTwoEndings=%w(b? bis bit bimus bitis bunt)
thirdEndings=%w(am ?s et ?mus ?tis ent)
if @conjugation == "1" or @conjugation=="2"
return check_macrons([oneTwoEndings.collect{|x| stem + x}]).flatten
end
if @conjugation == "3"
return check_macrons([thirdEndings.collect{|x| stem + x}]).flatten
end
if @conjugation == "3-io" or @conjugation == "4"
base=firstpersonform.clone
base.gsub!(/.$/,'')
return check_macrons([thirdEndings.collect{|x| base + x}]).flatten
end
end
def evaluate_conjugation
if @infinitive =~ /?re$/
return "1"
end
if @infinitive =~ /?re$/
return "2"
end
if @infinitive =~ /ere$/
if @firstpersonform =~ /i?/
return "3-io"
else
return "3"
end
end
if @infinitive =~ /?re$/
return "4"
end
end
def stem
# For efficiency, if the iVar @stem is defined, don't go through this structure
return @stem unless @stem.nil?
if @infinitive =~ /?re$/
return @stem = @infinitive.gsub(/(.*)?re$/,'\\1?')
end
if @infinitive =~ /?re$/
return @stem = @infinitive.gsub(/(.*)?re$/,'\\1?')
end
if @infinitive =~ /ere$/
if firstpersonform =~ /io$/
return @stem = @infinitive.gsub(/(.*)ere$/,'\\1')
else
return @stem = @infinitive.gsub(/(.*)ere$/,'\\1')
end
end
if @infinitive =~ /?re$/
return @stem = @infinitive.gsub(/(.*)?re$/,'\\1')
end
end
def to_s
return "[#{self.firstpersonform} #{self.infinitive}" +
" #{self.perfectstem} #{self.passperfpart} {#{@conjugation}}]\n\n"
end
def present_passive
if conjugation=="1" or conjugation=="2"
local_pe=@passive_endings.clone
return check_macrons([@firstpersonform + "r", local_pe[1..-1].map{|x| self.stem + x}].flatten!)
end
if conjugation=="3"
thirdEndings=%w(r eris itur imur imin? untur)
return check_macrons([@firstpersonform+"r",
thirdEndings[1..-1].map{|x| self.stem + x}].flatten!)
end
if @conjugation == "3-io"
base=stem+"i"
temp=[@firstpersonform+"r",
@passive_endings[1..-2].map{|x| base + x},
base+"u"+@passive_endings[-1]].flatten!
temp[1].sub!(/iris$/, 'eris')
return check_macrons(temp)
end
if @conjugation=="4"
base=stem+"i"
temp=[@firstpersonform+"r",
@passive_endings[1..-2].map{|x| base + x},
base+"u"+@passive_endings[-1]].flatten!
return check_macrons(temp)
end
end
def imperfect_passive
if conjugation=="1" or conjugation=="2"
imperfect_stem = self.stem + "b\xc4\x81"
return check_macrons(@passive_endings.map{|x| "#{imperfect_stem}#{x}"})
end
if conjugation=="3"
ministem=self.stem + "?b?"
return check_macrons(@passive_endings.map{|x| ministem + x})
end
if @conjugation == "3-io" or @conjugation=="4"
base=stem+"i?b?"
return check_macrons([@passive_endings.map{|x| base + x}].flatten!)
end
end
def future_passive
if conjugation=="1" or conjugation=="2"
fp_stem=self.stem+"bi"
standards = @passive_endings[2..-1].map{|x| fp_stem + x}
return [@stem + "b\xc5\x8d", @stem + "beris", standards].flatten!
end
if conjugation == "3"
fp_stem=self.stem+"?"
standards = @passive_endings[1..-1].map{|x| fp_stem + x}
return [@stem + "ar", standards].flatten!
end
if @conjugation == "3-io" or @conjugation=="4"
base=stem+"i?"
fp_stem=firstpersonform.clone
fp_stem.sub!(/.$/,'')
return check_macrons([fp_stem+"a"+@passive_endings[0],
@passive_endings[1..-1].map{|x| base + x}].flatten!)
end
end
def perfect_present
substem=perfectstem.chars[0..perfectstem.jlength-2]
endings=%w(ist? it imus istis ?runt)
return [perfectstem, endings.collect{|x| substem+x}].flatten
end
def perfect_past
substem=perfectstem.chars[0..perfectstem.jlength-2]
endings=%w(eram er?s erat er?mus er?tis erant)
return [endings.collect{|x| substem+x}].flatten
end
def perfect_future
substem=perfectstem.chars[0..perfectstem.jlength-2]
endings=%w(er? eris erit erimus eritis erint)
return [endings.collect{|x| substem+x}].flatten
end
def pass_perf_present
endings=%w(sum es est sumus estis sunt)
end
def pass_perf_past
return %w(eram er?s erat er?mus er?tis erant)
end
def pass_perf_future
return %w(er? eris erit erimus eritis erint)
end
def passive_system
puts "Passive System"
p_sys_hash= { :label=>@personages,
:present => self.present_passive,
:imperfect => self.imperfect_passive,
:future => self.future_passive}
0.upto(5) do |index|
printf("%-15s %-10s %-16s %s\n",
p_sys_hash[:label][index],
p_sys_hash[:present][index],
p_sys_hash[:imperfect][index],
p_sys_hash[:future][index]
)
end
puts "\n\n"
end
def active_system
puts "Active System"
p_sys_hash= { :label=>@personages,
:present => self.active_present,
:imperfect => self.active_imperfect,
:future => self.active_future}
0.upto(5) do |index|
printf("%-15s %-10s %-16s %s\n",
p_sys_hash[:label][index],
p_sys_hash[:present][index],
p_sys_hash[:imperfect][index],
p_sys_hash[:future][index]
)
end
puts "\n\n"
end
def perfect_system
puts "Perfect System"
p_sys_hash= { :label=>@personages,
:present => self.perfect_present,
:imperfect => self.perfect_past,
:future => self.perfect_future}
0.upto(5) do |index|
printf("%-15s %-10s %-16s %s\n",
p_sys_hash[:label][index],
p_sys_hash[:present][index],
p_sys_hash[:imperfect][index],
p_sys_hash[:future][index]
)
end
puts "\n\n"
end
def pass_perfect_system
puts "Passive Perfect System"
substem=passperfpart.chars[0..passperfpart.jlength-3].to_s
singular_endings=%w(a um)
plural_endings=%w(? ae a)
@singular_string= passperfpart + ', ' + singular_endings.collect{|x| substem + x}.join(', ')
@plural_string=plural_endings.collect{|x| substem + x}.join(', ')
prefixes=Array.new
3.times{ prefixes.push(@singular_string)}
3.times{ prefixes.push(@plural_string)}
p_sys_hash= { :label=>@personages,
:prefix=>prefixes,
:present => self.pass_perf_present,
:imperfect => self.pass_perf_past,
:future => self.pass_perf_future}
0.upto(5) do |index|
printf("%10s %10s %8s %8s %8s\n",
p_sys_hash[:label][index],
p_sys_hash[:prefix][index],
p_sys_hash[:present][index],
p_sys_hash[:imperfect][index],
p_sys_hash[:future][index]
)
end
end
def participial_stem
if @infinitive =~ /(.*?)re$/
return $1
end
if @infinitive =~ /(.*?)re$/
return $1
end
if @infinitive =~ /(.*)ere$/
#if @firstpersonform =~ /i?/
return $1 + "i?"
#end
# else
# return $1 + "i?"
# end
end
if @infinitive =~ /(.*)?re$/
return $1 + "i?"
end
end
def present_active_participle
endings=%w(ns ntis)
return check_macrons(endings.collect{|x|participial_stem+x.chomp}).join(', ')
end
def future_active_participle
mybase=@passperfpart.gsub(/us$/, "?r")
singular_endings=%w(us a um)
return check_macrons(singular_endings.collect{|x| mybase+"#{x}".chomp}.join(', '))
return base
end
def perfect_passive_participle
mybase=passperfpart.sub(/us$/,'')
singular_endings=%w(us a um)
return check_macrons(singular_endings.collect{|x| mybase+"#{x}".chomp}.join(', '))
end
def future_passive_participle
mybase = participial_stem+"nd"
singular_endings=%w(us a um)
return check_macrons(singular_endings.collect{|x| mybase+"#{x}".chomp}.join(', '))
end
def gerundive
self.future_passive_participle
end
def full_conjugation
active_system
perfect_system
passive_system
pass_perfect_system
end
def participles
puts "\n\n"
puts "Participles associated with: #{@definition_string} "
puts "Present Active Participle: #{present_active_participle}"
puts "Future Active Participle: #{future_active_participle}"
puts "Perfect Passive Participle #{perfect_passive_participle}"
puts "Future Passive Participle #{future_passive_participle}"
puts "\n\n"
end
def present_passive_infinitive
if @infinitive =~ /?re$/
return @infinitive.gsub(/(.*)?re$/,"\\1\xc4\xab")
end
if @infinitive =~ /?re$/
return @infinitive.gsub(/(.*)?re$/,"\\1\xc4\xab")
end
if @infinitive =~ /ere$/
if firstpersonform =~ /io$/
return @infinitive.gsub(/(.*)ere$/,"\\1\xc4\xab")
else
return @infinitive.gsub(/(.*)ere$/,"\\1\xc4\xab")
end
end
if @infinitive =~ /?re$/
return @infinitive.gsub(/(.*)?re$/,"\\1\xc4\xab")
end
end
def infinitives
puts "Infinitives associated with: #{@definition_string} "
puts "Present Active Infinitive: #{@infinitive}"
puts "Perfect Active Infinitive: #{check_macrons(@perfectstem+"sse")}"
puts "Future Active Infinitive: #{future_active_participle.sub(/,.*/,'')} + esse"
puts "Present Passive Infinitive #{present_passive_infinitive}"
puts "Perfect Passive Infinitive #{perfect_passive_participle.sub(/,.*/,'')} + esse"
puts "\n\n"
end
end
puts x=Verb.new("laud?, laud?re, laud?v?, laudatus")
x.full_conjugation
x.participles
x.infinitives
puts y=Verb.new("mone?, mon?re, monu?, monitus")
y.full_conjugation
y.participles
y.infinitives
puts z=Verb.new("ag?, agere, ?g?, ?ctus")
z.full_conjugation
z.participles
z.infinitives
puts v1=Verb.new("capi?, capere, c?p?, captus")
v1.full_conjugation
v1.participles
v1.infinitives
puts v2=Verb.new("audi?, aud?re, aud?v?, auditus")
v2.full_conjugation
v2.participles
v2.infinitives
[/code]
Output:
[laud? laud?re laud?v? laudatus {1}]
Active System
First Singular laud? laud?bam laud?b?
Second Singular laud?s laud?b?s laud?bis
Third Singular laudat laud?bat laud?bit
First Plural laud?mus laud?b?mus laud?bimus
Second Plural laud?tis laud?b?tis laud?bitis
Third Plural laudant laud?bant laud?bunt
Perfect System
First Singular laud?v? laud?veram laud?ver?
Second Singular laud?vist? laud?ver?s laud?veris
Third Singular laud?vit laud?verat laud?verit
First Plural laud?vimus laud?ver?mus laud?verimus
Second Plural laud?vistis laud?ver?tis laud?veritis
Third Plural laud?v?runt laud?verant laud?verint
Passive System
First Singular laudor laud?bar laud?b?
Second Singular laud?ris laud?b?ris laud?beris
Third Singular laud?tur laud?b?tur laud?bitur
First Plural laud?mur laud?b?mur laud?bimur
Second Plural laud?min? laud?b?min? laud?bimin?
Third Plural laudantur laud?bantur laud?bintur
Passive Perfect System
First Singular laudatus, laudata, laudatum sum eram er?
Second Singular laudatus, laudata, laudatum es er?s eris
Third Singular laudatus, laudata, laudatum est erat erit
First Plural laudat?, laudatae, laudata sumus er?mus erimus
Second Plural laudat?, laudatae, laudata estis er?tis eritis
Third Plural laudat?, laudatae, laudata sunt erant erint
Participles associated with: laud?, laud?re, laud?v?, laudatus
Present Active Participle: laud?ns, laudantis
Future Active Participle: laudat?rus, laudat?ra, laudat?rum
Perfect Passive Participle laudatus, laudata, laudatum
Future Passive Participle laudandus, laudanda, laudandum
Infinitives associated with: laud?, laud?re, laud?v?, laudatus
Present Active Infinitive: laud?re
Perfect Active Infinitive: laud?v?sse
Future Active Infinitive: laudat?rus + esse
Present Passive Infinitive laud?
Perfect Passive Infinitive laudatus + esse
[mone? mon?re monu? monitus {2}]
Active System
First Singular mone? mon?bam mon?b?
Second Singular mon?s mon?b?s mon?bis
Third Singular monet mon?bat mon?bit
First Plural mon?mus mon?b?mus mon?bimus
Second Plural mon?tis mon?b?tis mon?bitis
Third Plural monent mon?bant mon?bunt
Perfect System
First Singular monu? monueram monuer?
Second Singular monuist? monuer?s monueris
Third Singular monuit monuerat monuerit
First Plural monuimus monuer?mus monuerimus
Second Plural monuistis monuer?tis monueritis
Third Plural monu?runt monuerant monuerint
Passive System
First Singular moneor mon?bar mon?b?
Second Singular mon?ris mon?b?ris mon?beris
Third Singular mon?tur mon?b?tur mon?bitur
First Plural mon?mur mon?b?mur mon?bimur
Second Plural mon?min? mon?b?min? mon?bimin?
Third Plural monentur mon?bantur mon?bintur
Passive Perfect System
First Singular monitus, monita, monitum sum eram er?
Second Singular monitus, monita, monitum es er?s eris
Third Singular monitus, monita, monitum est erat erit
First Plural monit?, monitae, monita sumus er?mus erimus
Second Plural monit?, monitae, monita estis er?tis eritis
Third Plural monit?, monitae, monita sunt erant erint
Participles associated with: mone?, mon?re, monu?, monitus
Present Active Participle: mon?ns, monentis
Future Active Participle: monit?rus, monit?ra, monit?rum
Perfect Passive Participle monitus, monita, monitum
Future Passive Participle monendus, monenda, monendum
Infinitives associated with: mone?, mon?re, monu?, monitus
Present Active Infinitive: mon?re
Perfect Active Infinitive: monu?sse
Future Active Infinitive: monit?rus + esse
Present Passive Infinitive mon?
Perfect Passive Infinitive monitus + esse
[ag? agere ?g? ?ctus {3}]
Active System
First Singular ago ag?bam agam
Second Singular agis ag?b?s ag?s
Third Singular agit ag?bat aget
First Plural agimus ag?b?mus ag?mus
Second Plural agitis ag?b?tis ag?tis
Third Plural agunt ag?bant agent
Perfect System
First Singular ?g? ?geram ?ger?
Second Singular ?gist? ?ger?s ?geris
Third Singular ?git ?gerat ?gerit
First Plural ?gimus ?ger?mus ?gerimus
Second Plural ?gistis ?ger?tis ?geritis
Third Plural ?g?runt ?gerant ?gerint
Passive System
First Singular agor ag?bar agar
Second Singular ageris ag?b?ris ag?ris
Third Singular agitur ag?b?tur ag?tur
First Plural agimur ag?b?mur ag?mur
Second Plural agimin? ag?b?min? ag?min?
Third Plural aguntur ag?bantur ag?ntur
Passive Perfect System
First Singular ?ctus, ?cta, ?ctum sum eram er?
Second Singular ?ctus, ?cta, ?ctum es er?s eris
Third Singular ?ctus, ?cta, ?ctum est erat erit
First Plural ?ct?, ?ctae, ?cta sumus er?mus erimus
Second Plural ?ct?, ?ctae, ?cta estis er?tis eritis
Third Plural ?ct?, ?ctae, ?cta sunt erant erint
Participles associated with: ag?, agere, ?g?, ?ctus
Present Active Participle: agi?ns, agientis
Future Active Participle: ?ct?rus, ?ct?ra, ?ct?rum
Perfect Passive Participle ?ctus, ?cta, ?ctum
Future Passive Participle agiendus, agienda, agiendum
Infinitives associated with: ag?, agere, ?g?, ?ctus
Present Active Infinitive: agere
Perfect Active Infinitive: ?g?sse
Future Active Infinitive: ?ct?rus + esse
Present Passive Infinitive ag?
Perfect Passive Infinitive ?ctus + esse
[capi? capere c?p? captus {3-io}]
Active System
First Singular capi? capi?bam capiam
Second Singular capis capi?b?s capi?s
Third Singular capit capi?bat capiet
First Plural capimus capi?b?mus capi?mus
Second Plural capitis capi?b?tis capi?tis
Third Plural capiunt capi?bant capient
Perfect System
First Singular c?p? c?peram c?per?
Second Singular c?pist? c?per?s c?peris
Third Singular c?pit c?perat c?perit
First Plural c?pimus c?per?mus c?perimus
Second Plural c?pistis c?per?tis c?peritis
Third Plural c?p?runt c?perant c?perint
Passive System
First Singular capior capi?bar capiar
Second Singular caperis capi?b?ris capi?ris
Third Singular capitur capi?b?tur capi?tur
First Plural capimur capi?b?mur capi?mur
Second Plural capimin? capi?b?min? capi?min?
Third Plural capiuntur capi?bantur capientur
Passive Perfect System
First Singular captus, capta, captum sum eram er?
Second Singular captus, capta, captum es er?s eris
Third Singular captus, capta, captum est erat erit
First Plural capt?, captae, capta sumus er?mus erimus
Second Plural capt?, captae, capta estis er?tis eritis
Third Plural capt?, captae, capta sunt erant erint
Participles associated with: capi?, capere, c?p?, captus
Present Active Participle: capi?ns, capientis
Future Active Participle: capt?rus, capt?ra, capt?rum
Perfect Passive Participle captus, capta, captum
Future Passive Participle capiendus, capienda, capiendum
Infinitives associated with: capi?, capere, c?p?, captus
Present Active Infinitive: capere
Perfect Active Infinitive: c?p?sse
Future Active Infinitive: capt?rus + esse
Present Passive Infinitive cap?
Perfect Passive Infinitive captus + esse
[audi? aud?re aud?v? auditus {4}]
Active System
First Singular audi? audi?bam audiam
Second Singular audis audi?b?s audi?s
Third Singular audit audi?bat audiet
First Plural audimus audi?b?mus audi?mus
Second Plural auditis audi?b?tis audi?tis
Third Plural audiunt audi?bant audient
Perfect System
First Singular aud?v? aud?veram aud?ver?
Second Singular aud?vist? aud?ver?s aud?veris
Third Singular aud?vit aud?verat aud?verit
First Plural aud?vimus aud?ver?mus aud?verimus
Second Plural aud?vistis aud?ver?tis aud?veritis
Third Plural aud?v?runt aud?verant aud?verint
Passive System
First Singular audior audi?bar audiar
Second Singular audiris audi?b?ris audi?ris
Third Singular auditur audi?b?tur audi?tur
First Plural audimur audi?b?mur audi?mur
Second Plural audimin? audi?b?min? audi?min?
Third Plural audiuntur audi?bantur audientur
Passive Perfect System
First Singular auditus, audita, auditum sum eram er?
Second Singular auditus, audita, auditum es er?s eris
Third Singular auditus, audita, auditum est erat erit
First Plural audit?, auditae, audita sumus er?mus erimus
Second Plural audit?, auditae, audita estis er?tis eritis
Third Plural audit?, auditae, audita sunt erant erint
Participles associated with: audi?, aud?re, aud?v?, auditus
Present Active Participle: audi?ns, audientis
Future Active Participle: audit?rus, audit?ra, audit?rum
Perfect Passive Participle auditus, audita, auditum
Future Passive Participle audiendus, audienda, audiendum
Infinitives associated with: audi?, aud?re, aud?v?, auditus
Present Active Infinitive: aud?re
Perfect Active Infinitive: aud?v?sse
Future Active Infinitive: audit?rus + esse
Present Passive Infinitive aud?
Perfect Passive Infinitive auditus + esse