I ::= "title: Facciamo ordinazione\n" ^ "author: Pan <pan@spinningkids.org>, Pasu & Pete\n" ^ "language: italian\n" ^ "status: refinable\n" ^ "topic: misc\n" ^ "audience: anybody\n" ^ "disclaim: e' estate, prendiamoci un " Prod ^"\n" ^ "created: 03/08/2004" ; S ::= IDomanda \IOrdinazione; PlainS ::= Domanda \Ordinazione; IDomanda ::= "" Domanda ""^; Domanda ::= ("I lor signori desiderano?" | "Dite." | "Pronti?" | "Comandi" | "Dite pure" | ----"Prima di notte riusciamo ad ordinare?") "\n"^; IOrdinazione ::= Prods (IAltroNo | +(IAltroSi IOrdinazione)); Ordinazione ::= Prods (AltroNo | +(AltroSi Ordinazione)); Prods ::= Prod | +(ListaProd "e" Prod); ListaProd ::= (ListaProd ^"," Prod) | Prod; Prod ::= Prodotto.M.S | -Prodotto.M.P | -Prodotto.F.S | --Prodotto.F.P; Prodotto ::= Num ProdCaffetteria Temp ((((DicuiCorr [(--^"" | ((P:"e") Tazza))]) | (CorrTransl [(--^"" | (Dicui Tazza))])) ) | ([Dicui] Tazza) | ++^""); ProdCaffetteria ::= (M: ("caffe'" | "the" | ((S: ("marocchino" | "cappuccino" | "latte" | ------"eritreo")) (P: ("marocchini" | "cappuccini" | "bicchieri di latte" | ------"senegalesi"))))) (F: (S: ("cioccolata" | "grappa")) (P: ("cioccolate" | "grappe"))); Temp ::= ++^"" | +(("cald" | "fredd" | "tiepid" | "gelat") Conj) | (("bollent" | "ustionant") ^((S: "e") (P: "i"))); TempC ::= ++^"" | +(("cald" | "fredd" | "tiepid" | "gelat") ConjC) | (("bollent" | "ustionant") ^((CS: "e") (CP: "i"))); Num ::= (S: ((F: "una") (M: "un"))) (P: ("due" | "tre" | "quattro" | "cinque" | "sei" | "sette" | "otto" | "nove" | "dieci" | ----"trentasette" | ------"quarantadue")); Correzione2 ::= ("corrett" ConjC (--^"" | TipoCorrezione2)) | ----(("sbagliat" | ---"maleducat") ConjC); Correzione ::= Correzione1 Correzione2; Correzione1 ::= ++^"" | ("macchiat" ConjC TempC) | ("lung" ConjC2) | ("ristrett" ConjC) | ---("pacioccon" ConjC); TipoCorrezione2 ::= "sambuca" | --"mandarinetto" | "nardini" | ----"salmiakki" | ----"ch-inotto" | "cointreau" | "vecchia romagna" | "anisetta" | "cognac" | "whiskey" | "whisky" | "courvoisier" | "bourbon"; Dicui ::= (P: "di cui" (((M: "uno") (F: "una")) | "due" | --"tre")); DicuiCorr ::= (P: "di cui" (((M: "uno" Correzione.CM.CS) (F: "una" Correzione.CF.CS)) | (("due" | --"tre") CorrTransl))) (S: CorrTransl); CorrTransl ::= (P: ((M: Correzione.CM.CP) (F: Correzione.CF.CP))) (S: ((M: Correzione.CM.CS) (F: Correzione.CF.CS))); Tazza ::= "in" (Luogo.LM | Luogo.LF); Luogo ::= ((LF: ("tazzina" | "tazza" | ---"bottiglia")) (LM: ("bicchiere" | "bicchierino"))) ["grande" | (LM: ("piccolo" | "medio")) (LF: ("piccola" | "media"))] [(LM: ("caldo" | "freddo" | "tiepido")) (LF: ("calda" | "fredda" | "tiepida"))] [++^"" | "di vetro" | "di plastica" | --"di terracotta" | -----"di selce" | -----"di peltro" | ---"di argilla" | ---"con due manici" | -"blu" | ------"con tre manici" | ---"rosa antico"]; Conj ::= ^((M: (S: "o") (P: "i")) (F: (S: "a") (P: "e"))); ConjC ::= ^((CM: (CS: "o") (CP: "i")) (CF: (CS: "a") (CP: "e"))); ConjC2 ::= ^((CM: (CS: "o") (CP: "hi")) (CF: (CS: "a") (CP: "he"))); IAltroNo ::= ^".\n"^ ("Basta?\nSi," | "Altro?\nNo,") ("siamo a posto." | "grazie." | "a posto cosi'." | "basta cosi'." | "e' ok.") ; AltroNo ::= ^".\n"^ ("Basta?\nSi," | "Altro?\nNo,") ("siamo a posto." | "grazie." | "a posto cosi'." | "basta cosi'." | "e' ok.") ; IAltroSi ::= ^".\n"^ ("Basta?\nNo," ["dimenticavo... ci porti"] "anche" | "Altro?\nSi, anche"); AltroSi ::= ^".\n"^ ("Basta?\nNo," ["dimenticavo... ci porti"] "anche" | "Altro?\nSi, anche");