forked from GitHub/gf-core
rewrote App so that it just inherits Translate and excludes some functions. This minimizes the duplication of code between Translate and App. Also added some functions, which make App 15% slower but increase the coverage and quality. This trade-off has to be studied further.
This commit is contained in:
@@ -1,96 +1,48 @@
|
||||
--# -path=.:src/chunk:src/translator:../examples/phrasebook/gfos
|
||||
|
||||
concrete AppFre of App =
|
||||
TenseFre,
|
||||
NounFre - [PPartNP],
|
||||
AdjectiveFre,
|
||||
NumeralFre,
|
||||
SymbolFre [
|
||||
PN, Symb, String, CN, Card, NP, MkSymb, SymbPN, CNNumNP
|
||||
],
|
||||
ConjunctionFre,
|
||||
VerbFre [
|
||||
UseV,ComplVV,SlashV2a,ComplSlash,UseComp,CompAP,CompNP,CompAdv,CompCN
|
||||
,AdvVP,AdVVP
|
||||
],
|
||||
AdverbFre,
|
||||
PhraseFre,
|
||||
SentenceFre [
|
||||
PredVP,SlashVP,ImpVP,AdvS,
|
||||
UseCl,UseQCl,UseSlash,SSubjS,UseRCl
|
||||
],
|
||||
QuestionFre - [
|
||||
|
||||
TranslateFre - [
|
||||
-- Verb
|
||||
ComplVS, ComplVQ, ComplVA,
|
||||
Slash2V3, Slash3V3, SlashV2V, SlashV2S, SlashV2Q, SlashV2A,
|
||||
SlashVV, SlashV2VNP,
|
||||
ReflVP,
|
||||
AdvVPSlash, AdVVPSlash, VPSlashPrep,
|
||||
-- Sentence
|
||||
PredSCVP,
|
||||
AdvSlash, SlashPrep, SlashVS,
|
||||
EmbedS, EmbedQS, EmbedVP, RelS,
|
||||
-- Question
|
||||
ComplSlashIP,AdvQVP,AddAdvQVP,QuestQVP,
|
||||
QuestCl, QuestIAdv
|
||||
],
|
||||
RelativeFre,
|
||||
IdiomFre [
|
||||
NP, VP, Tense, Cl, ProgrVP, ExistNP,
|
||||
neutr, sjalv
|
||||
],
|
||||
---- ConstructionFre,
|
||||
-- Idiom
|
||||
CleftNP, CleftAdv,
|
||||
ExistIP,
|
||||
ExistNPAdv, ExistIPAdv,
|
||||
ImpP3,
|
||||
SelfAdvVP, SelfAdVVP, SelfNP,
|
||||
-- Construction
|
||||
hungry_VP, thirsty_VP, has_age_VP, have_name_Cl, married_Cl, what_name_QCl, how_old_QCl, how_far_QCl,
|
||||
weather_adjCl, is_right_VP, is_wrong_VP, n_units_AP, bottle_of_CN, cup_of_CN, glass_of_CN,
|
||||
where_go_QCl, where_come_from_QCl, go_here_VP, come_here_VP, come_from_here_VP, go_there_VP, come_there_VP, come_from_there_VP,
|
||||
-- Extensions
|
||||
PassVPSlash, PassAgentVPSlash
|
||||
]
|
||||
|
||||
ChunkFre,
|
||||
|
||||
ExtensionsFre [
|
||||
CompoundCN,AdAdV,UttAdV,ApposNP,
|
||||
MkVPI, MkVPS, PredVPS, that_RP, who_RP
|
||||
],
|
||||
,PhrasebookFre - [PSentence, PQuestion, PGreetingMale, PGreetingFemale, GObjectPlease, open_A, closed_A]
|
||||
|
||||
DocumentationFre,
|
||||
DictionaryFre
|
||||
|
||||
,PhrasebookFre - [PSentence, PQuestion, PGreetingMale, PGreetingFemale, GObjectPlease, open_A]
|
||||
|
||||
** open MorphoFre, PhonoFre, ResFre, ParadigmsFre, SyntaxFre, CommonScand, (E = ExtraFre), (G = GrammarFre), Prelude in {
|
||||
** open ParadigmsFre, SyntaxFre, Prelude in {
|
||||
|
||||
flags
|
||||
literal=Symb ;
|
||||
|
||||
---------------------------
|
||||
lin
|
||||
QuestCl cl =
|
||||
{s = \\t,a,p => -- est-ce qu'il dort ?
|
||||
let cls = cl.s ! DDir ! t ! a ! p
|
||||
in table {
|
||||
QDir => "est-ce" ++ elisQue ++ cls ! Indic ;
|
||||
QIndir => subjIf ++ cls ! Indic
|
||||
}
|
||||
}
|
||||
| {s = \\t,a,p => -- dort-il ?
|
||||
let cls = cl.s ! DInv ! t ! a ! p
|
||||
in table {
|
||||
QDir => cls ! Indic ;
|
||||
QIndir => subjIf ++ cls ! Indic
|
||||
}
|
||||
}
|
||||
| G.QuestCl cl -- il dort ?
|
||||
;
|
||||
|
||||
|
||||
QuestIAdv iadv cl =
|
||||
G.QuestIAdv iadv cl -- où dort-il
|
||||
| {s = \\t,a,p,q => -- où est-ce qu'il dort
|
||||
let
|
||||
ord = DDir ;
|
||||
cls = cl.s ! ord ! t ! a ! p ! Indic ;
|
||||
why = iadv.s
|
||||
in why ++ "est-ce" ++ elisQue ++ cls
|
||||
} ;
|
||||
|
||||
---------------------------
|
||||
|
||||
-- to suppress punctuation
|
||||
lin
|
||||
PSentence, PQuestion = \s -> lin Text (mkUtt s) ;
|
||||
PGreetingMale, PGreetingFemale = \s -> lin Text s ;
|
||||
|
||||
GObjectPlease o = lin Text (mkUtt o) ;
|
||||
|
||||
|
||||
lin
|
||||
PhrasePhr p = {s = "+" ++ p.s} | p ;
|
||||
|
||||
Phrase_Chunk p = p ;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user