mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
84 lines
2.5 KiB
Plaintext
84 lines
2.5 KiB
Plaintext
abstract Letter = {
|
|
|
|
--1 An Abstract Syntax for Business and Love Letters
|
|
--
|
|
-- This file defines the abstract syntax of a grammar set whose concrete syntax
|
|
-- has so far been written to five languages: English, Finnish, French, Russian,
|
|
-- and Swedish.
|
|
--
|
|
-- The main category of the grammar is $Letter$. The other categories are
|
|
-- parts of the letter.
|
|
|
|
flags startcat=Letter ;
|
|
|
|
cat
|
|
Letter ;
|
|
Recipient ; Author ;
|
|
Message ;
|
|
Heading ; Ending ;
|
|
Mode ; Sentence ; NounPhrase ; Position ;
|
|
|
|
-- There is just one top-level letter structure.
|
|
|
|
fun
|
|
MkLetter : Heading -> Message -> Ending -> Letter ;
|
|
|
|
-- The heading consists of a greeting of the recipient. The $JustHello$
|
|
-- function will actually suppress the name (and title) of the recipient,
|
|
-- but the $Recipient$ argument keeps track of the gender and number.
|
|
|
|
DearRec : Recipient -> Heading ;
|
|
PlainRec : Recipient -> Heading ;
|
|
HelloRec : Recipient -> Heading ;
|
|
JustHello : Recipient -> Heading ;
|
|
|
|
-- A message is a sentence with of without a *mode*, which is either
|
|
-- regret or honour.
|
|
|
|
ModeSent : Mode -> Sentence -> Message ;
|
|
PlainSent : Sentence -> Message ;
|
|
|
|
Honour, Regret : Mode ;
|
|
|
|
-- The ending is either formal or informal. It does not currently depend on
|
|
-- the heading: making it so would eliminate formality mismatches between
|
|
-- the heading and the ending.
|
|
|
|
FormalEnding : Author -> Ending ;
|
|
InformalEnding : Author -> Ending ;
|
|
|
|
-- The recipient is either a colleague, colleagues, or darling.
|
|
-- It can also be a named person. The gender distinction is made
|
|
-- because there are things in the body of the letter that depend on it.
|
|
|
|
ColleagueHe, ColleagueShe : Recipient ;
|
|
ColleaguesHe, ColleaguesShe : Recipient ;
|
|
DarlingHe, DarlingShe : Recipient ;
|
|
|
|
NameHe, NameShe : String -> Recipient ;
|
|
|
|
-- For the author, there is likewise a fixed set of titles, plus the named author.
|
|
-- Gender distinctions could be useful even here, for the same reason as with
|
|
-- $Recipient$. Notice that the rendering of $Spouse$ will depend on the
|
|
-- gender of the recipient.
|
|
|
|
President, Mother, Spouse, Dean : Author ;
|
|
Name : String -> Author ;
|
|
|
|
-- As for the message body, no much choice is yet available: one can say that
|
|
-- the recipient is promoted to some position, that someone has gone bankrupt,
|
|
-- or that the author loves the recipient.
|
|
|
|
BePromoted : Position -> Sentence ;
|
|
GoBankrupt : NounPhrase -> Sentence ;
|
|
ILoveYou : Sentence ;
|
|
|
|
Competitor : NounPhrase ;
|
|
Company : NounPhrase ;
|
|
OurCustomers : NounPhrase ;
|
|
|
|
Senior : Position ;
|
|
ProjectManager : Position ;
|
|
|
|
}
|