diff options
| author | aarne <aarne@chalmers.se> | 2009-10-08 12:40:47 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2009-10-08 12:40:47 +0000 |
| commit | ffb5fdcd2580b00203456636be887adcc9759bda (patch) | |
| tree | 2b9884e516a91034f43fb76de88b6d3575ba9bbf /examples/sammie/SammieEng1.gf | |
| parent | df7f4ab34df6609d8af73d638832b735c2072937 (diff) | |
Sammie grammars added to examples
Diffstat (limited to 'examples/sammie/SammieEng1.gf')
| -rw-r--r-- | examples/sammie/SammieEng1.gf | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/examples/sammie/SammieEng1.gf b/examples/sammie/SammieEng1.gf new file mode 100644 index 000000000..adc541e79 --- /dev/null +++ b/examples/sammie/SammieEng1.gf @@ -0,0 +1,235 @@ + +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" } ; + +}
\ No newline at end of file |
