mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-17 00:39:32 -06:00
38 lines
725 B
Haskell
38 lines
725 B
Haskell
module MkLexicon where
|
|
|
|
import Char
|
|
|
|
allLines o f = do
|
|
s <- readFile f
|
|
mapM_ (putStrLn . o) (filter noComm (lines s))
|
|
|
|
|
|
-- discard comments and empty lines
|
|
|
|
noComm s = case s of
|
|
'-':'-':_ -> False
|
|
"" -> False
|
|
_ -> True
|
|
|
|
-- postfix with category
|
|
|
|
postfix p s = takeWhile (not . isSpace) s ++ "_" ++ p
|
|
|
|
-- make fun rule
|
|
|
|
mkFun s =
|
|
let (w,p) = span (/='_') s in
|
|
" " ++ s ++ " : " ++ tail p ++ " ;"
|
|
|
|
-- make regular lin rule
|
|
|
|
mkLin s =
|
|
let (w,p) = span (/='_') s in
|
|
" " ++ s ++ " = " ++ lin (tail p) w ++ " ;"
|
|
where
|
|
lin cat w = case cat of
|
|
"V2" -> "dirV2 (regV" ++ " \"" ++ w ++ "\")"
|
|
'V':_ -> "mk" ++ cat ++ " (regV" ++ " \"" ++ w ++ "\")"
|
|
_ -> "reg" ++ cat ++ " \"" ++ w ++ "\""
|
|
|