#include
#include "html.pbi"
#ifndef FRIEND
#define FRIEND "friend"
#endif
#ifndef ACTOR
#define ACTOR "actor"
#endif
#ifndef MOVIE
#define MOVIE "movie"
#endif
#ifndef DIRECTOR
#define DIRECTOR "director"
#endif
entry: TITLE(title(opinion)>upcase-first) review ;
review:
introduction(opinion) BRK discuss(opinion) PBRK @opinion>make-paragraph
| introduction(opinion) PBRK @opinion>make-paragraph BRK discuss(opinion)
| introduction(opinion) BRK @opinion>make-paragraph
| introduction(opinion) BRK discuss(opinion)
| intro(movie)>upcase-first ". " no-opinion
| introduction(opinion) PBRK plot
| introduction(opinion) PBRK plot PBRK discuss(opinion) BRK @opinion>make-paragraph
| introduction(opinion) BRK @opinion>make-paragraph PBRK plot PBRK discuss(opinion) BRK @opinion>make-paragraph
| introduction(opinion) BRK @opinion>make-paragraph PBRK discuss(opinion) BRK @opinion>make-paragraph
;
friend: FRIEND;
movie: "'" MOVIE "'";
director: DIRECTOR;
actor: ACTOR;
title(op):
movie | movie | movie
| movie ": " @op
| movie ": " [@op]>add-indefinite-article [" movie" | " flick" | " picture"]
| "I saw " movie
| "at the movies"
| [@op]>add-indefinite-article " movie"
;
opinion:
v-opinion< "good"
"superlative" -> "bad"
"good" -> "superlative"
;
conj:
"superlative" -> "and"
"good" -> "and"
"bad" -> "but"
;
add-indefinite-article:
"^simply [aeiou].*" -> "^simply"/"simply an"
"^simply.*" -> "^simply"/"simply a"
"^just [aeiou].*" -> "^just"/"just an"
"^just.*" -> "^just"/"just a"
"^[aeiou].*" -> "^"/"an "
"^[AEIOU].*" -> "^"/"an "
"^.*" -> "^"/"a "
;
movie-aspect:
"the plot"
| "the soundtrack"
| "the script"
| "the cinematography"
| "the lighting"
| "the dialog"
| "the casting"
;
movie-aspects:
"the costumes"
| "the sets"
;
watcher:
v-watcher< "I"
".*" -> "we"
;
make-actor-sentence:
".*" -> "$"/"-actor-sentence"
;
make-aspect:
".*" -> "$"/"-aspect"
;
make-paragraph:
".*" -> "$"/"-paragraph"
;
some-time:
"last night"
| "yesterday"
| "last saturday"
;
generic-opening:
"I just have to say "
| "I have to say "
| "I just want to say "
| "I want to say "
| "Anyway "
| "Well, "
;
introduction(op):
intro("%LINK%")>upcase-first ". " expectation>upcase-first ", " op>conj " " movie-opinion("it" op) ". "
| expectation>upcase-first ", " op>conj " " movie-opinion("%LINK%" op) ". "
| intro("%LINK%")>upcase-first ". "
| intro("%LINK%")>upcase-first ". " expectation>upcase-first ". "
| expectation>upcase-first ". So " intro("%LINK%") ". "
| intro(["the movie " "%LINK%"])>upcase-first ". "
| intro(["%LINK%" [" (with " actor ")"|", by " director]])>upcase-first ". "
| intro("%LINK%")>upcase-first ". " [@op]>upcase-first " movie. "
| intro(["%LINK%" [" (with " actor ")"|", by " director]])>upcase-first ". " movie-opinion("it" op)>upcase-first ". "
| intro(movie)>upcase-first ". " movie-opinion("it " op)>upcase-first ". "
| intro(movie)>upcase-first " and " movie-opinion("it " op) ". "
| movie-opinion("%LINK%" op)>upcase-first ", " intro("it") ". "
| movie-opinion(movie op)>upcase-first ", " intro("the movie") ". "
| movie-opinion("%LINK%" op)>upcase-first ". "
| intro(movie)>upcase-first ". " generic-opening movie-opinion("it" op) ". "
| generic-opening movie-opinion("%LINK%" op) ". "
;
intro (m):
watcher " saw " m " " some-time
| some-time " " watcher" saw " m
| "just saw " m
| watcher " went to see " m ["" | " " some-time]
| watcher " went to the movies " some-time " and saw " m
| some-time " " watcher " went to the movies and saw " m
| watcher " saw a screening of " m " " some-time
;
movie-opinion(m op):
m " was " @op
| m " is " [@op]>add-indefinite-article " movie"
| m " is " @op
| watcher>pronoun " found " m " " [@op | [@op]>add-indefinite-article " movie"]
| watcher>pronoun " thought " m " was " [@op | [@op]>add-indefinite-article " movie"]
;
discuss(op):
discuss-actors(op)
| discuss-actors(op) discuss-director(op)>upcase-first " too. "
| discuss-actors(op) discuss-aspect(op)>upcase-first ". "
| discuss-director(op)>upcase-first ". " discuss-actors(op)>upcase-first
| discuss-director(op)>upcase-first ", " discuss-actors(op)
| discuss-aspect(op)>upcase-first " and " discuss-director(op) ". "
| discuss-director(op)>upcase-first " and " discuss-aspect(op) " as well. "
| discuss-aspect(op)>upcase-first ". "
| discuss-director(op)>upcase-first ". "
| "The actors and the director did " [@op]>add-indefinite-article " job. "
| discuss-aspect(op)>upcase-first ", " discuss-actors2(op)
| discuss-director(op)>upcase-first ", " discuss-actors2(op)
;
discuss-aspect(op):
movie-aspect " is " @op
| movie-aspect " and " movie-aspect " are " @op
| movie-aspect " of " movie " is " @op
| movie-aspect " is " @op ". " [@op>make-aspect]>upcase-first
| @op>make-aspect
| @op>make-aspect
;
discuss-director(op):
[""| "director "] director " did " [@op]>add-indefinite-article " job"
| "the direction " ["" | "(by " director ") "] "was " @op
| director "'s direction was " @op
;
discuss-actors(op):
"I " ["think " | "found "] actor-performance(op) ". "
| actor-performance(op)>upcase-first ". "
| actor-performance(op)>upcase-first ". "
| actor-performance(op)>upcase-first ". " actor-performance(op)>upcase-first " too. "
| actors-performance(op)>upcase-first ". "
;
discuss-actors2(op):
?op2=op>second-opinion ["but " | "however " | "although " ] actor-performance($op2) ". "
| ?op2=op>second-opinion actor-performance($op2)>upcase-first " though."
;
actor-performance(op):
actor " " ["delivered" | "gave"] " " [@op]>add-indefinite-article " performance"
| actor " did " [@op]>add-indefinite-article " job"
| actor "'s performance is " @op
| actor " is " @op
| @op>make-actor-sentence
;
actors-performance(op):
actor " and " actor " " ["delivered" | "gave"] " " @op " performances"
| actor " and " actor " did " @op " jobs"
| actor " and " actor " are " @op
| "the actors did " [@op]>add-indefinite-article " job"
| "the main actors are " @op
;
superlative:
[ "absolutely " | "just " | "truly " | "simply "] superlative-word
| superlative-word
;
superlative-word:
"great"
| "excellent"
| "stunning"
| "enthralling"
| "phenomenal"
| "wonderful"
| "stellar"
| "amazing"
| "terrific"
| "brilliant"
| "fabulous"
| "overwhelming"
| "gorgeous"
| "superb"
;
superlative-actor-sentence:
actor " "["deserves" | "should get"] " an " ["Oscar" | "Academy Award"]
| "I always enjoy " actor
;
superlative-aspect:
"a very " bold-word " and " bold-word " flick"
| "it was " bold-word ", " bold-word " and beautifully filmed"
| "very special movie that is " bold-word " and " bold-word
;
superlative-paragraph:
superlative-sentence>upcase-first "! "
| superlative-paragraph superlative-sentence>upcase-first ". "
;
superlative-sentence:
"they pulled it off in spades"
| "it caught the entire audience immediately"
| "I sat spell bound for the entire evening"
| "I highly recommend it"
| "I absolutely loved it"
| "I wanted to buy another ticket"
| "don't be swayed by the nay-sayers"
| "there wasn't a dull moment in the entire movie"
| "I disagree with everyone who said they were disappointed with " ["it" | "the movie" | movie]
| "I really believe that anyone who disagrees with me is crazy"
| "go see this movie"
| "a must see"
| "I'll definitely be going to the movie again, and probably more than once"
| "I'm definitely going to buy the DVD when it comes out"
| "this is a movie that you keep on watching, in your mind, after you leave the stadium"
;
good:
["pretty" | "rather" | "just" | "reasonably"] " " good-word
| good-word | good-word
;
good-word:
"good"
| "fine"
| "ok"
| "enjoyable"
| "pleasant"
| "nice"
| "gratifying"
| "okay"
| "decent"
| "cool"
| "amusing"
| "entertaining"
;
good-actor-sentence:
"I had reservations about " actor ", but it turned out " good
| "Normally I enjoy " actor " very much, this time the performance was mediocre"
;
good-paragraph:
""
| good-sentence>upcase-first ". "
| good-paragraph good-sentence>upcase-first ". "
;
good-aspect:
"the movie had some really " bold-word " moments"
| "occasionally the movie was very " bold-word
| "it's " bold-word " and " bold-word
| "it is " bold-word " but not very " bold-word
;
good-sentence:
"the movie is well worth the admission price"
| "it's worth the price of an admission ticket and a medium popcorn"
| "overall I think it's " good>add-indefinite-article " movie"
| "but either I was missing something crucial or the film just wasn't my type"
| movie " is the best movie from " director ", but it's not a masterpiece"
| "I won't say it's a masterpiece"
| "it's an interesting movie, well put together"
| "the mood of " movie " is rather special"
| "worth seeing, anyway"
| "it has some interesting ideas"
| "it's not bad, because it does keep you in expectation"
| "it's an interesting movie, not for everyone, but the story is engaging"
| "there are occasional lapses in credibility"
| "if you like this genre you should see " movie
| "I think my expectations were high, as I only found it " good-word ", but not the big deal that everyone was talking about"
| "this film never got up enough steam to really engage me"
;
bad:
["very" | "awfully" | "terribly"] " " bad-word1
| bad-word1
| ["just " | "absolutely " | "" | ""] bad-word2
;
bad-word1:
"bad"
| "poor"
| "silly"
| "cheesy"
| "bad"
| "overrated"
;
bad-word2:
"terrible"
| "crappy"
| "cheap"
| "lousy"
| "god-awful"
| "awful"
| "dreadful"
;
bad-actor-sentence:
"I hate " actor
| "yes, I'd already expressed my hatred of " actor " but that was before I saw any acting. Now the hate is real"
| actor " has no apparent talent"
| actor " delivers the lines like they're read directly from the script"
| actor " seemed incredibly bored by everything going on"
| "to " actor ": take some acting lessons"
| actor " should take some acting lessons"
| actor " acted badly"
| "the only highlight was " actor
;
bad-aspect:
"the story was " bold-word ", but it didn't stick."
| "the movie had some " bold-word " moments though"
| "only occasionally the film was " bold-word
| "now and then however the picture was " bold-word
| "but some parts were " bold-word
| "it just wasn't " bold-word
| "nothing " bold-word " or " bold-word " happened in the film"
| "not a single " bold-word " or " bold-word " moment in the whole damn movie"
| "there is nothing " bold-word " about the movie"
;
bad-paragraph:
""
| bad-sentence>upcase-first
| bad-paragraph bad-sentence>upcase-first
;
bad-sentence:
"the lack of chemistry was appalling. "
| director " must've been smoking something while he was watching the dailies. "
| "worst movie I've seen in my life. "
| "how the hell did I end up going to see that movie? "
| "I can't believe I actually saw it the whole way through. "
| "anyway, don't ever, ever, ever see this movie. "
| "don't waste any time or money on this. "
| "it is awful to think that someone actually paid to do this one."
| "can't call it a waste of talent, because there's nobody in it who has any."
| watcher>pronoun " walked out halfway. "
| "I honestly can't see what the fuss about this film is. "
| "it was sad, really, when you think how good the story could have been if it had been done properly. "
| movie " is the kind of film I could quite happily see exterminated from the fabric of existence. "
| "this is what I call disappointment! "
| "you shouldn't watch this film, even if you have nothing else to do. "
| "avoid at all cost!! "
| "it is complete crap! "
| "it's terribly overrated. "
| "there are some good bits, but as a whole the movie falls apart. "
;
bold-word:
"defiant"
| "bold"
| "poignant"
| "provoking"
| "gripping"
| "charismatic"
| "compelling"
| "interesting"
| "funny"
| "moving"
;
plot:
"The plot involved the following: %PLOT%"
| "%PLOT% " BRK "That is pretty much the story of " [movie | "the movie"]
| "The story of " [movie | "the movie"] " is basically like this. %PLOT%"
| "%PLOT% That's the main story line of the movie."
| "In short: %PLOT%"
| "%PLOT%" | "%PLOT%"
;
no-opinion:
no-opinion1>upcase-first
| no-opinion1>upcase-first
| no-opinion1>upcase-first ". " discuss-director(opinion)>upcase-first ". " discuss-actors2(opinion)>upcase-first " "
| no-opinion1>upcase-first ". " discuss-actors(opinion)>upcase-first " But " discuss-aspect(opinion>second-opinion) ". "
;
no-opinion1:
["I " | ""] "will " ["talk about" | "discuss" | "write about" ] " it later" [" when there's more time" | ""]
| "I won't spoil the plot " ["(or waste my time :-) " | ""] " by telling you anything about the movie" [" but that " fact | ""]
| "not much to tell, except that " fact
| "it's not easy to tell you " ["exactly " | ""] "how I felt about it"
| watcher>pronoun " had a good time"
| "more on this later"
;
expectation:
"I had high expectations because " hearsay
| hearsay " so my expectations where high"
| hearsay " so " watcher>pronoun " wanted to see what the hype is about"
| hearsay
| "my expectations were high"
| "I expected a " superlative " movie because " hearsay
| "Expectations were high since " hearsay
| "I expected a lot from this movie"
;
hearsay:
friend " told me " ["it" | "the movie"] " was " superlative
| "I heard " ["it" | "the movie"] " is " good
| "I heard a lot about this movie"
| "many people are talking about this movie"
| friend " already saw it and recommended it"
| "I heard a lot of good things about it"
| "a lot op people recommended it"
;
fact:
"it features " actor
| "it is directed by " director
;