copy files over from GF-latin

This commit is contained in:
Herbert Lange
2019-01-14 16:40:07 +01:00
parent 579bdfcca5
commit 58c8cf70ea
492 changed files with 6213807 additions and 809 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
concrete FullLex of FullLexAbs = LexiconLat, DictLat-[do_V2];
+1
View File
@@ -0,0 +1 @@
concrete FullLex of FullLexAbs = LexiconLat, DictLat-do_V2;
+1
View File
@@ -0,0 +1 @@
abstract FullLexAbs = Lexicon, DictLatAbs-[do_V2,leg_N,man_N] ;
+1
View File
@@ -0,0 +1 @@
abstract FullLexAbs = Lexicon, DictLatAbs-[do_V2,leg_N] ;
+342
View File
@@ -0,0 +1,342 @@
{-# LANGUAGE FlexibleContexts #-}
import Text.Parsec
import Text.Parsec.Error
import Data.Char
import Data.Maybe
import System.IO
import Data.List
import Debug.Trace
data Case = Nom | Gen | Dat | Acc | Abl deriving Show
data Gender = Masc | Fem | Neuter | Common | Unknown
data Cat = N | V | A | Adv | Interj | Prep | Num | Conj | Pron deriving Show;
data VerbKind = Trans | Intrans | Deponens | SemiDeponens | Impersonal deriving Show
data Comparison = Positive | Comparative | Superlative | PosComp | CompSuper | PosCompSuper | Undeclined deriving Show;
data DictEntry = Entry { cat :: Cat , forms :: [String] , other :: OtherInfos , comment :: String } | EmptyEntry deriving Show;
data OtherInfos = Noun { iclass :: Maybe Int , gen :: Gender } | Adjective { iclass :: Maybe Int , comp :: Comparison } | Verb { iclass :: Maybe Int , kind :: VerbKind } | Preposition { c :: Case } | NoInfos deriving Show;
instance Show Gender where
show Masc = "masculine"
show Fem = "feminine"
show Neuter = "neuter"
show Common = "(feminine | masculine)"
show Unknown = ""
hash :: Stream s m Char => ParsecT s u m Char
hash = char '#'
wordForm :: Stream s m Char => ParsecT s u m String
wordForm =
let
esse :: Stream s m Char => ParsecT s u m String
esse =
string "sum" <|> string "est"
suffix :: Stream s m Char => ParsecT s u m String
suffix =
do
d <- char '-'
sfx <- many letter
spcs <- many space
return $ d : sfx ++ spcs
genitive :: Stream s m Char => ParsecT s u m String
genitive =
do
p1 <- string "(gen"
p2 <- many (noneOf ")")
p3 <- string ")"
return $ p1 ++ p2 ++ p3
in
do
w0 <- optionMaybe (char '-' <|> letter)
ws <- if isJust w0 then many (letter <|> oneOf "()/") else return ""
s1 <- many space
s <- option [] $ try $ esse
s2 <- many space
g <- option [] $ try genitive
s3 <- many space
sfs <- option [] $ try (many suffix)
return $ maybe ws (:ws) w0 ++ s1 ++ s ++ s2 ++ g ++ s3 ++ concat sfs
wordForms :: Stream s m Char => ParsecT s u m [String]
wordForms =
do
wf <- wordForm;
wfs <- many (do
_ <- char ','
skipMany space
wordForm
)
return (wf:wfs)
gender :: Stream s m Char => ParsecT s u m Gender
gender =
do
skipMany space
c <- upper
case c of {
'N' -> return Neuter ;
'M' -> return Masc ;
'F' -> return Fem ;
'C' -> return Common; -- Feminine and/or masculine
'X' -> return Unknown;
_ -> unexpected ("unhandled gender " ++ [c])
}
inflection :: Stream s m Char => ParsecT s u m (Maybe Int)
inflection =
do
_ <- char '(';
i <- digit ;
_ <- string "st" <|> string "nd" <|> string "rd" <|> string "th" ;
_ <- char ')';
return $ Just $ digitToInt i
verbkind :: Stream s m Char => ParsecT s u m VerbKind
verbkind =
do
s <- many upper
case s of {
"INTRANS" -> return Intrans;
"TRANS" -> return Trans;
"DEP" -> return Deponens;
"SEMIDEP" -> return SemiDeponens;
"IMPERS" -> return Impersonal;
_ -> unexpected s -- Probably just return intrans?
}
cases :: Stream s m Char => ParsecT s u m Case
cases =
do
s <- many upper
case s of {
"ACC" -> return Acc;
"ABL" -> return Abl;
_ -> unexpected s
}
rest :: Stream s m Char => ParsecT s u m String
rest =
do
c0 <- char '['
cs <- many anyChar
return (c0:cs)
noun :: Stream s m Char => ParsecT s u m DictEntry
noun =
do
wfs <- wordForms
_ <- char 'N'
skipMany space
i <- option Nothing inflection
g <- gender
skipMany space
c <- rest
return $ Entry N wfs (Noun i g) c
verb :: Stream s m Char => ParsecT s u m DictEntry
verb =
do
wfs <- wordForms
_ <- string "V"
skipMany space
i <- option Nothing inflection
skipMany space
k <- option Intrans verbkind
skipMany space
c <- rest
return $ Entry V wfs (Verb i k) c
adjective :: Stream s m Char => ParsecT s u m DictEntry
adjective =
let
dropLast :: Int -> String -> String
dropLast i s = take (length s - i) s
fixStuff :: [String] -> ([String],OtherInfos)
fixStuff wfs@[f1,f2]
| isSuffixOf "or -or -us" f1 && isSuffixOf "us -a -um" f2 =
let
stem1 = dropLast 10 f1
stem2 = dropLast 9 f2
in
([stem1 ++ "or", stem1 ++ "or", stem1 ++ "us", stem2 ++ "us", stem2 ++ "a", stem2 ++ "um"],
Adjective (Just 3) CompSuper)
| f2 == "undeclined" = (wfs, Adjective (Just (-1)) Undeclined)
fixStuff wfs@[f1,f2,f3]
| isSuffixOf "us" f1 && isSuffixOf "a" f2 && isSuffixOf "um" f3 = (wfs, Adjective (Just 1) Positive)
| isSuffixOf "r" f1 && isSuffixOf "ra" f2 && isSuffixOf "rum" f3 = (wfs, Adjective (Just 1) Positive)
| isSuffixOf "is" f1 && isSuffixOf "is" f2 && isSuffixOf "e" f3 = ([f1,f3], Adjective (Just 3) Positive)
| isSuffixOf "er" f1 && isSuffixOf "is" f2 && isSuffixOf "e" f3 = (wfs, Adjective (Just 3) Positive)
| isSuffixOf "os" f1 && isSuffixOf "os" f2 && isSuffixOf "on" f3 = (wfs, Adjective (Just (-1)) Positive) -- Greek stuff
| isSuffixOf "os" f1 && isSuffixOf "a" f2 && isSuffixOf "on" f3 = (wfs, Adjective (Just (-1)) Positive) -- Green stuff
| f2 == "(gen.)" = ([f1,f3], Adjective (Just 3) Positive)
-- acer, acris -e, acrior -or -us, acerrimus -a -um ADJ
-- abjectus, abjecta -um, abjectior -or -us, abjectissimus -a -um
fixStuff wfs@[f1,f2,f3,f4]
| isSuffixOf "us" f1 && isSuffixOf "a -um" f2 && isSuffixOf "or -or -um" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 2 f1
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "a", stem1 ++ "um",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "um",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 1) PosCompSuper)
| isSuffixOf "us" f1 && isSuffixOf "a -um" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 2 f1
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "a", stem1 ++ "um",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 1) PosCompSuper)
| isSuffixOf "ns" f1 && isSuffixOf "ntis (gen.)" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 11 f2
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "ntis",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 3) PosCompSuper)
| isSuffixOf "er" f1 && isSuffixOf "is -e" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 5 f2
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "is", stem1 ++ "e",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 3) PosCompSuper)
| isSuffixOf "er" f1 && isSuffixOf "a -um" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 5 f2
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "a", stem1 ++ "um",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 1) PosCompSuper)
| isSuffixOf "is" f1 && isSuffixOf "e" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, f2,
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 1) PosCompSuper)
fixStuff wfs = trace ("ERROR: " ++ show wfs) (wfs,NoInfos)
in
do
wfs <- wordForms
_ <- string "ADJ"
-- Set additional infos/normalize foobar
-- i <- return Nothing
skipMany space
c <- rest
let (nwfs,ninfos) = fixStuff $ map skipSpaces wfs -- (Adjective i)
return $ Entry A nwfs ninfos c
adverb :: Stream s m Char => ParsecT s u m DictEntry
adverb =
do
wfs <- wordForms
_ <- string "ADV"
skipMany space
c <- rest
return $ Entry Adv wfs NoInfos c
interjection :: Stream s m Char => ParsecT s u m DictEntry
interjection =
do
wfs <- wordForms
_ <- string "INTERJ"
skipMany space
c <- rest
return $ Entry Interj wfs NoInfos c
preposition :: Stream s m Char => ParsecT s u m DictEntry
preposition =
do
wfs <- wordForms
_ <- string "PREP"
skipMany space
c <- cases
skipMany space
cc <- rest
return $ Entry Prep wfs (Preposition c) cc
wrongLine :: Stream s m Char => ParsecT s u m DictEntry
wrongLine =
do
line <- many1 $ noneOf "["
unexpected $ "Unexpected line " ++ line
lineParser :: Stream s m Char => ParsecT s u m DictEntry
lineParser =
do
_ <- hash
(try noun <|> try verb <|> try adjective <|> try adverb <|> try interjection <|> try preposition) <|> wrongLine
skipSpaces :: String -> String
skipSpaces = dropWhileEnd isSpace --filter (/= ' ')
write :: FilePath -> FilePath -> [(Int,DictEntry)] -> IO ()
write abs conc es =
let
join :: String -> [String] -> String
join g l = foldl (\f s -> f ++ g ++ s ) (head l) (tail l)
writeEntry :: Handle -> Handle -> [(Int,DictEntry)] -> IO ()
writeEntry habs hconc [] =
do
hPutStrLn habs "}"
hClose habs
hPutStrLn hconc "}"
hClose hconc
writeEntry habs hconc (e@(i,Entry cat forms _ _):es) =
do
let lemma = skipSpaces $ head forms
hPutStrLn habs $ " " ++ lemma ++ "_" ++ show i ++ "_" ++ show cat ++ " : " ++ show cat ++ ";";
case e of {
(i,Entry N wfs (Noun (Just 1) gender) c) -> hPutStrLn hconc $ " " ++ lemma ++ "_" ++ show i ++ "_N = mkN \"" ++ head wfs ++ "\"; -- 1st " ++ show gender ++ " " ++ c;
(i,Entry N wfs (Noun (Just 2) gender) c) -> hPutStrLn hconc $ " " ++ lemma ++ "_" ++ show i ++ "_N = mkN \"" ++ head wfs ++ "\"; -- 2nd " ++ show gender ++ " " ++ c;
(i,Entry N wfs (Noun (Just 3) gender) c) -> hPutStrLn hconc $ " " ++ lemma ++ "_" ++ show i ++ "_N = mkN \"" ++ (join "\" \"" $ map skipSpaces wfs) ++ "\" " ++ show gender ++ "; -- 3rd " ++ show gender ++ " " ++ c;
(i,Entry A wfs (Adjective (Just 1) comp@Positive) c) -> hPutStrLn hconc $ " " ++ lemma ++ "_" ++ show i ++ "_N = mkA \"" ++ head wfs ++ "\"; -- 1st " ++ show comp ++ " " ++ c;
_ -> return () -- print e
}
writeEntry habs hconc es
in
do
habs <- openFile abs WriteMode
hconc <- openFile conc WriteMode
hPutStrLn habs "abstract DictLatAbs = Cat ** {"
hPutStrLn habs "\n-- extracted from http://archives.nd.edu/whitaker/dictpage.htm"
hPutStrLn habs "fun"
hPutStrLn hconc "concrete DictLat of DictLatAbs = CatLat ** open ParadigmsLat in {"
hPutStrLn hconc "-- extracted from http://archives.nd.edu/whitaker/dictpage.htm"
hPutStrLn hconc "lin"
writeEntry habs hconc es
main =
let
p :: String -> IO (Maybe DictEntry)
p l =
case parse lineParser "dict" l of {
Left err -> do
{ putStrLn $ drop 1 (showErrorMessages "or" "unknown parse error" "expecting" "unexpected" "end of input" $ errorMessages err) ;
return Nothing
} ;
Right e -> return $ Just e
}
in
do
ws <- fmap lines (readFile "DICTPAGE.RAW")
es <- zip [1..] . catMaybes <$> mapM p ws
write "DictLatAbs.gf" "DictLat.gf" es
+342
View File
@@ -0,0 +1,342 @@
{-# LANGUAGE FlexibleContexts #-}
import Text.Parsec
import Text.Parsec.Error
import Data.Char
import Data.Maybe
import System.IO
import Data.List
import Debug.Trace
data Case = Nom | Gen | Dat | Acc | Abl deriving Show
data Gender = Masc | Fem | Neuter | Common | Unknown
data Cat = N | V | A | Adv | Interj | Prep | Num | Conj | Pron deriving Show;
data VerbKind = Trans | Intrans | Deponens | SemiDeponens | Impersonal deriving Show
data Comparison = Positive | Comparative | Superlative | PosComp | CompSuper | PosCompSuper | Undeclined deriving Show;
data DictEntry = Entry { cat :: Cat , forms :: [String] , other :: OtherInfos , comment :: String } | EmptyEntry deriving Show;
data OtherInfos = Noun { iclass :: Maybe Int , gen :: Gender } | Adjective { iclass :: Maybe Int , comp :: Comparison } | Verb { iclass :: Maybe Int , kind :: VerbKind } | Preposition { c :: Case } | NoInfos deriving Show;
instance Show Gender where
show Masc = "masculine"
show Fem = "feminine"
show Neuter = "neuter"
show Common = "(feminine | masculine)"
show Unknown = ""
hash :: Stream s m Char => ParsecT s u m Char
hash = char '#'
wordForm :: Stream s m Char => ParsecT s u m String
wordForm =
let
esse :: Stream s m Char => ParsecT s u m String
esse =
string "sum" <|> string "est"
suffix :: Stream s m Char => ParsecT s u m String
suffix =
do
d <- char '-'
sfx <- many letter
spcs <- many space
return $ d : sfx ++ spcs
genitive :: Stream s m Char => ParsecT s u m String
genitive =
do
p1 <- string "(gen"
p2 <- many (noneOf ")")
p3 <- string ")"
return $ p1 ++ p2 ++ p3
in
do
w0 <- optionMaybe (char '-' <|> letter)
ws <- if isJust w0 then many (letter <|> oneOf "()/") else return ""
s1 <- many space
s <- option [] $ try $ esse
s2 <- many space
g <- option [] $ try genitive
s3 <- many space
sfs <- option [] $ try (many suffix)
return $ maybe ws (:ws) w0 ++ s1 ++ s ++ s2 ++ g ++ s3 ++ concat sfs
wordForms :: Stream s m Char => ParsecT s u m [String]
wordForms =
do
wf <- wordForm;
wfs <- many (do
_ <- char ','
skipMany space
wordForm
)
return (wf:wfs)
gender :: Stream s m Char => ParsecT s u m Gender
gender =
do
skipMany space
c <- upper
case c of {
'N' -> return Neuter ;
'M' -> return Masc ;
'F' -> return Fem ;
'C' -> return Common; -- Feminine and/or masculine
'X' -> return Unknown;
_ -> unexpected ("unhandled gender " ++ [c])
}
inflection :: Stream s m Char => ParsecT s u m (Maybe Int)
inflection =
do
_ <- char '(';
i <- digit ;
_ <- string "st" <|> string "nd" <|> string "rd" <|> string "th" ;
_ <- char ')';
return $ Just $ digitToInt i
verbkind :: Stream s m Char => ParsecT s u m VerbKind
verbkind =
do
s <- many upper
case s of {
"INTRANS" -> return Intrans;
"TRANS" -> return Trans;
"DEP" -> return Deponens;
"SEMIDEP" -> return SemiDeponens;
"IMPERS" -> return Impersonal;
_ -> unexpected s -- Probably just return intrans?
}
cases :: Stream s m Char => ParsecT s u m Case
cases =
do
s <- many upper
case s of {
"ACC" -> return Acc;
"ABL" -> return Abl;
_ -> unexpected s
}
rest :: Stream s m Char => ParsecT s u m String
rest =
do
c0 <- char '['
cs <- many anyChar
return (c0:cs)
noun :: Stream s m Char => ParsecT s u m DictEntry
noun =
do
wfs <- wordForms
_ <- char 'N'
skipMany space
i <- option Nothing inflection
g <- gender
skipMany space
c <- rest
return $ Entry N wfs (Noun i g) c
verb :: Stream s m Char => ParsecT s u m DictEntry
verb =
do
wfs <- wordForms
_ <- string "V"
skipMany space
i <- option Nothing inflection
skipMany space
k <- option Intrans verbkind
skipMany space
c <- rest
return $ Entry V wfs (Verb i k) c
adjective :: Stream s m Char => ParsecT s u m DictEntry
adjective =
let
dropLast :: Int -> String -> String
dropLast i s = take (length s - i) s
fixStuff :: [String] -> ([String],OtherInfos)
fixStuff wfs@[f1,f2]
| isSuffixOf "or -or -us" f1 && isSuffixOf "us -a -um" f2 =
let
stem1 = dropLast 10 f1
stem2 = dropLast 9 f2
in
([stem1 ++ "or", stem1 ++ "or", stem1 ++ "us", stem2 ++ "us", stem2 ++ "a", stem2 ++ "um"],
Adjective (Just 3) CompSuper)
| f2 == "undeclined" = (wfs, Adjective (Just (-1)) Undeclined)
fixStuff wfs@[f1,f2,f3]
| isSuffixOf "us" f1 && isSuffixOf "a" f2 && isSuffixOf "um" f3 = (wfs, Adjective (Just 1) Positive)
| isSuffixOf "r" f1 && isSuffixOf "ra" f2 && isSuffixOf "rum" f3 = (wfs, Adjective (Just 1) Positive)
| isSuffixOf "is" f1 && isSuffixOf "is" f2 && isSuffixOf "e" f3 = ([f1,f3], Adjective (Just 3) Positive)
| isSuffixOf "er" f1 && isSuffixOf "is" f2 && isSuffixOf "e" f3 = (wfs, Adjective (Just 3) Positive)
| isSuffixOf "os" f1 && isSuffixOf "os" f2 && isSuffixOf "on" f3 = (wfs, Adjective (Just (-1)) Positive) -- Greek stuff
| isSuffixOf "os" f1 && isSuffixOf "a" f2 && isSuffixOf "on" f3 = (wfs, Adjective (Just (-1)) Positive) -- Green stuff
| f2 == "(gen.)" = ([f1,f3], Adjective (Just 3) Positive)
-- acer, acris -e, acrior -or -us, acerrimus -a -um ADJ
-- abjectus, abjecta -um, abjectior -or -us, abjectissimus -a -um
fixStuff wfs@[f1,f2,f3,f4]
| isSuffixOf "us" f1 && isSuffixOf "a -um" f2 && isSuffixOf "or -or -um" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 2 f1
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "a", stem1 ++ "um",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "um",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 1) PosCompSuper)
| isSuffixOf "us" f1 && isSuffixOf "a -um" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 2 f1
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "a", stem1 ++ "um",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 1) PosCompSuper)
| isSuffixOf "ns" f1 && isSuffixOf "ntis (gen.)" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 11 f2
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "ntis",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 3) PosCompSuper)
| isSuffixOf "er" f1 && isSuffixOf "is -e" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 5 f2
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "is", stem1 ++ "e",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 3) PosCompSuper)
| isSuffixOf "er" f1 && isSuffixOf "a -um" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem1 = dropLast 5 f2
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, stem1 ++ "a", stem1 ++ "um",
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 1) PosCompSuper)
| isSuffixOf "is" f1 && isSuffixOf "e" f2 && isSuffixOf "or -or -us" f3 && isSuffixOf "us -a -um" f4 =
let
stem2 = dropLast 10 f3
stem3 = dropLast 9 f4
in
([f1, f2,
stem2 ++ "or", stem2 ++ "or", stem2 ++ "us",
stem3 ++ "us", stem3 ++ "a", stem3 ++ "um"],
Adjective (Just 1) PosCompSuper)
fixStuff wfs = trace ("ERROR: " ++ show wfs) (wfs,NoInfos)
in
do
wfs <- wordForms
_ <- string "ADJ"
-- Set additional infos/normalize foobar
-- i <- return Nothing
skipMany space
c <- rest
let (nwfs,ninfos) = fixStuff $ map skipSpaces wfs -- (Adjective i)
return $ Entry A nwfs ninfos c
adverb :: Stream s m Char => ParsecT s u m DictEntry
adverb =
do
wfs <- wordForms
_ <- string "ADV"
skipMany space
c <- rest
return $ Entry Adv wfs NoInfos c
interjection :: Stream s m Char => ParsecT s u m DictEntry
interjection =
do
wfs <- wordForms
_ <- string "INTERJ"
skipMany space
c <- rest
return $ Entry Interj wfs NoInfos c
preposition :: Stream s m Char => ParsecT s u m DictEntry
preposition =
do
wfs <- wordForms
_ <- string "PREP"
skipMany space
c <- cases
skipMany space
cc <- rest
return $ Entry Interj wfs (Preposition c) cc
wrongLine :: Stream s m Char => ParsecT s u m DictEntry
wrongLine =
do
line <- many1 $ noneOf "["
unexpected $ "Unexpected line " ++ line
lineParser :: Stream s m Char => ParsecT s u m DictEntry
lineParser =
do
_ <- hash
(try noun <|> try verb <|> try adjective <|> try adverb <|> try interjection <|> try preposition) <|> wrongLine
skipSpaces :: String -> String
skipSpaces = dropWhileEnd isSpace --filter (/= ' ')
write :: FilePath -> FilePath -> [(Int,DictEntry)] -> IO ()
write abs conc es =
let
join :: String -> [String] -> String
join g l = foldl (\f s -> f ++ g ++ s ) (head l) (tail l)
writeEntry :: Handle -> Handle -> [(Int,DictEntry)] -> IO ()
writeEntry habs hconc [] =
do
hPutStrLn habs "}"
hClose habs
hPutStrLn hconc "}"
hClose hconc
writeEntry habs hconc (e@(i,Entry cat forms _ _):es) =
do
let lemma = skipSpaces $ head forms
hPutStrLn habs $ " " ++ lemma ++ "_" ++ show i ++ "_" ++ show cat ++ " : " ++ show cat ++ ";";
case e of {
(i,Entry N wfs (Noun (Just 1) gender) c) -> hPutStrLn hconc $ " " ++ lemma ++ "_" ++ show i ++ "_N = mkN \"" ++ head wfs ++ "\"; -- 1st " ++ show gender ++ " " ++ c;
(i,Entry N wfs (Noun (Just 2) gender) c) -> hPutStrLn hconc $ " " ++ lemma ++ "_" ++ show i ++ "_N = mkN \"" ++ head wfs ++ "\"; -- 2nd " ++ show gender ++ " " ++ c;
(i,Entry N wfs (Noun (Just 3) gender) c) -> hPutStrLn hconc $ " " ++ lemma ++ "_" ++ show i ++ "_N = mkN \"" ++ (join "\" \"" $ map skipSpaces wfs) ++ "\" " ++ show gender ++ "; -- 3rd " ++ show gender ++ " " ++ c;
(i,Entry A wfs (Adjective (Just 1) comp@Positive) c) -> hPutStrLn hconc $ " " ++ lemma ++ "_" ++ show i ++ "_N = mkA \"" ++ head wfs ++ "\"; -- 1st " ++ show comp ++ " " ++ c;
_ -> return () -- print e
}
writeEntry habs hconc es
in
do
habs <- openFile abs WriteMode
hconc <- openFile conc WriteMode
hPutStrLn habs "abstract DictLatAbs = Cat ** {"
hPutStrLn habs "\n-- extracted from http://archives.nd.edu/whitaker/dictpage.htm"
hPutStrLn habs "fun"
hPutStrLn hconc "concrete DictLat of DictLatAbs = CatLat ** open ParadigmsLat in {"
hPutStrLn hconc "-- extracted from http://archives.nd.edu/whitaker/dictpage.htm"
hPutStrLn hconc "lin"
writeEntry habs hconc es
main =
let
p :: String -> IO (Maybe DictEntry)
p l =
case parse lineParser "dict" l of {
Left err -> do
{ putStrLn $ drop 1 (showErrorMessages "or" "unknown parse error" "expecting" "unexpected" "end of input" $ errorMessages err) ;
return Nothing
} ;
Right e -> return $ Just e
}
in
do
ws <- fmap lines (readFile "DICTPAGE.RAW")
es <- zip [1..] . catMaybes <$> mapM p ws
write "DictLatAbs.gf" "DictLat.gf" es
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.
+530
View File
@@ -0,0 +1,530 @@
use strict;
use warnings;
use Data::Dumper;
use feature ":5.10";
my %genders = (F => "feminine" , M => "masculine" , N => "neuter" , C => "COMMON" , X => "UNKNOWN" ) ;
my %cases = (ABL => "Abl" , ACC => "Acc", DAT => "Dat", GEN => "Gen", NOM => "Nom" ) ;
my $wordform = "[\\w()/.\\s-]+" ;
my $comment = "(\\[.*)" ;
my $gender = "(F|M|N|C|X)";
my $vtype = "(TRANS|INTRANS|DEP|SEMIDEP|IMPERS)";
my $case = "(ABL|ACC|DAT|GEN|NOM|VOC|LOC)" ;
my $number = "(S|P)" ;
my $declension = "\\((1st|2nd|3rd|4th|5th)\\)";
my $interjection = "#($wordform)\\s+INTERJ\\s+$comment";
my $adverb = "#(($wordform,\\s+)*$wordform)\\s+ADV\\s+$comment";
my $adjective = "#(($wordform,\\s+)*$wordform)\\s+$gender\\s+ADJ\\s+$comment";
my $adjective2 = "#(($wordform,\\s+)*$wordform)\\s+ADJ\\s+$comment";
my $adjective3 = "#(($wordform,\\s+)*$wordform)\\s+ADJ\\s+[1-3]\\s+[1-3]\\s+$case\\s+$number\\s+$gender\\s+POS\\s+$comment";
my $conjunction = "#($wordform)\\s+CONJ\\s+$comment";
my $noun = "#(($wordform,\\s+)*$wordform)\\s+N\\s+$gender\\s+$comment";
my $noun2 = "#(($wordform,\\s+)*$wordform)\\s+N\\s+$declension\\s+$gender\\s+$comment";
my $noun3 = "#(($wordform,\\s+)*$wordform)\\s+N\\s+[0-9]\\s+[0-9]\\s+$case\\s+$number\\s+$gender\\s+$comment";
my $prep = "#($wordform)\\s+PREP\\s+$case\\s+$comment";
my $verb = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$comment";
my $verb2 = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$declension\\s+$comment";
my $verb3 = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$vtype\\s+$comment";
my $verb4 = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$declension\\s+$vtype\\s+$comment";
my $verb5 = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$declension\\s+$case\\s+$comment";
my $absheader = "--# -path=.:..\n" .
"abstract DictLatAbs = Cat,Structural-[here_Adv],Lexicon-[leg_N,man_N,do_V2] ** {\n" .
"-- extracted from http://archives.nd.edu/whitaker/dictpage.htm\n" .
" fun";
my $concheader = "--# -path=.:..\n" .
"concrete DictLat of DictLatAbs = CatLat,StructuralLat-[here_Adv],LexiconLat-[leg_N,man_N,do_V2] ** open Prelude, ParadigmsLat, ResLat, ExtraLat in {\n" .
"-- extracted from http://archives.nd.edu/whitaker/dictpage.htm\n" .
" lin";
my $footer = "}";
open(my $absfh, ">", "DictLatAbs.gf") or die "Can't open > DictLatAbs.gf: $!";
open(my $concfh, ">", "DictLat.gf") or die "Can't open > DictLatAbs.gf: $!";
my %conclines ;
my %abslines ;
my @blacklist = ["multi_N","multae_N","alisalius_A","alius_A","semibos_A","semivir_A"];
print $absfh "$absheader\n";
print $concfh "$concheader\n";
while (my $l = <>) {
chomp($l);
my @wfs;
my $cat;
my $absname;
if ($l =~ /$interjection/)
{
# print "INTERJ Word: $1 -- Comment: $2\n";
my $wf = $1 ;
my $comment = $2 ;
$wf =~ s/\s$//g;
$cat = "Interj" ;
$absname = $wf."_Interj" ;
push @wfs, $wf;
$conclines{$absname} = " $absname = ss \"$wf\" ; -- $comment \n" ;
}
elsif ($l =~ /$adverb/)
{
# print "ADV Word: $1 -- Comment: $3\n";
my $wf = $1 ; # all word forms in one string
my $comment = $3;
@wfs = split /\s*,\s+/, $1; # word forms split into a list
map { s/\s$// } @wfs;
$cat = "Adv" ;
$absname = $wfs[0]."_Adv" ;
if (@wfs == 1)
{
$conclines{$absname} = " $absname = mkAdv \"".$wfs[0]."\" ; -- $comment\n" ;
}
elsif (@wfs == 2)
{
$conclines{$absname} = " $absname =mkAdv \"".$wfs[0]."\" \"".$wfs[1]."\" ; -- $comment\n" ;
}
elsif (@wfs == 3)
{
$conclines{$absname} = " $absname =mkAdv \"".$wfs[0]."\" \"".$wfs[1]."\" \"".$wfs[2]."\" ; -- $comment\n" ;
}
}
elsif ($l =~ /$adjective/)
{
my $wf = $1 ; # all word forms in one string
my $comment = $3;
@wfs = split /\s*,\s+/, $1; # word forms split into a list
map { s/[\s.]$// } @wfs;
$cat = "A" ;
$absname = $wfs[0]."_A" ;
$conclines{$absname} = " $absname = mkA \"".$wfs[0]."\" ; -- $comment\n" ;
# print "A1 Word: $1 -- Comment: $3\n"; # these adjectives should always work
}
elsif ($l =~ /$adjective2/)
{
# print "A2 Word: $1 -- Comment: $3\n";
my $wf = $1 ; # all word forms in one string
my $comment = $3;
@wfs = split /\s*[,-]\s*/, $1; # word forms split into a list
map { s/[\s.]$// } @wfs;
# Word forms contain variations -> Ignore
#print $absfh " ".$wfs[0]."_A : A ;\n" ;
$cat = "A" ;
$absname = $wfs[0]."_A" ;
if ($absname ~~ @blacklist) {
$conclines{$absname} = "-- BLACKLISTED $absname : A2 $wf -- blacklisted -- $comment\n" ;
}
# Wordform contains variants -> to be fixed
elsif ($wf =~ /[(\/\(\))]|(\s-)/ )
{
if ($wfs[1] eq "(gen.)")
{
if (@wfs == 3)
{
$conclines{$absname} = " $absname = mkA \"".$wfs[0]."\" \"".$wfs[2]."\"; -- $comment\n" ;
}
else
{
$conclines{$absname} = "-- TODO $absname : A2 $wf -- $comment\n" ;
}
}
elsif ($wfs[1] =~ /\(gen\.\)/)
{
$wfs[1] =~ s/ \(gen\.\)//g;
$conclines{$absname} = " $absname = mkA \"".$wfs[0]."\" \"".$wfs[1]."\"; -- $comment\n" ;
}
else
{
$conclines{$absname} = "-- SLASHSTUFF $absname : A2 $wf -- $comment\n" ;
}
}
# Abbreviations -> Ignore
elsif ($wf =~ /abbr?\./) {
$conclines{$absname} = "-- IGNORED $absname : A2 $wf -- $comment\n" ;
}
# Undefined -> Ignore
elsif ($wf =~ /undecl/) {
$conclines{$absname} = "-- IGNORED $absname : A2 $wf -- $comment\n" ;
}
# Two word forms, just use both
elsif (@wfs == 2)
{
$conclines{$absname} = " $absname = mkA \"".$wfs[0]."\" \"".$wfs[1]."\"; -- $comment\n" ;
}
# Three word forms -> regular adjective?!?
elsif (@wfs == 3)
{
$conclines{$absname} = " $absname = mkA \"".$wfs[0]."\" \"".$wfs[1]."\" \"".$wfs[2]."\" ; -- $comment\n" ;
}
# Too many word forms
else
{
$conclines{$absname} = "-- TOOMUCH $absname : A2 $wf -- $comment\n" ;
# print "A2 Word: ".$wfs[0]." -- $wf -- Comment: $comment\n" ;
}
}
elsif ($l =~ /$adjective3/)
{
# Overly specific forms to be ignored
$cat = "" ;
}
elsif ($l =~ /$conjunction/)
{
# print "CONJ Word: $1 -- Comment: $2\n";
my $wf = $1 ;
my $comment = $2;
$wf =~ s/\s$//g;
$cat = "Conj" ;
$absname = $wf."_Conj" ;
push @wfs, $wf;
# We don't get enough information for our grammar from the lexicon
$conclines{$absname} = "-- $absname : Conj $wf -- $comment\n" ;
}
elsif ($l =~ /$noun/)
{
my $wf = $1 ;
my $gender = $3;
my $comment = $4;
@wfs = split /\s*,\s+/, $1; # word forms split into a list
$wfs[0] =~ s/[\.\s]//g; # remove punctuation from word form
$cat = "N" ;
$absname = $wfs[0]."_N" ;
# Blacklisted, not handled yet
if ($absname ~~ @blacklist) {
$conclines{$absname} = "-- BLACKLISTED $absname : N1 $wf -- Gender: $gender -- Comment: $comment\n" ;
}
# strange special characters -> ingnored
elsif ($wf =~ /[\/\(\)]/ )
{
$conclines{$absname} = "-- TODO $absname : N1 $wf -- $gender -- $comment\n" ;
}
# Wordforms contain "undecl" -> Ignored
elsif ($wf =~ /undecl/ )
{
$conclines{$absname} = "-- IGNORED $absname : N1 $wf -- $gender -- $comment\n" ;
}
# Wordforms contains abbreviation -> Ignored
elsif ($wf =~ /abb(r?)\./)
{
$conclines{$absname} = "-- IGNORED $absname : N1 $wf -- $gender -- $comment\n" ;
}
elsif(scalar(@wfs) == 1)
{
$absname = $wfs[0]."_".$gender."_N" ;
$conclines{$absname} = " $absname = mkN \"".$wfs[0]."\" ; -- $comment\n" ;
}
elsif(scalar(@wfs) == 2)
{
my $g = $genders{$gender};
if ($gender eq "C")
{
$absname = $wfs[0]."_F_N" ;
$abslines{$absname} = $cat ;
$conclines{$absname} = " $absname = mkN \"".$wfs[0]."\" \"".$wfs[1]."\" feminine ; -- $comment\n" ;
$absname = $wfs[0]."_M_N" ;
$conclines{$absname} = " $absname = mkN \"".$wfs[0]."\" \"".$wfs[1]."\" masculine ; -- $comment\n" ;
}
# Unknown gender
elsif ($gender eq "X")
{
$conclines{$absname} = "-- $absname : N1 $wf -- Gender: $gender -- Comment: $comment\n" ;
}
else
{
$absname = $wfs[0]."_".$gender."_N" ;
$conclines{$absname} = " $absname = mkN \"".$wfs[0]."\" \"".$wfs[1]."\" $g ; -- $comment\n" ;
}
}
else
{
$absname = $wfs[0]."_N";
$conclines{$absname} = "-- $absname : N1 $wf -- Gender: $gender -- Comment: $comment\n" ;
# print "N1 Word: ".$wfs[0]." -- ".scalar(@wfs)." -- Gender: $gender -- Comment: $comment\n" ;
}
}
elsif ($l =~ /$noun2/)
{
my $wf = $1 ;
my $gender = $4;
my $declension = $3;
my $comment = $5;
$cat = "N" ;
@wfs = split /\s*,\s+/, $1; # word forms split into a list
$absname = $wfs[0]."_".$gender."_N" ;
# Blacklisted
if ($absname ~~ @blacklist) {
$conclines{$absname} = "-- BLACKLISTED $absname : N1 $wf -- Gender: $gender -- Comment: $comment\n" ;
}
elsif ($declension eq "1st" || $declension eq "2nd")
{
$conclines{$absname} = " $absname = mkN \"".$wfs[0]."\" ; -- $comment\n" ;
}
elsif (scalar(@wfs) == 2)
{
my $g = $genders{$gender};
if ($gender eq "C")
{
$absname = $wfs[0]."_F_N" ;
$abslines{$absname} = $cat ;
$conclines{$absname} = " $absname = mkN \"".$wfs[0]."\" \"".$wfs[1]."\" feminine ; -- $comment\n" ;
$absname = $wfs[0]."_M_N" ;
$conclines{$absname} = " $absname = mkN \"".$wfs[0]."\" \"".$wfs[1]."\" masculine ; -- $comment\n" ;
}
# Unknown gender
elsif ($gender eq "X")
{
$conclines{$absname} = "-- $absname : N1 $wf -- Gender: $gender -- Comment: $comment\n" ;
}
else
{
$absname = $wfs[0]."_".$gender."_N" ;
$conclines{$absname} = " $absname = mkN \"".$wfs[0]."\" \"".$wfs[1]."\" $g ; -- $comment\n" ;
}
}
else
{
$conclines{$absname} = "-- $absname : N2 $wf -- Gender: $gender -- Declension: $declension -- Comment: $comment\n";
# print "N2 Word: ".$wfs[0]." -- Gender: $gender -- Declension: $declension -- Comment: $comment\n";
}
}
elsif ($l =~ /$noun3/)
{
# Overly specific
$cat = "" ;
}
# Has to be after nouns to avoid problems with N ADJ
elsif ($l =~ /$prep/)
{
my $wf = $1 ;
my $case = $2 ;
my $comment = $3 ;
$wf =~ s/\s//g;
push @wfs, $wf;
# print "PREP Word: $wf -- Case: $case -- Comment: $comment\n";
my $c = $cases{$case};
$cat = "Prep" ;
$absname = $wfs[0]."_".$c."_Prep" ;
$conclines{$absname} = " $absname = mkPrep \"".$wfs[0]."\" $c ; -- $comment\n" ;
}
elsif ($l =~ /$verb/)
{
my $wf = $1 ;
my $comment = $3 ;
$cat = "V" ;
@wfs = split /\s*,\s+/, $wf ;
$absname = $wfs[0]."_V";
# Undefined -> Ignore
if ($absname ~~ @blacklist) {
$conclines{$absname} = "-- BLACKLISTED $absname : V1 $wf -- Comment: $comment\n" ;
}
# strange special characters -> ingnored
elsif ($wf =~ /[(\/\(\))]|(\s-)/ )
{
$conclines{$absname} = "-- TODO $absname : V1 $wf -- $comment\n" ;
}
elsif ($wf =~ /undecl/) {
$conclines{$absname} = "-- IGNORED $absname : V1 $wf -- $comment\n" ;
}
elsif ($wf =~ /additional/ && $wf =~ /forms/) {
$conclines{$absname} = "-- IGNORED $absname : V1 $wf -- $comment\n" ;
}
elsif (@wfs == 4)
{
$conclines{$absname} = " $absname = mkV \"".$wfs[1]."\" \"".$wfs[0]."\" \"".$wfs[2]."\" \"".$wfs[3]."\" ; -- Comment: $comment\n" ;
}
else
{
print "V1 Word: ".$wfs[0]." -- Comment: $comment\n";
}
}
elsif ($l =~ /$verb2/)
{
my $wf = $1 ;
my $declension = $3 ;
my $comment = $4 ;
$cat = "V" ;
@wfs = split /\s*,\s+/, $1;
$absname = $wfs[0]."_V";
if ($absname ~~ @blacklist) {
$conclines{$absname} = "-- BLACKLISTED $absname : V2 $wf -- Declension: $declension -- Comment: $comment\n" ;
}
# strange special characters -> ingnored
elsif ($wf =~ /[(\/\(\))]|(\s-)/ )
{
$conclines{$absname} = "-- TODO $absname : V2 $wf -- Declension: $declension -- Comment: $comment\n" ;
}
elsif ($wf =~ /undecl/) {
$conclines{$absname} = "-- IGNORED $absname : V2 $wf -- Declension: $declension -- Comment: $comment\n" ;
}
if ($declension eq "1st" || $declension eq "2nd")
{
$conclines{$absname} = " $absname = mkV \"".$wfs[1]."\" ; -- $comment\n" ;
}
elsif (scalar(@wfs) == 4)
{
if (!$wf =~ /-/)
{
$conclines{$absname} = " $absname = mkV2 (mkV \"".$wfs[1]."\" \"".$wfs[0]."\" \"".$wfs[2]."\" \"".$wfs[3]."\") ; -- $comment\n" ;
}
elsif ($wfs[2] eq "-" && $wfs[3] eq "-")
{
$conclines{$absname} = " $absname = mkV \"".$wfs[1]."\" \"".$wfs[0]."\" nonExist nonExist ; -- $comment\n" ;
}
elsif ($wfs[3] eq "-")
{
$conclines{$absname} = " $absname = mkV2 (mkV \"".$wfs[1]."\" \"".$wfs[0]."\" \"".$wfs[2]."\" nonExist ; -- $comment\n" ;
}
}
# print "V2 Word: ".$wfs[0]." -- Declension: $declension -- Comment: $comment\n";
}
elsif ($l =~ /$verb3/)
{
my $wf = $1 ;
my $type = $3 ;
my $comment = $4 ;
$cat = "V" ;
@wfs = split /\s*,\s+/, $1 ;
if ($type eq "TRANS")
{
$cat = "V2" ;
}
elsif ($type eq "IMPERS")
{
$cat= "V0" ;
}
else
{
$cat= "V" ;
}
@wfs = split /\s*,\s+/, $1;
$absname = $wfs[0]."_".$cat ;
if ($wf =~ /undecl/)
{
$conclines{$absname} = "-- IGNORED $absname : V3 $wf -- Type: $type -- Comment: $comment\n" ;
}
else
{
if ($cat eq "V")
{
$conclines{$absname} = " $absname = mkV \"".$wfs[1]."\" ; -- $comment\n" ;
}
elsif ($cat eq "V0")
{
$conclines{$absname} = " $absname = mkV0 \"".$wfs[0]."\" ; -- $comment\n" ;
}
else
{
$conclines{$absname} = " $absname = mkV2 (mkV \"".$wfs[1]."\") ; -- $comment\n" ;
}
# print "V3 Word: ".$wfs[0]." -- VType: $type -- Comment: $comment\n";
}
$cat = "V" if $cat eq "V0";
}
elsif ($l =~ /$verb4/)
{
my $wf = $1 ;
my $declension = $3 ;
my $type = $4 ;
my $comment = $5 ;
if ($type eq "TRANS")
{
$cat = "V2" ;
}
elsif ($type eq "IMPERS")
{
$cat= "V0" ;
}
else
{
$cat= "V" ;
}
@wfs = split /\s*,\s+/, $1;
$absname = $wfs[0]."_".$cat ;
if ($declension eq "1st" || $declension eq "2nd")
{
if ($cat eq "V")
{
$conclines{$absname} = " $absname = mkV \"".$wfs[1]."\" ; -- $comment\n" ;
}
elsif ($cat eq "V0")
{
$conclines{$absname} = " $absname = mkV0 \"".$wfs[0]."\" ; -- $comment\n" ;
}
else
{
$conclines{$absname} = " $absname = mkV2 (mkV \"".$wfs[1]."\") ; -- $comment\n" ;
}
}
elsif (scalar(@wfs) == 4)
{
if (!$wf =~ /-/)
{
if ($cat eq "V")
{
$conclines{$absname} = " $absname = mkV \"".$wfs[1]."\" \"".$wfs[0]."\" \"".$wfs[2]."\" \"".$wfs[3]."\"; -- $comment\n" ;
}
elsif ($cat eq "V0")
{
$conclines{$absname} = " $absname = mkV0 \"".$wfs[0]."\"; -- $comment\n" ;
}
else
{
$conclines{$absname} = " $absname = mkV2 (mkV \"".$wfs[1]."\" \"".$wfs[0]."\" \"".$wfs[2]."\" \"".$wfs[3]."\") ; -- $comment\n" ;
}
}
}
$cat = "V" if $cat eq "V0";
}
elsif ($l =~ /$verb5/)
{
my $wf = $1 ;
my $declension = $3 ;
my $case = $4 ;
my $comment = $5 ;
$cat = "V2" ;
@wfs = split /\s*,\s+/, $1;
$absname = $wfs[0]."_".$cat ;
my $c = $cases{$case};
if ($declension eq "1st" || $declension eq "2nd")
{
$conclines{$absname} = " $absname = mkV2 (mkV \"".$wfs[1]."\") ".$c."_Prep ; -- $comment\n" ;
}
else
{
$conclines{$absname} = "-- $absname : V4 $wf -- Declension: $declension -- Case: $case -- Comment: $comment\n" ;
}
#print "V5 Word: ".$wfs[0]." -- Declension: $declension -- Case: $case -- Comment: $comment\n";
}
else
{
$cat = "" ;
print "MISSING: $l\n";
}
if ($cat ne "") {
# print $absfh " ".$wfs[0]."_".$cat." : $cat ;\n" ;
$abslines{$absname} = $cat;
}
}
foreach my $k (sort (keys %abslines))
{
print $absfh " $k : ".$abslines{$k}." ;\n" ;
}
foreach my $k (sort (keys %conclines))
{
given ($k) {
# when (@blacklist) {
# print $concfh "-- ".$conclines{$k};
# }
# default {
print $concfh $conclines{$k};
# }
}
}
print $absfh "$footer\n";
print $concfh "$footer\n";
close($absfh);
close($concfh);
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+102
View File
@@ -0,0 +1,102 @@
#ac CONJ [XXXAO] :: and, and also, and besides;
#acsi CONJ [XXXCW] :: as if; (ac si);
#adque CONJ [XXXCO] :: and, as well as, as soon as; together with; and even; and too/also/now; yet;
#adqui CONJ [XXXES] :: but, yet, notwithstanding, however, rather, well/but now; and yet, still;
#adquin CONJ [XXXEO] :: but, yet, notwithstanding, however, rather, well/but now; and yet, still;
#alii CONJ [XXXCC] :: some ... others (alii ... alii);
#alius CONJ [XXXCO] :: the_one ... the_other (alius ... alius);
#alter CONJ [XXXCO] :: the_one ... the_other (alter ... alter); otherwise;
#an CONJ [XXXCO] :: can it be that (introduces question expecting negative answer/further question);
#an CONJ [XXXAO] :: |whether; (utrum ... an = whether ... or); or; either;
#anne CONJ [XXXCO] :: can it be that (introducing a question expecting a negative answer);
#anne CONJ [XXXEO] :: |whether (or not) (an-ne);
#annon CONJ [XXXCO] :: can it be that (introducing a question expecting a positive answer);
#antequam CONJ [XXXAO] :: before, sooner than; until;
#ast CONJ [XXXBO] :: but, on the other hand/contrary; but yet; at least; in that event; if further;
#at CONJ [XXXAO] :: but, but on the other hand; on the contrary; while, whereas; but yet; at least;
#atenim CONJ [XXXEO] :: but/yet in spite of what has been said; but/yet nevertheless/all the same;
#atque CONJ [XXXAO] :: and, as well/soon as; together with; and moreover/even; and too/also/now; yet;
#atqui CONJ [XXXBO] :: but, yet, notwithstanding, however, rather, well/but now; and yet, still;
#atquin CONJ [XXXBO] :: but, yet, notwithstanding, however, rather, well/but now; and yet, still;
#audem CONJ [XXXEO] :: but (postpositive), on the other hand/contrary; while, however; moreover, also;
#aut CONJ [XXXAO] :: or, or rather/else; either...or (aut...aut) (emphasizing one);
#autem CONJ [XXXAO] :: but (postpositive), on the other hand/contrary; while, however; moreover, also;
#bat CONJ [XXXEO] :: but, while, however; (contemptuous parity of "at" - b-b-but);
#batenim CONJ [XXXEO] :: but, yet, nevertheless, however; (contemptuous parity of "atenim" - b-b-but);
#cumquam CONJ [XXXFO] :: ever; [in combination sicumquam => if ever];
#cuncumque CONJ [XXXFO] :: whenever;
#donec CONJ [XXXAX] :: while, as long as, until;
#dum CONJ [XXXAX] :: while, as long as, until; provided that;
#dummodo CONJ [XXXDX] :: provided (that) (+ subj);
#enim CONJ [XXXAX] :: namely (postpos.); indeed; in fact; for; I mean, for instance, that is to say;
#enimvero CONJ [XXXBO] :: to be sure, certainly; well, upon by word; but, on the other hand; what is more;
#et CONJ [XXXAX] :: and, and even; also, even; (et ... et = both ... and);
#etenim CONJ [XXXBX] :: and indeed, because, since, as a matter of fact (independent reason, emphasis);
#etiam CONJ [XXXAO] :: and also, besides/furthermore, in addition/as well; even, actually; yes/indeed;
#etiam CONJ [XXXAO] :: |now too, as yet, still, even now; yet again; likewise; (particle); (et-iam);
#etiamsi CONJ [XXXDX] :: even if, although;
#etiamtum CONJ [XXXDX] :: even then; yet;
#etsi CONJ [XXXBX] :: although, though, even if; albeit; I know that but;
#igitur CONJ [XXXAO] :: therefore (postpositive), so/then; consequently; accordingly; well/in that case;
#itaque CONJ [XXXAX] :: and so, therefore;
#licet CONJ [XXXCO] :: although, granted that; (with subjunctive);
#modo CONJ [XXXDX] :: but, if only; but only;
#nam CONJ [XXXAX] :: for, on the other hand; for instance;
#namque CONJ [XXXAX] :: for and in fact, on the other hand; insomuch as (strengthened nam);
#ne CONJ [XXXAX] :: that not, lest; (for negative of IMP);
#nec CONJ [XXXAX] :: nor, and..not; not..either, not even;
#necdum CONJ [XXXBX] :: and/but not yet;
#necne CONJ [XXXDX] :: or not;
#nedum CONJ [XXXDX] :: still less; not to speak of; much more;
#nempe CONJ [XXXDX] :: truly, certainly, of course;
#neque CONJ [XXXAX] :: nor [neque..neque=>neither..nor; neque solum..sed etiam=>not only..but also];
#nequedum CONJ [XXXDX] :: and/but not yet;
#neu CONJ [XXXBX] :: or not, and not; (for negative of IMP); [neve ... neve => neither ... nor ];
#neve CONJ [XXXDX] :: or not, and not; (for negative of IMP); [neve ... neve => neither ... nor ];
#ni CONJ [XXXDX] :: if ... not; unless;
#nisi CONJ [XXXAX] :: if not; except, unless;
#nonnisi CONJ [XXXDO] :: not unless; not except; only (on specific terms);
#posteaquam CONJ [XXXDX] :: after;
#postquam CONJ [XXXAX] :: after;
#priusquam CONJ [XXXBX] :: before; until; sooner than;
#prout CONJ [XXXBX] :: as, just as; exactly as;
#quam CONJ [XXXDX] :: how, than;
#quamobrem CONJ [XXXDX] :: why, for what reason, on what account; on account of which, where/there-fore;
#quamquam CONJ [XXXDX] :: though, although; yet; nevertheless;
#quamvis CONJ [XXXDX] :: however much; although;
#quando CONJ [XXXDX] :: when, since, because; [si quando => if ever];
#quandoquidem CONJ [XXXDX] :: since, seeing that;
#quanquam CONJ [XXXDX] :: though, although; yet; nevertheless;
#quasi CONJ [XXXDX] :: as if, just as if, as though; as it were; about;
#que CONJ [FXXET] :: and; (while properly attached as enclitic sometimes copyists make mistakes);
#quia CONJ [XXXAX] :: because;
#quin CONJ [XXXDX] :: so that not, without; that not; but that; that; [quin etiam => moreover];
#quo CONJ [XXXDX] :: whither, in what place, where;
#quoad CONJ [XXXDX] :: as long as, until;
#quocirca CONJ [XXXDX] :: on account of which; wherefore;
#quod CONJ [XXXDX] :: because, as far as, insofar as; [quod si => but if];
#quodnisi CONJ [XXXDX] :: but if not; and if not; (introduces conditional); (quodnisi = quod nisi);
#quodsi CONJ [XXXDX] :: but if; and if; (introduces conditional); (quodsi = quod si)
#quominus CONJ [XXXDX] :: that not, from (quo minus);
#quoniam CONJ [XXXAX] :: because, since, seeing that;
#quum CONJ [DXXCS] :: when, while, as, since, although; as soon;
#sed CONJ [XXXAX] :: but, but also; yet; however, but in fact/truth; not to mention; yes but;
#set CONJ [XXXBX] :: but, but also; yet; however, but in fact/truth; not to mention; yes but;
#seu CONJ [XXXAX] :: or if; or; [sive ... sive => whether ... or, either ... or];
#si CONJ [XXXAX] :: if, if only; whether; [quod si/si quis or quid => but if/if anyone or anything];
#sicumquam CONJ [XXXFO] :: if ever; [si cumquam => if ever];
#sicut CONJ [XXXDX] :: as, just as; like; in same way; as if; as it certainly is; as it were;
#sin CONJ [XXXBX] :: but if; if on the contrary;
#siquidem CONJ [XXXBX] :: accordingly; if indeed/in fact/it is possible, even supposing; since/in that;
#sive CONJ [XXXAX] :: or if; or; [sive ... sive => whether ... or];
#tametsi CONJ [XXXDX] :: even if, although, though;
#tamquam CONJ [XXXAX] :: as, just as, just as if; as it were, so to speak; as much as; so as;
#tanquam CONJ [XXXDX] :: as, just as, just as if; as it were, so to speak; as much as; so as;
#tum CONJ [XXXDS] :: moreover; (frequent in Cicero and before; rare after);
#ubi CONJ [XXXAX] :: where, whereby;
#ut CONJ [XXXAX] :: to (+ subjunctive), in order that/to; how, as, when, while; even if;
#uti CONJ [XXXAX] :: in order that; that, so that; as, when; [ut primum => as soon as];
#utrumnam CONJ [EXXFP] :: whether; (Vulgate 1 Samuel 10:22);
#utut CONJ [XXXCO] :: however; in whatever way;
#vel CONJ [XXXAX] :: or; [vel ... vel => either ... or];
#verumtamen CONJ [XXXDX] :: but yet, nevertheless, but even so, still (resuming after digression);
+106
View File
@@ -0,0 +1,106 @@
#a INTERJ [XXXBO] :: Ah!; (distress/regret/pity, appeal/entreaty, surprise/joy, objection/contempt);
#absit INTERJ [EEXCE] :: "god forbid", "let it be far from the hearts of the faithful";
#aelinon INTERJ [XXXFO] :: exclamation of sorrow; "alas for Linus";
#age INTERJ [XXXCS] :: come!, go to!, well!, all right!; let come;
#agedum INTERJ [XXXCO] :: come!, go to!, well!, all right!;
#agite INTERJ [XXXCQ] :: come!, go to!, well!, all right!;
#ah INTERJ [XXXCO] :: exclamation expressing surprise/irony;
#aha INTERJ [XXXEO] :: exclamation expressing surprise/irony;
#ai INTERJ [XXXFS] :: alas; exclamation expressing grief;
#aisne INTERJ [XXXES] :: indeed? really? is it possible? do you really mean it? (surprise/wonder);
#Alleluia INTERJ [EEQCE] :: Halleluia, cry of joy and praise to God; (praise ye Jehovah);
#apage INTERJ [XXXCO] :: be off!; nonsense!, get away with you!;
#apsit INTERJ [EEXCE] :: "god forbid", "let it be far from the hearts of the faithful";
#atat INTERJ [XXXFO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#atatae INTERJ [XXXFO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#atatatae INTERJ [XXXFO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#atate INTERJ [XXXFS] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#atattae INTERJ [XXXFO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#attat INTERJ [XXXCO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#attatae INTERJ [XXXEO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#attate INTERJ [XXXCS] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#attattatae INTERJ [XXXEO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#au INTERJ [XXXFS] :: oh! ow! oh dear! goodness gracious! (used by women to express consternation);
#ave INTERJ [XXXCO] :: hail!, formal expression of greetings;
#babae INTERJ [CXXEO] :: wow!; exclamation of surprise or amazement;
#be INTERJ [XAXFO] :: baa (sound made by sheep);
#bee INTERJ [DAXFS] :: baa; sound made by a sheep;
#beia INTERJ [XXXFO] :: see!; (comic word as contemptuous echo of "heia");
#bombax INTERJ [XXXFO] :: Splendid! Marvelous!;
#buttuti INTERJ [XEIFS] :: Buttuti!; (exclamation used by Hernici of Latinum at religious festivals);
#buttutti INTERJ [XEIFO] :: Buttuti!; (exclamation used by Hernici of Latinum at religious festivals);
#chaere INTERJ [XXXEO] :: welcome; hail (L+S);
#chere INTERJ [XXXDO] :: welcome; hail (L+S);
#coco INTERJ [XXXFO] :: crow of cock; cock-a-doodle-doo; hen-clucking (L+S);
#cuccuru INTERJ [XXXFO] :: cock-a-doodle-doo!
#cucurru INTERJ [XXXFS] :: cock-a-doodle-doo!
#deurode INTERJ [XXXFO] :: come hither!; (deuro de); (applied to a catamite);
#ecastor INTERJ [XXXDX] :: by Castor (interjection used by women);
#ecca INTERJ [XXXFO] :: Here they (neuter) are!; Behold!, Observe!, Lo!;
#eccam INTERJ [XXXDO] :: Here she/it is!; Behold!, Observe!, Lo!;
#eccas INTERJ [XXXEO] :: Here they (feminine) are!; Behold!, Observe!, Lo!;
#ecce INTERJ [XXXAX] :: behold! see! look! there! here! [ecce eum => here he is];
#eccere INTERJ [XXXDO] :: Here she/it is!; Behold!, Observe!, Lo!; There you are!;
#eccillam INTERJ [XXXEO] :: There she/it is!; Behold!, Observe!, Lo!;
#eccillud INTERJ [XXXFO] :: There it is!; Behold!, Observe!, Lo!;
#eccillum INTERJ [XXXEO] :: There he/it is!; Behold!, Observe!, Lo!;
#eccistam INTERJ [XXXFO] :: There she is!; Behold!, Observe!, Lo!;
#eccum INTERJ [XXXFO] :: Here he/it is!; Behold!, Observe!, Lo!;
#edepol INTERJ [XXXDX] :: by Pollux!;
#ehem INTERJ [XXXEC] :: oho! well well!;
#eheu INTERJ [XXXDX] :: alas! (exclamation of grief/pain/fear);
#ehoi INTERJ [XXXEZ] :: hurrah! (exclamation of happiness);
#ei INTERJ [XXXDX] :: Ah! Woe!, oh dear, alas; (of grief or fear);
#eia INTERJ [XXXBX] :: how now!, Ha, Good, see! (of joy); see!, Quick! (of urgency/astonishment);
#Eli INTERJ [EEQFE] :: My God; [Eli Eli lama sabacthani => My God, my God why hast thou forsaken me];
#Eloi INTERJ [EEQFE] :: My God; (Aramaic);
#em INTERJ [XXXDX] :: there! (of wonder); here!;
#en INTERJ [XXXBX] :: behold! see! lo! here! hey! look at this!;
#eu INTERJ [XXXDX] :: well done! bravo!; splendid! (sometimes ironic);
#eugae INTERJ [XXXDX] :: oh, good! fine! well done! (delight/pleasure/surprise, sometimes ironic);
#euge INTERJ [XXXDX] :: oh, good! fine! well done! (delight/pleasure/surprise, sometimes ironic);
#eugepae INTERJ [XXXEC] :: well done!; (sometimes ironic);
#euhoe INTERJ [XXXDX] :: cry of joy used by the votaries of Bacchus;
#euoeeuhoe INTERJ [XXXEC] :: shout of the Bacchantes;
#ha INTERJ [EXXBT] :: Ah!; (distress/regret/pity, appeal/entreaty, surprise/joy, objection/contempt);
#hahahae INTERJ [EXXES] :: Ha ha!; (laughter, derision);
#hahahe INTERJ [EXXES] :: Ha ha!; (laughter, derision);
#Hallelujah INTERJ [EEQCE] :: Halleluia, cry of joy and praise to God; (praise ye Jehovah);
#hau INTERJ [XXXFS] :: oh! ow! oh dear! goodness gracious! (used by women to express consternation);
#have INTERJ [XXXDX] :: hail!, formal expression of greetings;
#hei INTERJ [XXXDX] :: Ah! Woe!, oh dear, alas; (exclamation expressing anguish, grief or fear);
#heia INTERJ [XXXBX] :: how now!, Ha, Good, see! (of joy); see!, Quick! (of urgency/astonishment);
#Heli INTERJ [EEQFW] :: My God; [~ ~ lemma sabacthani => My God, my God why hast thou forsaken me];
#hem INTERJ [XXXCO] :: what ' s that? (surprise/concern); Ah!/alas! (unhappiness); there/here! (wonder);
#hercle INTERJ [XXXDX] :: By Hercules!; assuredly, indeed;
#hercule INTERJ [XXXDX] :: by Hercules!; assuredly, indeed;
#heu INTERJ [XXXAX] :: oh! ah! alas! (an expression of dismay or pain);
#heus INTERJ [XXXDX] :: hey!, ho!, ho there!, listen!;
#Hosanna INTERJ [DEQEE] :: Hosanna, "God save", a cry of praise (Hebrew);
#Hosianna INTERJ [DEQEE] :: Hosanna, "God save", a cry of praise (Hebrew);
#hui INTERJ [XXXDX] :: whee!, wow!; sound of surprise or approbation not unlike "whee";
#ilicet INTERJ [XXXCO] :: you may go/off with you; it ' s over; at once; [~ malam crucem => to Hell with];
#Io INTERJ [XXXAO] :: Yo!; Hurrah! (ritual exclamation of strong emotion/joy); Ho!; Look!; Quick!;
#lema INTERJ [EEQFW] :: Eli Eli lama sabacthani/My God, my God why hast thou forsaken me Matthew 27:46;
#lo INTERJ [EXXFP] :: Lo!; (magic word to cure bite of mad dog);
#maranatha INTERJ [DEXEP] :: our Lord cometh; (Aramaic through Greek);
#mecastor INTERJ [XXXDO] :: by Castor!; (oath used by women);
#mehercle INTERJ [XXXDX] :: By Hercules! assuredly, indeed;
#mehercule INTERJ [XXXDX] :: by Hercules! assuredly, indeed;
#mehercules INTERJ [XXXDX] :: by Hercules! assuredly, indeed;
#o INTERJ [XXXAX] :: Oh!;
#oh INTERJ [XXXDX] :: oh! ah!;
#ohe INTERJ [XXXDX] :: hey! hey there!;
#oi INTERJ [XXXEC] :: oh! ah!;
#oiei INTERJ [XXXDS] :: oh dear; (lamentation);
#Osanna INTERJ [DEQEE] :: Hosanna, "God save", a cry of praise (Hebrew);
#phy INTERJ [XXXFO] :: pish! tush!; (expression of disgust);
#Pol INTERJ [XXXDX] :: by Pollux; truly; really;
#ridiculum INTERJ [XXXEO] :: the idea/question is absurd/ridiculous!;
#st INTERJ [XXXDX] :: hush! hist!;
#tat INTERJ [BXXFS] :: what! (Plautus);
#triumphe INTERJ [XXXFS] :: triumphant!;
#va INTERJ [DXXCO] :: Ha!/oh!/ah!; (exclamation of pain/dismay, of contempt/anger, of surprise/joy);
#vae INTERJ [XXXBX] :: alas, woe, ah; oh dear; (Vae, puto deus fio. - Vespasian); Bah!, Curses!;
#vah INTERJ [XXXCO] :: Ha!/oh!/ah!; (exclamation of pain/dismay, of contempt/anger, of surprise/joy);
#vaha INTERJ [BXXCO] :: Ha!/oh!/ah!; (exclamation of pain/dismay, of contempt/anger, of surprise/joy);
+107
View File
@@ -0,0 +1,107 @@
#a INTERJ [XXXBO] :: Ah!; (distress/regret/pity, appeal/entreaty, surprise/joy, objection/contempt);
#absit INTERJ [EEXCE] :: "god forbid", "let it be far from the hearts of the faithful";
#aelinon INTERJ [XXXFO] :: exclamation of sorrow; "alas for Linus";
#age INTERJ [XXXCS] :: come!, go to!, well!, all right!; let come;
#agedum INTERJ [XXXCO] :: come!, go to!, well!, all right!;
#agite INTERJ [XXXCQ] :: come!, go to!, well!, all right!;
#ah INTERJ [XXXCO] :: exclamation expressing surprise/irony;
#aha INTERJ [XXXEO] :: exclamation expressing surprise/irony;
#ai INTERJ [XXXFS] :: alas; exclamation expressing grief;
#aisne INTERJ [XXXES] :: indeed? really? is it possible? do you really mean it? (surprise/wonder);
#Alleluia INTERJ [EEQCE] :: Halleluia, cry of joy and praise to God; (praise ye Jehovah);
#apage INTERJ [XXXCO] :: be off!; nonsense!, get away with you!;
#apsit INTERJ [EEXCE] :: "god forbid", "let it be far from the hearts of the faithful";
#atat INTERJ [XXXFO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#atatae INTERJ [XXXFO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#atatatae INTERJ [XXXFO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#atate INTERJ [XXXFS] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#atattae INTERJ [XXXFO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#attat INTERJ [XXXCO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#attatae INTERJ [XXXEO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#attate INTERJ [XXXCS] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#attattatae INTERJ [XXXEO] :: ah! oh! alas! (expression of sudden enlightenment/surprise/fear/warning);
#au INTERJ [XXXFS] :: oh! ow! oh dear! goodness gracious! (used by women to express consternation);
#ave INTERJ [XXXCO] :: hail!, formal expression of greetings;
#babae INTERJ [CXXEO] :: wow!; exclamation of surprise or amazement;
#be INTERJ [XAXFO] :: baa (sound made by sheep);
#bee INTERJ [DAXFS] :: baa; sound made by a sheep;
#beia INTERJ [XXXFO] :: see!; (comic word as contemptuous echo of "heia");
#bombax INTERJ [XXXFO] :: Splendid! Marvelous!;
#buttuti INTERJ [XEIFS] :: Buttuti!; (exclamation used by Hernici of Latinum at religious festivals);
#buttutti INTERJ [XEIFO] :: Buttuti!; (exclamation used by Hernici of Latinum at religious festivals);
#chaere INTERJ [XXXEO] :: welcome; hail (L+S);
#chere INTERJ [XXXDO] :: welcome; hail (L+S);
#coco INTERJ [XXXFO] :: crow of cock; cock-a-doodle-doo; hen-clucking (L+S);
#cuccuru INTERJ [XXXFO] :: cock-a-doodle-doo!
#cucurru INTERJ [XXXFS] :: cock-a-doodle-doo!
#deurode INTERJ [XXXFO] :: come hither!; (deuro de); (applied to a catamite);
#ecastor INTERJ [XXXDX] :: by Castor (interjection used by women);
#ecca INTERJ [XXXFO] :: Here they (neuter) are!; Behold!, Observe!, Lo!;
#eccam INTERJ [XXXDO] :: Here she/it is!; Behold!, Observe!, Lo!;
#eccas INTERJ [XXXEO] :: Here they (feminine) are!; Behold!, Observe!, Lo!;
#ecce INTERJ [XXXAX] :: behold! see! look! there! here! [ecce eum => here he is];
#eccere INTERJ [XXXDO] :: Here she/it is!; Behold!, Observe!, Lo!; There you are!;
#eccillam INTERJ [XXXEO] :: There she/it is!; Behold!, Observe!, Lo!;
#eccillud INTERJ [XXXFO] :: There it is!; Behold!, Observe!, Lo!;
#eccillum INTERJ [XXXEO] :: There he/it is!; Behold!, Observe!, Lo!;
#eccistam INTERJ [XXXFO] :: There she is!; Behold!, Observe!, Lo!;
#eccum INTERJ [XXXFO] :: Here he/it is!; Behold!, Observe!, Lo!;
#edepol INTERJ [XXXDX] :: by Pollux!;
#ehem INTERJ [XXXEC] :: oho! well well!;
#eheu INTERJ [XXXDX] :: alas! (exclamation of grief/pain/fear);
#ehoi INTERJ [XXXEZ] :: hurrah! (exclamation of happiness);
#ei INTERJ [XXXDX] :: Ah! Woe!, oh dear, alas; (of grief or fear);
#eia INTERJ [XXXBX] :: how now!, Ha, Good, see! (of joy); see!, Quick! (of urgency/astonishment);
#Eli INTERJ [EEQFE] :: My God; [Eli Eli lama sabacthani => My God, my God why hast thou forsaken me];
#Eloi INTERJ [EEQFE] :: My God; (Aramaic);
#em INTERJ [XXXDX] :: there! (of wonder); here!;
#en INTERJ [XXXBX] :: behold! see! lo! here! hey! look at this!;
#eu INTERJ [XXXDX] :: well done! bravo!; splendid! (sometimes ironic);
#eugae INTERJ [XXXDX] :: oh, good! fine! well done! (delight/pleasure/surprise, sometimes ironic);
#euge INTERJ [XXXDX] :: oh, good! fine! well done! (delight/pleasure/surprise, sometimes ironic);
#eugepae INTERJ [XXXEC] :: well done!; (sometimes ironic);
#euhoe INTERJ [XXXDX] :: cry of joy used by the votaries of Bacchus;
#euoeeuhoe INTERJ [XXXEC] :: shout of the Bacchantes;
#ha INTERJ [EXXBT] :: Ah!; (distress/regret/pity, appeal/entreaty, surprise/joy, objection/contempt);
#hahahae INTERJ [EXXES] :: Ha ha!; (laughter, derision);
#hahahe INTERJ [EXXES] :: Ha ha!; (laughter, derision);
#Hallelujah INTERJ [EEQCE] :: Halleluia, cry of joy and praise to God; (praise ye Jehovah);
#hau INTERJ [XXXFS] :: oh! ow! oh dear! goodness gracious! (used by women to express consternation);
#have INTERJ [XXXDX] :: hail!, formal expression of greetings;
#hei INTERJ [XXXDX] :: Ah! Woe!, oh dear, alas; (exclamation expressing anguish, grief or fear);
#heia INTERJ [XXXBX] :: how now!, Ha, Good, see! (of joy); see!, Quick! (of urgency/astonishment);
#Heli INTERJ [EEQFW] :: My God; [~ ~ lemma sabacthani => My God, my God why hast thou forsaken me];
#hem INTERJ [XXXCO] :: what ' s that? (surprise/concern); Ah!/alas! (unhappiness); there/here! (wonder);
#hercle INTERJ [XXXDX] :: By Hercules!; assuredly, indeed;
#hercule INTERJ [XXXDX] :: by Hercules!; assuredly, indeed;
#heu INTERJ [XXXAX] :: oh! ah! alas! (an expression of dismay or pain);
#heus INTERJ [XXXDX] :: hey!, ho!, ho there!, listen!;
#Hosanna INTERJ [DEQEE] :: Hosanna, "God save", a cry of praise (Hebrew);
#Hosianna INTERJ [DEQEE] :: Hosanna, "God save", a cry of praise (Hebrew);
#hui INTERJ [XXXDX] :: whee!, wow!; sound of surprise or approbation not unlike "whee";
#ilicet INTERJ [XXXCO] :: you may go/off with you; it ' s over; at once; [~ malam crucem => to Hell with];
#Io INTERJ [XXXAO] :: Yo!; Hurrah! (ritual exclamation of strong emotion/joy); Ho!; Look!; Quick!;
#lema INTERJ [EEQFW] :: Eli Eli lama sabacthani/My God, my God why hast thou forsaken me Matthew 27:46;
#lo INTERJ [EXXFP] :: Lo!; (magic word to cure bite of mad dog);
#maranatha INTERJ [DEXEP] :: our Lord cometh; (Aramaic through Greek);
#mecastor INTERJ [XXXDO] :: by Castor!; (oath used by women);
#mehercle INTERJ [XXXDX] :: By Hercules! assuredly, indeed;
#mehercule INTERJ [XXXDX] :: by Hercules! assuredly, indeed;
#mehercules INTERJ [XXXDX] :: by Hercules! assuredly, indeed;
#o INTERJ [XXXAX] :: Oh!;
#oh INTERJ [XXXDX] :: oh! ah!;
#ohe INTERJ [XXXDX] :: hey! hey there!;
#oi INTERJ [XXXEC] :: oh! ah!;
#oiei INTERJ [XXXDS] :: oh dear; (lamentation);
#Osanna INTERJ [DEQEE] :: Hosanna, "God save", a cry of praise (Hebrew);
#phy INTERJ [XXXFO] :: pish! tush!; (expression of disgust);
#Pol INTERJ [XXXDX] :: by Pollux; truly; really;
#qualiter ADV [XXXDX] :: as, just as; in what/which way/state/manner (INTERJ), how;
#ridiculum INTERJ [XXXEO] :: the idea/question is absurd/ridiculous!;
#st INTERJ [XXXDX] :: hush! hist!;
#tat INTERJ [BXXFS] :: what! (Plautus);
#triumphe INTERJ [XXXFS] :: triumphant!;
#va INTERJ [DXXCO] :: Ha!/oh!/ah!; (exclamation of pain/dismay, of contempt/anger, of surprise/joy);
#vae INTERJ [XXXBX] :: alas, woe, ah; oh dear; (Vae, puto deus fio. - Vespasian); Bah!, Curses!;
#vah INTERJ [XXXCO] :: Ha!/oh!/ah!; (exclamation of pain/dismay, of contempt/anger, of surprise/joy);
#vaha INTERJ [BXXCO] :: Ha!/oh!/ah!; (exclamation of pain/dismay, of contempt/anger, of surprise/joy);
File diff suppressed because it is too large Load Diff
+129
View File
@@ -0,0 +1,129 @@
#amb NUM [XXXBO] :: both; two of pair; two considered together, both parties; each of two;
#bes NUM [XXXCO] :: two thirds; [bes alter => one and two thirds];
#biscentum, biscentesimus -a -um, biscenteni -ae -a, biscentie(n)s NUM [XXXCE] :: two hundred;
#bisen NUM [XXXFW] :: twelve each/apiece/times/at a time; by twelves; (twice six);
#centensim NUM [XXXCO] :: one hundredth; (part/in series);
#centensum NUM [BXXEG] :: one hundredth; (part/in series);
#centum, centesimus -a -um, centeni -ae -a, centie(n)s NUM [XXXAO] :: one hundred;
#decem, decimus -a -um, deni -ae -a, decie(n)s NUM [XXXBO] :: ten; (ten men);
#decum NUM [XXXCO] :: tenth; (~ unda/fluctus => 10th wave, of great size); [cum decumo => tenfold];
#des NUM [AXXEO] :: two thirds; [bes alter => one and two thirds];
#ducentensim NUM [BXXEG] :: two hundredth;
#ducentensum NUM [BXXEG] :: two hundredth;
#ducenti -ae -a, ducentesimus -a -um, duceni -ae -a, ducentie(n)s NUM [XXXBX] :: two hundred;
#duo -ae o, secundus -a -um, bini -ae -a, bis NUM [XXXAX] :: two (pl.);
#duodecim, duodecimus -a -um, duodeni -ae -a, duodecie(n)s NUM [XXXAX] :: twelve;
#duodecum NUM [BXXCG] :: twelve;
#duodetriginta, duodetricesimus -a -um, duodetriceni -ae -a, duodetricie(n)s NUM [XXXEX] :: twenty eight;
#duodevicensim NUM [BXXCG] :: eighteen;
#duodevicensum NUM [BXXCG] :: eighteen;
#duodevigensim NUM [BXXFG] :: eighteenth;
#duodevigensum NUM [BXXFG] :: eighteenth;
#duodeviginti, duodevicesimus -a -um, duodeviceni -ae -a, duodevicie(n)s NUM [XXXDX] :: eighteen;
#is, ea, id PRON [XXXAX] :: he/she/it/they (by GENDER/NUMBER); DEMONST: that, he/she/it, they/them;
#mill NUM [XXXAX] :: thousand; a thousand; [mille passuum => thousand paces = a mile];
#mille, millesimus -a -um, milleni -ae -a, milie(n)s NUM [XXXAX] :: thousand; a thousand; [mille passuum => thousand paces = a mile];
#millensim NUM [BXXEG] :: thousandth;
#millensum NUM [BXXEG] :: thousandth;
#multot NUM [XXXCZ] :: many times;
#nonagensim NUM [BXXEG] :: ninetieth;
#nonagensum NUM [BXXEG] :: ninetieth;
#nonaginta, nonagesimus -a -um, nonageni -ae -a, nonagie(n)s NUM [XXXBX] :: ninety;
#nongentensim NUM [BXXEG] :: nine hundredth;
#nongentensum NUM [BXXEG] :: nine hundredth;
#nongenti -ae -a, nongentesimus -a -um, nongeni -ae -a, noningentie(n)s NUM [XXXBX] :: nine hundred;
#novem, nonus -a -um, noveni -ae -a, novie(n)s NUM [XXXBX] :: nine;
#novendecim NUM [XXXDX] :: nineteen;
#octavodecem, octavodecimus -a -um, octavodeni -ae -a, octavidecie(n)s NUM [EXXET] :: eighteen;
#octingentensim NUM [BXXEG] :: eight hundredth;
#octingentensum NUM [BXXEG] :: eight hundredth;
#octingenti -ae -a, octingentesimus -a -um, octingeni -ae -a, octingentie(n)s NUM [XXXBX] :: eight hundred;
#octo, octavus -a -um, octoni -ae -a, octie(n)s NUM [XXXAX] :: eight;
#octodecim NUM [XXXDX] :: eighteen;
#octogensim NUM [BXXEG] :: eightieth;
#octogensum NUM [BXXEG] :: eightieth;
#octoginta, octogesimus -a -um, octogeni -ae -a, octogie(n)s NUM [XXXBX] :: eighty;
#plur NUM [DXXES] :: often, frequently; sometimes; several/many times (Bee);
#plus, pluris N (3rd) N [XXXDX] :: more, too much, more than enough; more than (w/NUM); higher price/value (GEN);
#quadragensim NUM [BXXEG] :: fortieth;
#quadragensum NUM [BXXEG] :: fortieth;
#quadraginta, quadragesimus -a -um, quadrageni -ae -a, quadragie(n)s NUM [XXXBX] :: forty;
#quadrin NUM [BXXEG] :: four each/apiece/times/fold (how many each);
#quadringentensim NUM [BXXEG] :: four hundredth;
#quadringentensum NUM [BXXEG] :: four hundredth;
#quadringenti -ae -a, quadringentesimus -a -um, quadringeni -ae -a, quadringentie(n)s NUM [XXXBX] :: four hundred;
#quartadecem, quartadecimus -a -um, quartadeni -ae -a, quartadecie(n)s NUM [XXXEX] :: fourteen;
#quattor NUM [XXXES] :: four;
#quattuor, quartus -a -um, quaterni -ae -a, - NUM [XXXAO] :: four;
#quattuordecim, -, -, quatterdecie(n)s NUM [XXXCO] :: fourteen; (the 14 front theater rows reserved for equestrian order);
#quatuor NUM [XXXDO] :: four;
#quatuordecim, -, -, quaterdecie(n)s NUM [XXXDS] :: fourteen;
#quinct NUM [BXXAG] :: five;
#quindecim, quindecimus -a -um, quindeci -ae -a, quindecie(n)s NUM [XXXCO] :: fifteen;
#quingentensim NUM [BXXEG] :: five hundredth;
#quingentensum NUM [BXXEG] :: five hundredth;
#quingenti -ae -a, quingentesimus -a -um, quingeni -ae -a, quingentie(n)s NUM [XXXBX] :: five hundred;
#quinquagensim NUM [BXXEG] :: fiftieth;
#quinquagensum NUM [BXXEG] :: fiftieth;
#quinquaginta, quinquagesimus -a -um, quinquageni -ae -a, quinquagie(n)s NUM [XXXBX] :: fifty;
#quinque, quintus -a -um, quini -ae -a, quinquie(n)s NUM [XXXAX] :: five;
#quintadecem, quintadecimus -a -um, quintadeni -ae -a, quintadecie(n)s NUM [FXXET] :: fifteen;
#quotquot NUM [XXXDX] :: however many;
#sedecim, -, -, sedecie(n)s NUM [XXXDX] :: sixteen;
#septem, septimus -a -um, septeni -ae -a, septie(n)s NUM [XXXAX] :: seven;
#septemdecim NUM [XXXEC] :: seventeen;
#septendecim NUM [XXXDX] :: seventeen;
#septim NUM [BXXEG] :: seven;
#septingentensim NUM [BXXEG] :: seven hundredth;
#septingentensum NUM [BXXEG] :: seven hundredth;
#septingenti -ae -a, septingentesimus -a -um, septingeni -ae -a, septingentie(n)s NUM [XXXBX] :: seven hundred;
#septuagensim NUM [BXXEG] :: seventieth;
#septuagensum NUM [BXXEG] :: seventieth;
#septuaginta, septuagesimus -a -um, septuageni -ae -a, septuagie(n)s NUM [XXXBX] :: seventy;
#septum NUM [XXXEG] :: seven; (primarily used in compound words);
#sescentensim NUM [BXXEG] :: six hundredth;
#sescentensum NUM [BXXEG] :: six hundredth;
#sescenti -ae -a, sescentesimus -a -um, sesceni -ae -a, sexcentie(n)s NUM [XXXBX] :: six hundred;
#sesterti NUM [XXXDX] :: two and a half (2 1/2);
#sex, sextus -a -um, seni -ae -a, sexie(n)s NUM [XXXAX] :: six;
#sexagensim NUM [BXXEG] :: sixtieth;
#sexagensum NUM [BXXEG] :: sixtieth;
#sexaginta, sexagesimus -a -um, sexageni -ae -a, sexagie(n)s NUM [XXXBX] :: sixty;
#terci NUM [FXXAM] :: three;
#toc NUM [EXXDX] :: so often, so many times;
#tot NUM [XXXAO] :: as/so often, so many times, such a great number of times; that number of times;
#tot NUM [XXXDX] :: so many, such a number of; as many, so many; such a great number of;
#trecentensim NUM [BXXEG] :: three hundredth;
#trecentensum NUM [BXXEG] :: three hundredth;
#trecenti -ae -a, trecentesimus -a -um, treceni -ae -a, trecentie(n)s NUM [XXXBQ] :: three hundred; (used to denote a large number);
#tredecim, -, -, terdecie(n)s NUM [XXXDX] :: thirteen;
#tres -es -ia, tertius -a -um, terni -ae -a, ter NUM [XXXAX] :: three;
#tricensim NUM [BXXEG] :: thirtieth;
#tricensum NUM [BXXEG] :: thirtieth;
#trigen NUM [DXXEO] :: thirtieth;
#trigensim NUM [DXXEO] :: thirtieth;
#trigesim NUM [XXXES] :: thirty;
#triginta, tricesimus -a -um, triceni -ae -a, tricie(n)s NUM [XXXBX] :: thirty;
#trin NUM [XXXEX] :: three each/apiece/times/fold; triple; three in any case; three at a time;
#tripl NUM [XXXDX] :: threefold, triple; three;
#undecim, undecimus -a -um, undeni -ae -a, undecie(n)s NUM [XXXAX] :: eleven;
#undecum NUM [BXXCG] :: eleven;
#undenonaginta, undenonagesimus -a -um, undenonageni -ae -a, undenonagie(n)s NUM [XXXFS] :: eighty-nine;
#undeoctoginta, undeoctogesimus -a -um, undeoctogeni -ae -a, undeoctogie(n)s NUM [XXXFS] :: seventy-nine;
#undequadraginta, undequadragesimus -a -um, undequadrageni -ae -a, undequadragie(n)s NUM [XXXFS] :: thirty-nine;
#undequinquaginta, undequinquagesimus -a -u, undequinquageni -ae -a, undequinquagie(n)s NUM [XXXFS] :: forty-nine;
#undesexaginta, undesexagesimus -a -um, undesexageni -ae -a, undesexagie(n)s NUM [XXXFS] :: fifty-nine;
#undetricensim NUM [BXXEG] :: twenty ninth;
#undetricensum NUM [BXXEG] :: twenty ninth;
#undetriginta, undetricesimus -a -um, undetriceni -ae -a, undetricie(n)s NUM [XXXEX] :: twenty nine;
#undevicensim NUM [BXXEG] :: nineteenth;
#undevicensum NUM [BXXEG] :: nineteenth;
#undevigensim NUM [BXXFG] :: nineteenth;
#undevigensum NUM [BXXFG] :: nineteenth;
#undeviginti, undevicesimus -a -um, undeviceni -ae -a, undevicie(n)s NUM [XXXDX] :: nineteen;
#unus -a -um, primus -a -um, singuli -ae -a, semel NUM [XXXAX] :: one;
#vicensim NUM [BXXEG] :: twentieth;
#vicensum NUM [BXXEG] :: twentieth;
#vigensim NUM [BXXCG] :: twenty;
#vigensum NUM [BXXBG] :: twenty;
#viginti, vicesimus -a -um, viceni -ae -a, vicie(n)s NUM [XXXAX] :: twenty;
+12
View File
@@ -0,0 +1,12 @@
#quicum PACK [XXXCX] :: (w/-cum) only ABL with whom?, with which?;
#quicumque, quaecumque, quodcumque PACK [XXXCX] :: (w/-cumque) who/whatever, no matter who/what, in any time/way, however small;
#quicunque, quaecunque, quodcunque PACK [XXXCX] :: (w/-cunque) who/whatever, no matter who/what, in any time/way, however small;
#quidam, quaedam, quoddam PACK [XXXCX] :: (w/-dam) certain; as INDEF a certain thing; somebody, one, something;
#quilibet, quaelibet, quodlibet PACK [XXXCX] :: (w/-libet) whatever, whichever, no matter, what you please; any whatever;
#quilibet, quaelibet, quodlibet PACK [XXXCX] :: (w/-libet) whoever/whatever you please; anyone/anything whatever;
#quilubet, quaelubet, quodlubet PACK [XXXCX] :: (w/-lubet) whatever, whichever, no matter, what you please; any whatever;
#quilubet, quaelubet, quodlubet PACK [XXXCX] :: (w/-lubet) whoever/whatever you please; anyone/anything whatever;
#quinam, quaenam, quodnam PACK [XXXCX] :: (w/-nam) who then; who in the world; which, I insist;
#quisnam, quaenam, quidnam PACK INTERR [XXXCX] :: (w/-nam) who?; what?; who then?; who in the world?;
#quisque, quaeque, quodque PACK [XXXCX] :: (w/-que) each, each one; every, everybody, everything (more than 2); whatever;
#quivis, quaevis, quodvis PACK [XXXCX] :: (w/-vis) any whatever; anyone/anything you wish;
+93
View File
@@ -0,0 +1,93 @@
#a PREP ABL [XXXAO] :: by (agent), from (departure, cause, remote origin/time); after (reference);
#a PREP ACC [XXXCO] :: ante, abb. a.; [in calendar expression a. d. = ante diem => before the day];
#ab PREP ABL [XXXAO] :: by (agent), from (departure, cause, remote origin/time); after (reference);
#abante PREP ABL [XXXES] :: from before/in front of;
#abs PREP ABL [XXXAO] :: by (agent), from (departure, cause, remote origin (time); after (reference);
#absque PREP ABL [XXXCO] :: without, apart from, away from; but for; except for; were it not for; (early);
#abusque PREP ABL [XXXCL] :: all the way from; from/since the time of;
#ad PREP ACC [XXXAO] :: to, up to, towards; near, at; until, on, by; almost; according to; about w/NUM;
#adusque PREP ACC [XXXCO] :: all the way/right up to, as far as, to the point of (space/time/number/degree);
#adversum PREP ACC [XXXAO] :: facing, opposite, against, towards; contrary to; face to face, in presence of;
#adversus PREP ACC [XXXAO] :: facing, opposite, against, towards; contrary to; face to face, in presence of;
#advorsum PREP ACC [BXXAX] :: facing, opposite, against, towards; contrary to; face to face, in presence of;
#advorsus PREP ACC [BXXAX] :: facing, opposite, against, towards; contrary to; face to face, in presence of;
#ante PREP ACC [XXXAO] :: in front/presence of, in view; before (space/time/degree); over against, facing;
#apsque PREP ABL [XXXCO] :: without, apart from, away from; but for; except for; were it not for; (early);
#apud PREP ACC [XXXAO] :: at, by, near, among; at the house of; before, in the presence/writings/view of;
#aput PREP ACC [XXXAO] :: at, by, near, among; at the house of; before, in presence/writings/view/eyes of;
#callim PREP ACC [AXXBO] :: without knowledge of, unknown to; concealed/secret from; (rarely w/ABL);
#cata PREP ABL [DXXFS] :: by; (in distributed sense); [cata mane mane => morning by morning];
#causa PREP GEN [XXXAO] :: for sake/purpose of (preceded by GEN.), on account/behalf of, with a view to;
#caussa PREP GEN [XXXAO] :: for the sake/purpose of (preceded by GEN), on account/behalf of, with view to;
#circa PREP ACC [XXXAO] :: around, on bounds of; about/near (space/time/numeral); concerning; with;
#circiter PREP ACC [XXXDO] :: about, around, near (space/time/numeral); towards;
#circum PREP ACC [XXXBO] :: around, about, among, near (space/time), in neighborhood of; in circle around;
#cis PREP ACC [XXXCO] :: on/to this/near side of, short of; before, within (time);
#citra PREP ACC [XXXAO] :: on this/near side of, short of; before; below, less than; without regard to;
#clam PREP ABL [XXXEO] :: without knowledge of, unknown to; concealed/secret from; (rarely w/ABL);
#clam PREP ACC [XXXCO] :: without knowledge of, unknown to; concealed/secret from; (rarely w/ABL);
#clanculum PREP ACC [XXXFO] :: without knowledge of, secret from;
#com PREP ABL [AXXAC] :: with, together/jointly/along/simultaneous with, amid; supporting; attached;
#com PREP ABL [AXXAC] :: |under command/at the head of; having/containing/including; using/by means of;
#contra PREP ACC [XXXAO] :: against, facing, opposite; weighed against; as against; in resistance/reply to;
#contra PREP ACC [XXXAO] :: |contrary to, not in conformance with; the reverse of; otherwise than;
#contra PREP ACC [XXXAO] :: ||towards/up to, in direction of; directly over/level with; to detriment of;
#coram PREP ABL [XXXCO] :: in the presence of, before; (may precede or follow object); personally (L+S);
#cum PREP ABL [XXXAO] :: with, together/jointly/along/simultaneous with, amid; supporting; attached;
#cum PREP ABL [XXXAO] :: |under command/at the head of; having/containing/including; using/by means of;
#de PREP ABL [XXXAO] :: down/away from, from, off; about, of, concerning; according to; with regard to;
#desub PREP ABL [XXXFO] :: below, under; beneath;
#desuper PREP ACC [XXXEO] :: over, above;
#dextra PREP ACC [DXXES] :: on the right of; on the right-hand side of;
#e PREP ABL [XXXAX] :: out of, from; by reason of; according to; because of, as a result of;
#erga PREP ACC [XXXBX] :: towards, opposite (friendly);
#ex PREP ABL [XXXAX] :: out of, from; by reason of; according to; because of, as a result of;
#extra PREP ACC [XXXAX] :: outside of, beyond, without, beside; except;
#fine PREP ABL [XXXDX] :: up to;
#fini PREP ABL [XXXDX] :: up to;
#in PREP ABL [XXXAX] :: in, on, at (space); in accordance with/regard to/the case of; within (time);
#in PREP ACC [XXXAX] :: into; about, in the mist of; according to, after (manner); for; to, among;
#infra PREP ACC [XXXAX] :: below, lower than; later than;
#insuper PREP ACC [XXXBX] :: above, on top; in addition (to); over;
#inter PREP ACC [XXXAX] :: between, among; during; [inter se => to each other, mutually];
#intra PREP ACC [XXXAX] :: within, inside; during; under;
#juxta PREP ACC [XXXBX] :: near, (very) close to, next to; hard by, adjoining; on a par with; like;
#juxtim PREP ACC [XXXDX] :: next to, beside;
#ob PREP ACC [XXXAX] :: on account of, for the sake of, for; instead of; right before;
#palam PREP ABL [XXXDS] :: in presence of;
#penes PREP ACC [XXXDX] :: in the power of, in the hands of (person); belonging to;
#per PREP ACC [XXXAX] :: through (space); during (time); by, by means of;
#pone PREP ACC [XXXDX] :: behind (in local relations) (rare);
#post PREP ACC [XXXAX] :: behind (space), after (time); subordinate to (rank);
#prae PREP ABL [XXXAX] :: before, in front; in view of, because of;
#praeter PREP ACC [XXXAX] :: besides, except, contrary to; beyond (rank), in front of, before; more than;
#praeterquam PREP ACC [XXXDX] :: except, besides, beyond, contrary to;
#pro PREP ABL [XXXAX] :: on behalf of; before; in front/instead of; for; about; according to; as, like;
#prope PREP ACC [XXXAX] :: near;
#propter PREP ACC [XXXAX] :: near; on account of; by means of; because of;
#qum PREP ABL [BXXEO] :: with, together/jointly/along/simultaneous with, amid; supporting; attached;
#qum PREP ABL [BXXEO] :: |under command/at the head of; having/containing/including; using/by means of;
#quom PREP ABL [BXXDO] :: with, together/jointly/along/simultaneous with, amid; supporting; attached;
#quom PREP ABL [BXXDO] :: |under command/at the head of; having/containing/including; using/by means of;
#quum PREP ABL [DXXCS] :: with, together with, at the same time with; under; at; along with, amid;
#secundum PREP ACC [XXXBS] :: after; according to; along/next to, following/immediately after, close behind;
#secus PREP ACC [XXXCO] :: by, beside, alongside; in accordance with;
#sine PREP ABL [XXXAX] :: without; (sometimes after object); lack; [Johannis sine Terra => John Lackland];
#sub PREP ABL [XXXAX] :: under, beneath, behind, at the foot of (rest); within; during, about (time);
#sub PREP ACC [XXXAX] :: under; up to, up under, close to (of motion); until, before, up to, about;
#subter PREP ABL [XXXEO] :: beneath, under (cover/shelter); towards/at base (of wall/cliff); (usu. ACC);
#subter PREP ACC [XXXCO] :: beneath, under (cover/shelter); towards/at base (of wall/cliff);
#super PREP ABL [XXXAX] :: over (space), above, upon, in addition to; during (time); concerning; beyond;
#super PREP ACC [XXXBX] :: upon/on; over, above, about; besides (space); during (time); beyond (degree);
#supra PREP ACC [XXXAX] :: above, beyond; over; more than; in charge of, in authority over;
#supter PREP ABL [XXXEO] :: beneath, under (cover/shelter); towards/at base (of wall/cliff); (usu. ACC);
#supter PREP ACC [XXXCO] :: beneath, under (cover/shelter); towards/at base (of wall/cliff);
#tenus PREP ABL [XXXDX] :: as far as, to the extent of, up to, down to;
#trans PREP ACC [XXXDX] :: across, over; beyond; on the other side; (only local relations);
#uls PREP ACC [XXXDX] :: beyond, on the other side, on that side; more than, besides;
#ultra PREP ACC [XXXDX] :: beyond, on the other side, on that side; more than, besides;
#usque PREP ACC [XXXDX] :: up to (name of town or locality);
#versum PREP ACC [XXXCO] :: toward, in the direction of; (placed after ACC); -ward (after name of town);
#versus PREP ACC [XXXCO] :: toward, in the direction of; (placed after ACC); -ward (after name of town);
#vorsum PREP ACC [BXXCO] :: toward, in the direction of; (placed after ACC); -ward (after name of town);
#vorsus PREP ACC [BXXCO] :: toward, in the direction of; (placed after ACC); -ward (after name of town);
+94
View File
@@ -0,0 +1,94 @@
#a PREP ABL [XXXAO] :: by (agent), from (departure, cause, remote origin/time); after (reference);
#a PREP ACC [XXXCO] :: ante, abb. a.; [in calendar expression a. d. = ante diem => before the day];
#ab PREP ABL [XXXAO] :: by (agent), from (departure, cause, remote origin/time); after (reference);
#abante PREP ABL [XXXES] :: from before/in front of;
#abs PREP ABL [XXXAO] :: by (agent), from (departure, cause, remote origin (time); after (reference);
#absque PREP ABL [XXXCO] :: without, apart from, away from; but for; except for; were it not for; (early);
#abusque PREP ABL [XXXCL] :: all the way from; from/since the time of;
#ad PREP ACC [XXXAO] :: to, up to, towards; near, at; until, on, by; almost; according to; about w/NUM;
#adusque PREP ACC [XXXCO] :: all the way/right up to, as far as, to the point of (space/time/number/degree);
#adversum PREP ACC [XXXAO] :: facing, opposite, against, towards; contrary to; face to face, in presence of;
#adversus PREP ACC [XXXAO] :: facing, opposite, against, towards; contrary to; face to face, in presence of;
#advorsum PREP ACC [BXXAX] :: facing, opposite, against, towards; contrary to; face to face, in presence of;
#advorsus PREP ACC [BXXAX] :: facing, opposite, against, towards; contrary to; face to face, in presence of;
#ante PREP ACC [XXXAO] :: in front/presence of, in view; before (space/time/degree); over against, facing;
#apsque PREP ABL [XXXCO] :: without, apart from, away from; but for; except for; were it not for; (early);
#apud PREP ACC [XXXAO] :: at, by, near, among; at the house of; before, in the presence/writings/view of;
#aput PREP ACC [XXXAO] :: at, by, near, among; at the house of; before, in presence/writings/view/eyes of;
#callim PREP ACC [AXXBO] :: without knowledge of, unknown to; concealed/secret from; (rarely w/ABL);
#cata PREP ABL [DXXFS] :: by; (in distributed sense); [cata mane mane => morning by morning];
#causa PREP GEN [XXXAO] :: for sake/purpose of (preceded by GEN.), on account/behalf of, with a view to;
#caussa PREP GEN [XXXAO] :: for the sake/purpose of (preceded by GEN), on account/behalf of, with view to;
#circa PREP ACC [XXXAO] :: around, on bounds of; about/near (space/time/numeral); concerning; with;
#circiter PREP ACC [XXXDO] :: about, around, near (space/time/numeral); towards;
#circum PREP ACC [XXXBO] :: around, about, among, near (space/time), in neighborhood of; in circle around;
#cis PREP ACC [XXXCO] :: on/to this/near side of, short of; before, within (time);
#citra PREP ACC [XXXAO] :: on this/near side of, short of; before; below, less than; without regard to;
#clam PREP ABL [XXXEO] :: without knowledge of, unknown to; concealed/secret from; (rarely w/ABL);
#clam PREP ACC [XXXCO] :: without knowledge of, unknown to; concealed/secret from; (rarely w/ABL);
#clanculum PREP ACC [XXXFO] :: without knowledge of, secret from;
#com PREP ABL [AXXAC] :: with, together/jointly/along/simultaneous with, amid; supporting; attached;
#com PREP ABL [AXXAC] :: |under command/at the head of; having/containing/including; using/by means of;
#contra PREP ACC [XXXAO] :: against, facing, opposite; weighed against; as against; in resistance/reply to;
#contra PREP ACC [XXXAO] :: |contrary to, not in conformance with; the reverse of; otherwise than;
#contra PREP ACC [XXXAO] :: ||towards/up to, in direction of; directly over/level with; to detriment of;
#coram PREP ABL [XXXCO] :: in the presence of, before; (may precede or follow object); personally (L+S);
#cum PREP ABL [XXXAO] :: with, together/jointly/along/simultaneous with, amid; supporting; attached;
#cum PREP ABL [XXXAO] :: |under command/at the head of; having/containing/including; using/by means of;
#de PREP ABL [XXXAO] :: down/away from, from, off; about, of, concerning; according to; with regard to;
#desub PREP ABL [XXXFO] :: below, under; beneath;
#desuper PREP ACC [XXXEO] :: over, above;
#dextra PREP ACC [DXXES] :: on the right of; on the right-hand side of;
#e PREP ABL [XXXAX] :: out of, from; by reason of; according to; because of, as a result of;
#erga PREP ACC [XXXBX] :: towards, opposite (friendly);
#ex PREP ABL [XXXAX] :: out of, from; by reason of; according to; because of, as a result of;
#extra PREP ACC [XXXAX] :: outside of, beyond, without, beside; except;
#fine PREP ABL [XXXDX] :: up to;
#fini PREP ABL [XXXDX] :: up to;
#in PREP ABL [XXXAX] :: in, on, at (space); in accordance with/regard to/the case of; within (time);
#in PREP ACC [XXXAX] :: into; about, in the mist of; according to, after (manner); for; to, among;
#incircum ADV [XXXFS] :: round about; (L+S calls it PREP);
#infra PREP ACC [XXXAX] :: below, lower than; later than;
#insuper PREP ACC [XXXBX] :: above, on top; in addition (to); over;
#inter PREP ACC [XXXAX] :: between, among; during; [inter se => to each other, mutually];
#intra PREP ACC [XXXAX] :: within, inside; during; under;
#juxta PREP ACC [XXXBX] :: near, (very) close to, next to; hard by, adjoining; on a par with; like;
#juxtim PREP ACC [XXXDX] :: next to, beside;
#ob PREP ACC [XXXAX] :: on account of, for the sake of, for; instead of; right before;
#palam PREP ABL [XXXDS] :: in presence of;
#penes PREP ACC [XXXDX] :: in the power of, in the hands of (person); belonging to;
#per PREP ACC [XXXAX] :: through (space); during (time); by, by means of;
#pone PREP ACC [XXXDX] :: behind (in local relations) (rare);
#post PREP ACC [XXXAX] :: behind (space), after (time); subordinate to (rank);
#prae PREP ABL [XXXAX] :: before, in front; in view of, because of;
#praeter PREP ACC [XXXAX] :: besides, except, contrary to; beyond (rank), in front of, before; more than;
#praeterquam PREP ACC [XXXDX] :: except, besides, beyond, contrary to;
#pro PREP ABL [XXXAX] :: on behalf of; before; in front/instead of; for; about; according to; as, like;
#prope PREP ACC [XXXAX] :: near;
#propter PREP ACC [XXXAX] :: near; on account of; by means of; because of;
#qum PREP ABL [BXXEO] :: with, together/jointly/along/simultaneous with, amid; supporting; attached;
#qum PREP ABL [BXXEO] :: |under command/at the head of; having/containing/including; using/by means of;
#quom PREP ABL [BXXDO] :: with, together/jointly/along/simultaneous with, amid; supporting; attached;
#quom PREP ABL [BXXDO] :: |under command/at the head of; having/containing/including; using/by means of;
#quum PREP ABL [DXXCS] :: with, together with, at the same time with; under; at; along with, amid;
#secundum PREP ACC [XXXBS] :: after; according to; along/next to, following/immediately after, close behind;
#secus PREP ACC [XXXCO] :: by, beside, alongside; in accordance with;
#sine PREP ABL [XXXAX] :: without; (sometimes after object); lack; [Johannis sine Terra => John Lackland];
#sub PREP ABL [XXXAX] :: under, beneath, behind, at the foot of (rest); within; during, about (time);
#sub PREP ACC [XXXAX] :: under; up to, up under, close to (of motion); until, before, up to, about;
#subter PREP ABL [XXXEO] :: beneath, under (cover/shelter); towards/at base (of wall/cliff); (usu. ACC);
#subter PREP ACC [XXXCO] :: beneath, under (cover/shelter); towards/at base (of wall/cliff);
#super PREP ABL [XXXAX] :: over (space), above, upon, in addition to; during (time); concerning; beyond;
#super PREP ACC [XXXBX] :: upon/on; over, above, about; besides (space); during (time); beyond (degree);
#supra PREP ACC [XXXAX] :: above, beyond; over; more than; in charge of, in authority over;
#supter PREP ABL [XXXEO] :: beneath, under (cover/shelter); towards/at base (of wall/cliff); (usu. ACC);
#supter PREP ACC [XXXCO] :: beneath, under (cover/shelter); towards/at base (of wall/cliff);
#tenus PREP ABL [XXXDX] :: as far as, to the extent of, up to, down to;
#trans PREP ACC [XXXDX] :: across, over; beyond; on the other side; (only local relations);
#uls PREP ACC [XXXDX] :: beyond, on the other side, on that side; more than, besides;
#ultra PREP ACC [XXXDX] :: beyond, on the other side, on that side; more than, besides;
#usque PREP ACC [XXXDX] :: up to (name of town or locality);
#versum PREP ACC [XXXCO] :: toward, in the direction of; (placed after ACC); -ward (after name of town);
#versus PREP ACC [XXXCO] :: toward, in the direction of; (placed after ACC); -ward (after name of town);
#vorsum PREP ACC [BXXCO] :: toward, in the direction of; (placed after ACC); -ward (after name of town);
#vorsus PREP ACC [BXXCO] :: toward, in the direction of; (placed after ACC); -ward (after name of town);
+52
View File
@@ -0,0 +1,52 @@
#aliqui, aliqua, aliquod PRON [XXXAX] :: any; some;
#aliquis, aliquis, aliquid PRON [XXXAX] :: anyone, anybody, anything; someone, something; one or another;
#chodchod PRON 1 7 ACC S N [EXXFW] :: whatever; everything/anything (which); valuable merchandise (Souter);
#eadem PRON 4 2 ACC P N [XXXBX] :: same, the same, the very same; also; (idem, eadem, idem);
#eadem PRON 4 2 NOM P N [XXXBX] :: same, the same, the very same; also; (idem, eadem, idem);
#eadem PRON 4 2 NOM S F [XXXBX] :: same, the same, the very same; also; (idem, eadem, idem);
#ec PRON 3 1 ACC P N [EXXEW] :: these (pl.); persons/things/conditions present/here/just mentioned; +DEMONS;
#ec PRON 3 1 NOM P N [EXXEW] :: these (pl.); persons/things/conditions present/here/just mentioned; +DEMONS;
#ec PRON 3 1 NOM S F [EXXEW] :: this; person/thing present/just mentioned/in this place; ((h)(a)ec); +DEMONS;
#eccille, eccilla, eccillud PRON [XXXFO] :: that over there;
#ego, mei PRON PERS [XXXAX] :: I, me;
#eodem PRON 4 2 ABL S X [XXXBX] :: same, the same, the very same; also; (idem, eadem, idem);
#eundem PRON 4 2 ACC S M [XXXBX] :: same, the same, the very same; also; (idem, eadem, idem);
#hic, haec, hoc PRON [XXXAX] :: this; these (pl.); (also DEMONST);
#idem, eadem, idem PRON [XXXAX] :: (w/-dem ONLY, idem, eadem, idem) same, the same, the very same, also;
#ille, illa, illud PRON [XXXAX] :: that; those (pl.); also DEMONST; that person/thing; the well known; the former;
#ipse, ipsa, ipsum PRON [XXXAO] :: himself/herself/itself; the very/real/actual one; in person; themselves (pl.);
#isse, issa, issum PRON [XXXDO] :: himself/herself/itself; the very/actual one; (endearment/colloquial of ipse);
#iste, ista, istud PRON [XXXAX] :: that, that of yours, that which you refer to; such;
#istic, istaec, istoc PRON [XXXDX] :: that of yours/mentioned by you/at hand;
#mei (GEN) PRON REFLEX [XXXCX] :: myself;
#nos, nostrum/nostri PRON PERS [XXXAX] :: we (pl.), us;
#olle, olla, ollud PRON [BXXDO] :: that; that person/thing; the well known; the former; those (pl.); (ille);
#quemquem PRON 1 0 ACC S M [XXXCX] :: whomever; every one who; whomever it be; everyone; each;
#qui, quae, qua PRON [XXXAX] :: any; some; someone (preceded by si, nisi, numquid, ne), something, anyone;
#qui, quae, quod PRON [XXXAX] :: which?, what?; what kind of?;
#qui, quae, quod PRON [XXXAX] :: who, which; (relative pronoun);
#quicquam PRON 1 6 ACC S N [XXXCX] :: any; anything; anything whatsoever;
#quicquam PRON 1 6 NOM S N [XXXCX] :: any; anything; anything whatsoever;
#quicquid PRON 1 6 ACC S N [XXXCX] :: whatever, whatsoever; everything which; each one; each; everything; anything;
#quicquid PRON 1 6 NOM S N [XXXBX] :: whatever, whatsoever; everything which; each one; each; everything; anything;
#quidquid PRON 1 6 ACC S N [XXXCX] :: whatever, whatsoever; everything which; each one; each; everything; anything;
#quidquid PRON 1 6 NOM S N [XXXBX] :: whatever, whatsoever; everything which; each one; each; everything; anything;
#quippiam PRON 1 0 ACC S N [XXXBO] :: some/any one/thing; unspecified thing/person; certain quanity, a bit; at all;
#quippiam PRON 1 0 NOM S N [XXXBO] :: some/any one/thing; unspecified thing/person; certain quanity, a bit; at all;
#quis, quis, quid PRON [XXXAX] :: anyone, anybody, anything; someone, something; one or another;
#quis, quis, quid PRON [XXXAX] :: who?, which one?, what man?, what thing? (type/nature); what kind of; what?;
#quisquis PRON 1 2 NOM S C [XXXBX] :: whoever; every one who; whoever it be; everyone; each;
#quodquod PRON 1 7 ACC S N [XXXCX] :: whatever, whatsoever; everything which; each one; each; everything; anything;
#quodquod PRON 1 7 NOM S N [XXXBX] :: whatever, whatsoever; everything which; each one; each; everything; anything;
#quoquo PRON 1 0 ABL S X [XXXCX] :: whoever; whatever, whatsoever; every one who; everything which; each one; each;
#seipse, seipsa, seipsum PRON [EXXCE] :: he himself, she herself, it itself; they themselves (pl.);
#semetipse, semetipsa, semetipsum PRON [EXXCE] :: he himself, she herself, it itself; they themselves (pl.); (intensive);
#sui (GEN) PRON REFLEX [XXXCX] :: him/her/it/ones-self; him/her/it; them (selves) (pl.); each other, one another;
#tu, tui PRON PERS [XXXAX] :: you, thee;
#tui (GEN) PRON REFLEX [XXXCX] :: yourself, thyself;
#unicuique PRON 1 0 DAT S X [XXXDW] :: each one;
#uniuscuiusque PRON 1 0 GEN S X [XXXDW] :: each one;
#unumquodque PRON 1 0 ACC S M [XXXDW] :: each one;
#unusquisque PRON 1 0 NOM S M [XXXDW] :: each one;
#vos, vetrum/vetri PRON PERS [XXXCX] :: you (pl.), ye;
#vos, votrum/votri PRON PERS [XXXCX] :: you (pl.), ye;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+164
View File
@@ -0,0 +1,164 @@
use strict;
use warnings;
my $wordform = "[\\w()/.\\s-]+" ;
my $comment = "(\\[.*)" ;
my $gender = "(F|M|N|C|X)";
my $vtype = "(TRANS|INTRANS|DEP|SEMIDEP)";
my $case = "(ABL|ACC|GEN|DAT)" ;
my $declension = "\\((1st|2nd|3rd|4th|5th)\\)";
my $interjection = "#($wordform)\\s+INTERJ\\s+$comment";
my $adverb = "#(($wordform,\\s+)*$wordform)\\s+ADV\\s+$comment";
my $adjective = "#(($wordform,\\s+)*$wordform)\\s+ADJ\\s+$comment";
my $conjunction = "#($wordform)\\s+CONJ\\s+$comment";
my $noun = "#(($wordform,\\s+)*$wordform)\\s+N\\s+$gender\\s+$comment";
my $noun2 = "#(($wordform,\\s+)*$wordform)\\s+N\\s+$declension\\s+$gender\\s+$comment";
my $noun3 = "#(($wordform,\\s+)*$wordform)\\s+N\\s+ADJ\\s+$comment";
my $prep = "#($wordform)\\s+PREP\\s+$case\\s+$comment";
my $verb = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$comment";
my $verb2 = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$declension\\s+$comment";
my $verb3 = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$vtype\\s+$comment";
my $verb4 = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$declension\\s+$vtype\\s+$comment";
my $verb5 = "#(($wordform,\\s+)*$wordform)\\s+V\\s+$declension\\s+$case\\s+$comment";
my $absheader = "abstract DictLatAbs = Cat ** {\n-- extracted from http://archives.nd.edu/whitaker/dictpage.htm\n\tfun";
my $concheader = "concrete DictLat of DictLatAbs = CatLat ** open Prelude,ParadigmsLat in {\n-- extracted from http://archives.nd.edu/whitaker/dictpage.htm\n lin";
my $footer = "}";
open(my $absfh, ">", "DictLatAbs.gf") or die "Can't open > DictLatAbs.gf: $!";
open(my $concfh, ">", "DictLat.gf") or die "Can't open > DictLatAbs.gf: $!";
print $absfh "$absheader\n";
print $concfh "$concheader\n";
while (my $l = <>) {
if ($l =~ /$interjection/)
{
# print "INTERJ Word: $1 -- Comment: $2\n";
my $wf = $1 ;
$wf =~ s/\s$//g;
print $absfh " ".$wf."_Interj : Interj ;\n" ;
print $concfh " ".$wf."_Interj = ss \"$wf\" ; \n";
}
elsif ($l =~ /$adverb/)
{
# print "ADV Word: $1 -- Comment: $3\n";
my $wf = $1 ; # all word forms in one string
my $comment = $3;
my @wfs = split /\s*,\s+/, $1; # word forms split into a list
map { s/\s$// } @wfs;
print $absfh " ".$wfs[0]."_Adv : Adv ;\n" ;
if (@wfs == 1)
{
print $concfh " ".$wfs[0]."_Adv = ss \"".$wfs[0]."\" ;\n";
}
else
{
# Comparison levels are missing so far
print $concfh "-- ".$wfs[0]."_Adv : $wf -- $comment\n";
}
}
elsif ($l =~ /$adjective/)
{
print "ADJ Word: $1 -- Comment: $3\n";
my $wf = $1 ; # all word forms in one string
my $comment = $3;
my @wfs = split /\s*,\s+/, $1; # word forms split into a list
map { s/[\s.]$// } @wfs;
# Word forms contain variations -> Ignore
print $absfh " ".$wfs[0]."_Adj : Adj ;\n" ;
if ($wf =~ /\/\(\)/ )
print $concfh "-- ".$wfs[0]."_Adj : $wf -- $comment\n";
{
}
# Abbreviations -> Ignore
elsif ($wf =~ /abbr\./) {
print $concfh "-- ".$wfs[0]."_Adj : $wf -- $comment\n";
}
# Three word forms -> regular adjective?!?
elsif (@wfs == 3)
{
print $concfh " ".$wfs[0]."_Adj = mkA \"".$wfs[0]."\" ;\n";
}
# Too many word forms
else
{
print $concfh "-- ".$wfs[0]."_Adj : $wf -- $comment\n";
}
}
elsif ($l =~ /$conjunction/)
{
# print "CONJ Word: $1 -- Comment: $2\n";
my $wf = $1 ;
my $comment = $2;
$wf =~ s/\s$//g;
print $absfh " ".$wf."_Conj : Conj ;\n" ;
# We don't get enough information for our grammar from the lexicon
# print $concfh " ".$wf."_Conj = ss \"$wf\" ; \n";
print $concfh "-- ".$wf."_Conj -- $comment\n";
}
elsif ($l =~ /$noun/)
{
my $wf = $1 ;
my $gender = $3;
my $comment = $4;
my @wfs = split /\s*,\s+/, $1; # word forms split into a list
print $absfh " ".$wfs[0]."_N : N ;\n" ;
if ($wf =~ /\/\(\)/ )
{
print $concfh "-- ".$wfs[0]."_N : $wf -- $gender -- $comment\n";
}
elsif ($wf =~ /abb(r?)\./)
{
print $concfh "-- ".$wfs[0]."_N : $wf -- $gender -- $comment\n";
}
else
{
print "N1 Word: $1 -- Gender: $3 -- Comment: $4\n";
}
}
elsif ($l =~ /$noun2/)
{
print "N Word: $1 -- Gender: $4 -- Declension: $3 -- Comment: $5\n";
}
elsif ($l =~ /$noun3/)
{
print "N Word: $1 -- Comment: $3\n";
}
elsif ($l =~ /$prep/)
{
print "PREP Word: $1 -- Case: $2 -- Comment: $3\n";
}
elsif ($l =~ /$verb/)
{
print "V Word: $1 -- Comment: $3\n";
}
elsif ($l =~ /$verb2/)
{
print "V Word: $1 -- Declension: $3 -- Comment: $4\n";
}
elsif ($l =~ /$verb3/)
{
print "V Word: $1 -- VType: $3 -- Comment: $4\n";
}
elsif ($l =~ /$verb4/)
{
print "V Word: $1 -- Declension: $3 -- VType: $4 -- Comment: $5\n";
}
elsif ($l =~ /$verb5/)
{
print "V Word: $1 -- Declension: $3 -- Case: $4 -- Comment: $5\n";
}
else
{
print "MISSING: $l\n";
}
}
print $absfh "$footer\n";
print $concfh "$footer\n";
close($absfh);
close($concfh);