mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-18 09:19:32 -06:00
235 lines
5.6 KiB
Plaintext
235 lines
5.6 KiB
Plaintext
|
|
concrete SammieEng1 of Sammie = {
|
|
|
|
flags startcat=Action;
|
|
|
|
param SetForm = Any | All;
|
|
|
|
oper Set = { s : SetForm => Str } ;
|
|
|
|
oper mkSet : Str -> Set = \x -> { s = table {
|
|
Any => variants { "a"; "some"; "any" } ++ x ;
|
|
All => variants { "all"; ["all the"] } ++ (x + "s")
|
|
} } ;
|
|
|
|
oper mkSetAdj : Str -> Str -> Set = \x -> \adj -> { s = table {
|
|
Any => variants { "a"; "some"; "any" } ++ adj ++ x ;
|
|
All => variants { "all"; ["all the"] } ++ adj ++ (x + "s")
|
|
} } ;
|
|
|
|
oper optional : Str -> Str = \s -> variants { []; s } ;
|
|
|
|
oper song = variants {"song"; "track"} ;
|
|
oper album = variants {"album";"record";"cd"} ;
|
|
|
|
oper command : Str -> { s : Str } =
|
|
\s -> { s = variants {s; "please" ++ s; s ++ "please" } } ;
|
|
|
|
|
|
lincat
|
|
PlaylistSet, ArtistSet, AlbumSet, SongSet = Set ;
|
|
|
|
|
|
lin
|
|
-- Action
|
|
|
|
add_song_to_playlist l o =
|
|
command ("add" ++ o.s ++ "to" ++ l.s) ;
|
|
|
|
-- create a new playlist
|
|
create =
|
|
command ["create a new playlist"] ;
|
|
|
|
dialog_pause =
|
|
command (variants {
|
|
["pause the dialog"];
|
|
["be"] ++ variants { "quiet";"silent" };
|
|
["shut"] ++ variants {[]; ["the hell"]; ["the fuck"]} ++ "up";
|
|
["shut your mouth"];
|
|
["put a sock in it"];
|
|
});
|
|
|
|
go_back_in_display_history =
|
|
command (variants { ["back"]; ["go back"] }) ;
|
|
|
|
help =
|
|
command (variants { ["help"]; ["help me"]; ["give me help"] }) ;
|
|
|
|
-- tell me
|
|
identify x =
|
|
command (optional ["tell me"] ++ x.s) ;
|
|
|
|
-- identify_songlist_of_album x = command (x.s) ;
|
|
|
|
make_completion x = command (x.s) ;
|
|
|
|
pause =
|
|
command "pause" ;
|
|
|
|
play x =
|
|
command ("play" ++ x.s) ;
|
|
|
|
please_repeat =
|
|
command (variants {
|
|
["repeat that"];
|
|
["what"];
|
|
["pardon"];
|
|
["pardon me"];
|
|
["what did you say"];
|
|
["what was that"]
|
|
}) ;
|
|
|
|
-- I don't care
|
|
reject_any_constraint_determination =
|
|
command (variants {
|
|
["whatever"];
|
|
variants {["do i look like i"];["i don't"]}
|
|
++ variants {["give a"] ++ variants {"shit";"fuck";["rat's ass"]};
|
|
["care"]}
|
|
++ optional ["about that"];
|
|
["i couldn't care less"];
|
|
["see if i care"]
|
|
}) ;
|
|
|
|
remove l o =
|
|
command ("remove" ++ o.s ++ "from" ++ l.s) ;
|
|
|
|
resume =
|
|
command ("resume") ;
|
|
|
|
-- show me
|
|
|
|
show x =
|
|
command (["show me"] ++ x.s) ;
|
|
|
|
show_main_menu =
|
|
command (variants {
|
|
["show me the main menu"];
|
|
["go to the main menu"];
|
|
["back to the main menu"];
|
|
}) ;
|
|
|
|
skip_backward =
|
|
command (variants {"play"; ["go to"]} ++ ["the previous"] ++ song) ;
|
|
|
|
skip_forward =
|
|
command (variants {"play"; ["go to"]} ++ ["the next"] ++ song) ;
|
|
|
|
stop = command (variants { "stop" }) ;
|
|
|
|
-- ToIdentify
|
|
|
|
artist_of_album album =
|
|
{ s = "who" ++ variants {"made";"sings";"plays";"recorded"} ++ album.s } ;
|
|
|
|
artist_of_song song =
|
|
{ s = "who" ++ variants {"made";"sings";"plays";"recorded"} ++ song.s } ;
|
|
|
|
currently_playing_object =
|
|
{ s = variants {
|
|
["what is this"] ++ optional song ++ ["called"];
|
|
["what is the name of this"] ++ optional song;
|
|
} } ;
|
|
|
|
resource_by_type x = { s = x.s } ;
|
|
|
|
-- Object
|
|
|
|
one_song x = { s = x.s } ;
|
|
any_song x = { s = x.s ! Any} ;
|
|
all_songs x = { s = x.s ! All } ;
|
|
|
|
one_album x = { s = x.s } ;
|
|
any_album x = { s = x.s ! Any} ;
|
|
all_albums x = { s = x.s ! All } ;
|
|
|
|
one_playlist x = { s = x.s } ;
|
|
any_playlist x = { s = x.s ! Any} ;
|
|
all_playlists x = { s = x.s ! All } ;
|
|
|
|
|
|
-- PlaylistSet
|
|
|
|
playlists_all = mkSet "playlist" ;
|
|
playlists_by_genre genre = mkSetAdj "playlist" (genre.s) ;
|
|
|
|
-- Playlist
|
|
|
|
playlist_this = { s = ["this playlist"] } ;
|
|
playlist_number x = { s = "playlist" ++ x.s } ;
|
|
playlist_name x = { s = variants { ["the playlist"] ++ x.s; "the" ++ x.s ++ "playlist" }};
|
|
|
|
-- ArtistSet
|
|
|
|
artists_all = mkSet "artist" ;
|
|
|
|
-- Artist
|
|
|
|
artist_this = { s = ["this artist"] } ;
|
|
artist_name x = { s = optional ["the artist"] ++ x.s } ;
|
|
|
|
-- AlbumSet
|
|
|
|
albums_all = mkSet album ;
|
|
albums_by_artist artist = { s = \\n => (mkSet album).s ! n ++ "by" ++ artist.s };
|
|
albums_by_genre genre = mkSetAdj album (genre.s) ;
|
|
albums_by_artist_genre artist genre = { s = \\n => (mkSetAdj album (genre.s)).s ! n ++ "by" ++ artist.s };
|
|
|
|
-- Album
|
|
|
|
album_this = { s = ["this"] ++ album } ;
|
|
album_number n = { s = album ++ ["number"] ++ n.s } ;
|
|
album_name name = { s = optional (["the"] ++ album) ++ name.s } ;
|
|
album_name_artist name artist = { s = optional (["the"] ++ album) ++ name.s ++ "by" ++ artist.s } ;
|
|
|
|
-- SongSet
|
|
|
|
songs_all = mkSet song ;
|
|
songs_by_artist artist = { s = \\n => (mkSet song).s ! n ++ "by" ++ artist.s };
|
|
songs_by_genre genre = mkSetAdj song (genre.s) ;
|
|
songs_by_album album = { s = \\n => (mkSet song).s ! n ++ "from" ++ album.s } ;
|
|
songs_by_artist_genre artist genre = { s = \\n => (mkSetAdj song (genre.s)).s ! n ++ "by" ++ artist.s };
|
|
|
|
-- Song
|
|
|
|
song_this = { s = "this" ++ song } ;
|
|
song_name x = { s = optional ("the" ++ song) ++ x.s } ;
|
|
song_name_artist name artist = { s = optional ("the" ++ song) ++ name.s ++ "by" ++ artist.s } ;
|
|
|
|
-- Ordinal
|
|
|
|
-- num_1 = { s = "one" } ;
|
|
num_2 = { s = "two" } ;
|
|
-- num_3 = { s = "three" } ;
|
|
|
|
|
|
|
|
-- Music database
|
|
|
|
-- PlaylistName
|
|
|
|
CoolHits = { s = ["cool hits"] };
|
|
-- Romantik = { s = ["romance"] };
|
|
|
|
-- Artist
|
|
|
|
-- Falco = { s = ["Falco"] };
|
|
-- TheBeatles = { s = ["The Beatles"] };
|
|
U2 = { s = "u2" } ;
|
|
|
|
-- Genre
|
|
|
|
-- Pop = { s = ["pop"] };
|
|
Rock = { s = ["rock"] };
|
|
|
|
-- AlbumName
|
|
|
|
HowToDismantleAnAtomicBomb = { s = ["how to dismantle an atomic bomb"] };
|
|
|
|
-- SongName
|
|
|
|
-- AHardDaysNight = { s = ["a hard day's night"] };
|
|
-- LetItBe = { s = ["let it be"] };
|
|
Vertigo = { s = "vertigo" } ;
|
|
|
|
} |