summary refs log tree commit diff stats
path: root/sentence.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sentence.cpp')
-rw-r--r--sentence.cpp36
1 files changed, 12 insertions, 24 deletions
diff --git a/sentence.cpp b/sentence.cpp index d06ba10..be24a46 100644 --- a/sentence.cpp +++ b/sentence.cpp
@@ -226,8 +226,7 @@ verbly::token sentence::generateStandardNounPhrase(
226 bool definite) const 226 bool definite) const
227{ 227{
228 verbly::token utter; 228 verbly::token utter;
229 verbly::word sounder = noun; 229 bool indefiniteArticle = false;
230 verbly::word descript;
231 230
232 /*if (std::bernoulli_distribution(1.0/8.0)(rng_)) 231 /*if (std::bernoulli_distribution(1.0/8.0)(rng_))
233 { 232 {
@@ -252,20 +251,10 @@ verbly::token sentence::generateStandardNounPhrase(
252 { 251 {
253 utter << "your"; 252 utter << "your";
254 } else if (!plural) { 253 } else if (!plural) {
255 if (sounder.getBaseForm().startsWithVowelSound()) 254 indefiniteArticle = true;
256 {
257 utter << "an";
258 } else {
259 utter << "a";
260 }
261 } 255 }
262 } 256 }
263 257
264 if (descript.isValid())
265 {
266 utter << descript;
267 }
268
269 if (plural && noun.hasInflection(verbly::inflection::plural)) 258 if (plural && noun.hasInflection(verbly::inflection::plural))
270 { 259 {
271 utter << verbly::token(noun, verbly::inflection::plural); 260 utter << verbly::token(noun, verbly::inflection::plural);
@@ -273,7 +262,12 @@ verbly::token sentence::generateStandardNounPhrase(
273 utter << noun; 262 utter << noun;
274 } 263 }
275 264
276 return utter; 265 if (indefiniteArticle)
266 {
267 return verbly::token::indefiniteArticle(utter);
268 } else {
269 return utter;
270 }
277} 271}
278 272
279verbly::token sentence::generateClause( 273verbly::token sentence::generateClause(
@@ -446,20 +440,15 @@ verbly::token sentence::generateClause(
446 utter << generateClause(sentence); 440 utter << generateClause(sentence);
447 } else if (part.nounHasSynrestr("quotation")) 441 } else if (part.nounHasSynrestr("quotation"))
448 { 442 {
449 verbly::token sentence(std::set<std::string>({"participle_phrase"})); 443 utter << verbly::token::quote("\"", "\"",
450 while (!sentence.isComplete()) 444 verbly::token(std::set<std::string>({"participle_phrase"})));
451 {
452 visit(sentence);
453 }
454
455 utter << ("\"" + sentence.compile() + "\"");
456 } else { 445 } else {
457 if (part.nounHasSynrestr("genitive")) 446 if (part.nounHasSynrestr("genitive"))
458 { 447 {
459 verbly::word noun = generateStandardNoun("Passive", {"animate"}); 448 verbly::word noun = generateStandardNoun("Passive", {"animate"});
460 verbly::token owner = generateStandardNounPhrase(noun, "Passive", false, true); 449 verbly::token owner = generateStandardNounPhrase(noun, "Passive", false, true);
461 std::string ownerStr = owner.compile() + "'s"; 450
462 utter << ownerStr; 451 utter << verbly::token::punctuation("'s", owner);
463 } 452 }
464 453
465 verbly::word noun = generateStandardNoun(part.getNounRole(), part.getNounSelrestrs()); 454 verbly::word noun = generateStandardNoun(part.getNounRole(), part.getNounSelrestrs());
@@ -665,4 +654,3 @@ void sentence::visit(verbly::token& it) const
665 } 654 }
666 } 655 }
667} 656}
668