mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-03 08:12:51 -06:00
resource lib name changed
This commit is contained in:
48
lib/resource/api/toplevel/FromOverload.hs
Normal file
48
lib/resource/api/toplevel/FromOverload.hs
Normal file
@@ -0,0 +1,48 @@
|
||||
import Monad
|
||||
|
||||
main = do
|
||||
ss <- readFile src >>= return . map words . lines
|
||||
writeFile abstr "abstract OverGrammar = Structural,Numeral,Conjunction[ListS,ListNP,ListAP,ListAdv] ** {\n"
|
||||
appendFile abstr "cat ImpForm ; Punct ;\n"
|
||||
writeFile concr "concrete OverGrammarEng of OverGrammar = StructuralEng,NumeralEng,ConjunctionEng[ListS,ListNP,ListAP,ListAdv] ** open GrammarEng in {\n"
|
||||
mapM_ (appendFile concr) [
|
||||
"lincat ImpForm = {p : PImpForm ; s : Str} ;\n",
|
||||
"lincat Punct = {p : PPunct ; s : Str} ;\n",
|
||||
"param PImpForm = IFSg | IFPl | IFPol ;\n",
|
||||
"param PPunct = PFullStop | PExclMark | PQuestMark ;\n",
|
||||
"oper mkUttImp : PImpForm -> Str -> Pol -> Imp -> Utt = \\f,s,p,i -> {s = s ++ (case f of {\n",
|
||||
" IFSg => UttImpSg p i ; IFPl => UttImpPl p i ; IFPol => UttImpPol p i}).s ; lock_Utt = <>} ;\n",
|
||||
"oper mkPhrPunct : Phr -> PPunct -> Str -> Text -> Text = \\p,f,s,t -> {s = s ++ (case f of {\n",
|
||||
" PFullStop => TFullStop p t ; PExclMark => TExclMark p t ; PQuestMark => TQuestMark p t}).s ;\n",
|
||||
" lock_Text = <>} ;\n"
|
||||
]
|
||||
|
||||
foldM process ("",0) ss
|
||||
appendFile abstr "}\n"
|
||||
appendFile concr "}\n"
|
||||
return ()
|
||||
|
||||
src = "constr.gf"
|
||||
abstr = "OverGrammar.gf"
|
||||
concr = "OverGrammarEng.gf"
|
||||
|
||||
|
||||
process env@(mk,count) line = case line of
|
||||
('-':'-':_) : _ -> return env
|
||||
_:rest | elem "=" rest && notElem "overload" rest -> do
|
||||
let (fun,lin) = span (/="=") line
|
||||
env2 <- process env fun
|
||||
process env2 lin
|
||||
mk1 : ":" : typ -> do
|
||||
let mk2 = withCount count mk1
|
||||
put abstr $ "fun" : mk2 : ":" : takeWhile (/="--") typ ++ [";\n"]
|
||||
return $ (mk2,count)
|
||||
"=" : trm -> do
|
||||
put concr $ "lin" : mk : "=" : takeWhile (/=";") trm ++ [";\n"]
|
||||
return $ (mk,count + 1)
|
||||
_ -> return env
|
||||
|
||||
put file ws = appendFile file $ unwords ws
|
||||
|
||||
withCount count mk = "ovrld" ++ show count ++ "_" ++ mk
|
||||
|
||||
Reference in New Issue
Block a user