mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-10 13:29:32 -06:00
49 lines
1.6 KiB
Haskell
49 lines
1.6 KiB
Haskell
import Char
|
|
|
|
infile = "mywordlist1"
|
|
|
|
main = do
|
|
s <- readFile infile
|
|
mapM_ (putStrLn . mkOne) $ lines s
|
|
|
|
mkOne s = case words s of
|
|
"--":_ -> ""
|
|
('(':_):w:cat:ws -> unwords $ mkCatf (nopar cat) (more ws) w
|
|
_ -> "-- " ++ s
|
|
where
|
|
more ws = case ws of
|
|
_ | elem "(REG" ws -> "irreg"
|
|
_ -> "reg"
|
|
nopar = filter (flip notElem "()")
|
|
mkCatf c r w = case c of
|
|
"Noun" -> ["N","regN",w]
|
|
"PRT" -> ["Adv","mkAdv",w] ----
|
|
"TITLE" -> ["N","regN",w] ----
|
|
"Adject" -> ["A","regA",w]
|
|
"AdjInf" -> ["A","regA",w] ----
|
|
"AdjInf_LONG" -> ["A","longA",w] ----
|
|
"AdjPrd" -> ["A","regA",w] ----
|
|
"AdjPrd_LONG" -> ["A","longA",w] ----
|
|
"Adject_LONG" -> ["A","longA",w]
|
|
"Verb" | r == "irreg" -> []
|
|
"Verb" -> ["V","regV",w]
|
|
"V2" | r == "irreg" -> ["V2","irreg", w, "_V"]
|
|
"V2" -> ["V2","regV2", w]
|
|
"PNoun" -> ["PN","regPN",toUpper (head w): tail w]
|
|
'V':'2':'_':prep | r == "irreg" ->
|
|
let p = map toLower prep in ["V2","mkV2_"++p, w, "_V", p]
|
|
x:'2':'_':prep ->
|
|
let p = map toLower prep in [[x]++"2","prep" ++[x]++"2"++p, w, p]
|
|
"V3_NP" | r == "irreg" -> ["V3","irreg", w, "_V"]
|
|
"V3_NP" -> ["V3","regV3", w]
|
|
'V':'3':'_':'P':'P':prep | r == "irreg" ->
|
|
let p = map toLower prep in ["V3","mkV3_"++p, w, "_V", p]
|
|
'V':'3':'_':'P':'P':prep ->
|
|
let p = map toLower prep in ["V3","mkV3_"++p, w, p]
|
|
'V':'3':'_':'S':_ | r == "irreg" -> ["V2","mkV2_S", w, "_V"] ----
|
|
'V':'3':'_':'S':_ -> ["V2","mkV2_S", w] ----
|
|
'V':'3':'_':_ -> ["V3","mkV3", w] ----
|
|
|
|
_ -> [c,"mk" ++ c, w]
|
|
|