forked from GitHub/gf-rgl
WIP: incorporate @aarneranta's comments
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
--# -path=.:../abstract
|
--# -path=.:../abstract
|
||||||
|
|
||||||
concrete ConstructionEng of Construction = CatEng **
|
concrete ConstructionEng of Construction = CatEng **
|
||||||
open SyntaxEng, SymbolicEng, ParadigmsEng, (L = LexiconEng), (E = ExtendEng), (G = GrammarEng), (R = ResEng), (S = StructuralEng), Prelude in {
|
open SyntaxEng, SymbolicEng, ParadigmsEng, (L = LexiconEng), (E = ExtendEng), (G = GrammarEng), (R = ResEng), (Sy = SyntaxEng), (S = StructuralEng), Prelude in {
|
||||||
|
|
||||||
|
|
||||||
lin
|
lin
|
||||||
@@ -72,45 +72,48 @@ lincat
|
|||||||
timeunitAdv n time =
|
timeunitAdv n time =
|
||||||
let n_card : Card = n ;
|
let n_card : Card = n ;
|
||||||
n_hours_NP : NP = mkNP n_card time ;
|
n_hours_NP : NP = mkNP n_card time ;
|
||||||
in SyntaxEng.mkAdv for_Prep n_hours_NP | mkAdv (n_hours_NP.s ! R.npNom) ;
|
in Sy.mkAdv for_Prep n_hours_NP | mkAdv (n_hours_NP.s ! R.npNom) ;
|
||||||
|
|
||||||
oneHour = {s = "one" ; am = True} ;
|
oneHour = mkHour "1" True ;
|
||||||
twoHour = {s = "two" ; am = True} ;
|
twoHour = mkHour "2" True ;
|
||||||
threeHour = {s = "three" ; am = True} ;
|
threeHour = mkHour "3" True ;
|
||||||
fourHour = {s = "four" ; am = True} ;
|
fourHour = mkHour "4" True ;
|
||||||
fiveHour = {s = "five" ; am = True} ;
|
fiveHour = mkHour "5" True ;
|
||||||
sixHour = {s = "six" ; am = True} ;
|
sixHour = mkHour "6" True ;
|
||||||
sevenHour = {s = "seven" ; am = True} ;
|
sevenHour = mkHour "7" True ;
|
||||||
eightHour = {s = "eight" ; am = True} ;
|
eightHour = mkHour "8" True ;
|
||||||
nineHour = {s = "nine" ; am = True} ;
|
nineHour = mkHour "9" True ;
|
||||||
tenHour = {s = "ten" ; am = True} ;
|
tenHour = mkHour "10" True ;
|
||||||
elevenHour = {s = "eleven" ; am = True} ;
|
elevenHour = mkHour "11" True ;
|
||||||
twelveHour = {s = "twelve" ; am = False} ;
|
twelveHour = mkHour "12" False ;
|
||||||
thirteenHour = {s = "one" ; am = False} ;
|
thirteenHour = mkHour "1" False ;
|
||||||
fourteenHour = {s = "two" ; am = False} ;
|
fourteenHour = mkHour "2" False ;
|
||||||
fifteenHour = {s = "three" ; am = False} ;
|
fifteenHour = mkHour "3" False ;
|
||||||
sixteenHour = {s = "four" ; am = False} ;
|
sixteenHour = mkHour "4" False ;
|
||||||
seventeenHour = {s = "five" ; am = False} ;
|
seventeenHour = mkHour "5" False ;
|
||||||
eighteenHour = {s = "six" ; am = False} ;
|
eighteenHour = mkHour "6" False ;
|
||||||
nineteenHour = {s = "seven" ; am = False} ;
|
nineteenHour = mkHour "7" False ;
|
||||||
twentyHour = {s = "eight" ; am = False} ;
|
twentyHour = mkHour "8" False ;
|
||||||
twentyOneHour = {s = "nine" ; am = False} ;
|
twentyOneHour = mkHour "9" False ;
|
||||||
twentyTwoHour = {s = "ten" ; am = False} ;
|
twentyTwoHour = mkHour "10" False ;
|
||||||
twentyThreeHour = {s = "eleven" ; am = False} ;
|
twentyThreeHour = mkHour "11" False ;
|
||||||
twentyFourHour = {s = "twelve" ; am = True} ;
|
twentyFourHour = mkHour "12" True ;
|
||||||
|
|
||||||
timeHour h = SyntaxEng.mkAdv at_Prep (symb (hourStr h)) ;
|
timeHour h = Sy.mkAdv at_Prep (symb (h.s ++ ampm ! h.am)) ;
|
||||||
timeHourMinute h m = let
|
timeHourMinute h m = let
|
||||||
min = m.s ! True ! R.Nom
|
min = m.s ! True ! R.Nom
|
||||||
in
|
in
|
||||||
mkAdv (variants {at_Prep.s ++ h.s ++ min ; at_Prep.s ++ min ++ "past" ++ h.s}) ;
|
Sy.mkAdv at_Prep (symb (h.s ++ min ++ ampm ! h.am)) ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
mkHour : Str -> Bool -> {s : Str ; am : Bool} ;
|
||||||
|
mkHour n am = Sy.mkUtt (Sy.mkCard n) ** {am = am} ;
|
||||||
|
|
||||||
at_Prep : Prep ;
|
at_Prep : Prep ;
|
||||||
at_Prep = mkPrep "at" ;
|
at_Prep = mkPrep "at" ;
|
||||||
|
|
||||||
hourStr : Hour -> Str ;
|
ampm : Bool => Str ;
|
||||||
hourStr h = h.s ++ ("" | "o'clock" | if_then_Str h.am "AM" "PM") ;
|
ampm = table {True => "a.m." ; False => "p.m."} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
weekdayPunctualAdv w = SyntaxEng.mkAdv on_Prep (mkNP w) ; -- on Sunday
|
weekdayPunctualAdv w = SyntaxEng.mkAdv on_Prep (mkNP w) ; -- on Sunday
|
||||||
|
|||||||
@@ -64,60 +64,63 @@ lin
|
|||||||
oper
|
oper
|
||||||
noPrep : Prep = mkPrep [] ;
|
noPrep : Prep = mkPrep [] ;
|
||||||
|
|
||||||
lin
|
-- lin
|
||||||
timeunitAdv n time =
|
-- timeunitAdv n time =
|
||||||
let n_card : Card = lin Card n;
|
-- let n_card : Card = lin Card n;
|
||||||
n_hours_NP : NP = mkNP n_card time ;
|
-- n_hours_NP : NP = mkNP n_card time ;
|
||||||
in S.mkAdv for_Prep n_hours_NP | S.mkAdv to_Prep n_hours_NP ;--| S.mkAdv (n_hours_NP.s ! R.Nom) ;
|
-- in S.mkAdv for_Prep n_hours_NP | S.mkAdv to_Prep n_hours_NP ;--| S.mkAdv (n_hours_NP.s ! R.Nom) ;
|
||||||
|
|
||||||
oneHour = {s = "uma"; pe = Manhã ; n = Sg} ;
|
-- oneHour = mkHour "1" Manhã Sg ;
|
||||||
twoHour = {s = "duas" ; pe = Manhã ; n = Pl} ;
|
-- twoHour = mkHour "2" Manhã Pl ;
|
||||||
threeHour = {s = "três" ; pe = Manhã ; n = Pl} ;
|
-- threeHour = mkHour "3" Manhã Pl ;
|
||||||
fourHour = {s = "quatro" ; pe = Manhã ; n = Pl} ;
|
-- fourHour = mkHour "4" Manhã Pl ;
|
||||||
fiveHour = {s = "cinco" ; pe = Manhã ; n = Pl} ;
|
-- fiveHour = mkHour "5" Manhã Pl ;
|
||||||
sixHour = {s = "seis" ; pe = Manhã ; n = Pl} ;
|
-- sixHour = mkHour "6" Manhã Pl ;
|
||||||
sevenHour = {s = "sete" ; pe = Manhã ; n = Pl} ;
|
-- sevenHour = mkHour "7" Manhã Pl ;
|
||||||
eightHour = {s = "oito" ; pe = Manhã ; n = Pl} ;
|
-- eightHour = mkHour "8" Manhã Pl ;
|
||||||
nineHour = {s = "nove" ; pe = Manhã ; n = Pl} ;
|
-- nineHour = mkHour "9" Manhã Pl ;
|
||||||
tenHour = {s = "dez" ; pe = Manhã ; n = Pl} ;
|
-- tenHour = mkHour "10" Manhã Pl ;
|
||||||
elevenHour = {s = "onze" ; pe = Manhã ; n = Pl} ;
|
-- elevenHour = mkHour "11" Manhã Pl ;
|
||||||
twelveHour = {s = "doze" ; pe = Tarde ; n = Pl} ;
|
-- twelveHour = mkHour "12" Tarde Pl ;
|
||||||
thirteenHour = {s = "uma" ; pe = Tarde ; n = Sg } | {s = "treze" ; pe = Tarde ; n = Pl} ;
|
-- thirteenHour = mkHour "13" Tarde Sg ;
|
||||||
fourteenHour = {s = "duas" | "catorze" ; pe = Tarde ; n = Pl} ;
|
-- fourteenHour = mkHour "14" Tarde Pl ;
|
||||||
fifteenHour = {s = "três" | "quinze" ; pe = Tarde ; n = Pl} ;
|
-- fifteenHour = mkHour "15" Tarde Pl ;
|
||||||
sixteenHour = {s = "quatro" | "dezesseis" ; pe = Tarde ; n = Pl} ;
|
-- sixteenHour = mkHour "16" Tarde Pl ;
|
||||||
seventeenHour = {s = "cinco" | "dezessete" ; pe = Noite ; n = Pl} ;
|
-- seventeenHour = mkHour "17" Noite Pl ;
|
||||||
eighteenHour = {s = "seis" | "dezoito" ; pe = Noite ; n = Pl} ;
|
-- eighteenHour = mkHour "18" Noite Pl ;
|
||||||
nineteenHour = {s = "sete" | "dezenove" ; pe = Noite ; n = Pl} ;
|
-- nineteenHour = mkHour "19" Noite Pl ;
|
||||||
twentyHour = {s = "oito" | "vinte" ; pe = Noite ; n = Pl} ;
|
-- twentyHour = mkHour "20" Noite Pl ;
|
||||||
twentyOneHour = {s = "nove" | "vinte e uma" ; pe = Noite ; n = Pl} ;
|
-- twentyOneHour = mkHour "21" Noite Pl ;
|
||||||
twentyTwoHour = {s = "dez" | "vinte e duas" ; pe = Noite ; n = Pl} ;
|
-- twentyTwoHour = mkHour "22" Noite Pl ;
|
||||||
twentyThreeHour = {s = "onze" | "vinte e três" ; pe = Noite ; n = Pl} ;
|
-- twentyThreeHour = mkHour "23" Noite Pl ;
|
||||||
twentyFourHour = {s = "zero" ; pe = Manhã ; n = Pl} | {s = "meia-noite" ; pe = Manhã ; n = Sg} ;
|
-- twentyFourHour = mkHour "meia-noite" ; pe = Manhã ; n = Sg} ;
|
||||||
|
|
||||||
timeHour h = mkAdv (hourStr h) ;
|
-- timeHour h = mkAdv (hourStr h) ;
|
||||||
|
|
||||||
timeHourMinute h m = let
|
-- timeHourMinute h m = let
|
||||||
min = m.s ! Masc ++ variants {"" ; numForms "minuto" "minutos" ! m.n}
|
-- min = m.s ! Masc ++ variants {"" ; numForms "minuto" "minutos" ! m.n}
|
||||||
in
|
-- in
|
||||||
mkAdv (a ! h.n ++ h.s ++ (hora ! h.n | "") ++ "e" ++ min ++ variants {"" ; period ! h.pe}) ;
|
-- mkAdv (a ! h.n ++ h.s ++ (hora ! h.n | "") ++ "e" ++ min ++ variants {"" ; period ! h.pe}) ;
|
||||||
|
|
||||||
oper
|
-- oper
|
||||||
period : Period => Str ;
|
-- mkHour : Str -> Period -> Number ;
|
||||||
period = table {
|
-- mkHour num p n = S.mkUtt (S.mkCard num) ** {p = p ; n = n} ;
|
||||||
Manhã => "da manhã" ;
|
|
||||||
Tarde => "da tarde" ;
|
|
||||||
Noite => "da noite"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
a : Number => Str ;
|
-- period : Period => Str ;
|
||||||
a = numForms "à" "às" ;
|
-- period = table {
|
||||||
|
-- Manhã => "da manhã" ;
|
||||||
|
-- Tarde => "da tarde" ;
|
||||||
|
-- Noite => "da noite"
|
||||||
|
-- } ;
|
||||||
|
|
||||||
hora : Number => Str ;
|
-- a : Number => Str ;
|
||||||
hora = numForms "hora" "horas" ;
|
-- a = numForms "à" "às" ;
|
||||||
|
|
||||||
hourStr : Hour -> Str ;
|
-- hora : Number => Str ;
|
||||||
hourStr h = a ! h.n ++ h.s ++ variants {"" ; ("" | hora ! h.n) ++ period ! h.pe ; hora ! h.n} ;
|
-- hora = numForms "hora" "horas" ;
|
||||||
|
|
||||||
|
-- hourStr : Hour -> Str ;
|
||||||
|
-- hourStr h = a ! h.n ++ h.s ++ variants {"" ; ("" | hora ! h.n) ++ period ! h.pe ; hora ! h.n} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
weekdayPunctualAdv w = lin Adv {s = w.s ! C.Sg} ; -- lundi
|
weekdayPunctualAdv w = lin Adv {s = w.s ! C.Sg} ; -- lundi
|
||||||
|
|||||||
Reference in New Issue
Block a user