Initial commit
This commit is contained in:
93
grammatical_types.py
Normal file
93
grammatical_types.py
Normal file
@@ -0,0 +1,93 @@
|
||||
|
||||
class PartOfSpeech(str):
|
||||
"A grammatical part of speech"
|
||||
|
||||
class NounPhrase(PartOfSpeech):
|
||||
"""A phrase whose head is a noun. May contain a determiner and adjectives.
|
||||
Examples: eagle, evil mountain, several delicious candies. that lady
|
||||
"""
|
||||
|
||||
class DeterminedNounPhrase(NounPhrase):
|
||||
"""A NounPhrase containing a determiner.
|
||||
Examples: my shirt, the pencil, any dog
|
||||
"""
|
||||
|
||||
class Pronoun(DeterminedNounPhrase):
|
||||
"""A noun referring to another noun.
|
||||
Examples: I, you, it, he, she
|
||||
"""
|
||||
|
||||
class Noun(NounPhrase):
|
||||
"""A base noun (which is a valid NounPhrase).
|
||||
Examples: child, pillow, chair, you
|
||||
"""
|
||||
|
||||
class PluralNoun(Noun):
|
||||
"""A noun referring to more than one of something.
|
||||
Examples: cats, houses, ideas, people
|
||||
"""
|
||||
|
||||
class VerbPhrase(PartOfSpeech):
|
||||
"""A phrase whose head is a verb, possibly containing adverbs.
|
||||
Examples: think, eat a donut, swim in the ocean
|
||||
"""
|
||||
|
||||
class TransitiveVerb(PartOfSpeech):
|
||||
"""A verb which has a subject and an object.
|
||||
(Note that many verbs may be transitive or intransitive. You can eat or eat an apple.
|
||||
Examples: annoy, cancel, chase, disobey
|
||||
"""
|
||||
|
||||
class IntransitiveVerb(VerbPhrase):
|
||||
"""A verb with a subject but no object.
|
||||
Examples: sleep, depart, run, jump
|
||||
"""
|
||||
|
||||
class PastTenseTransitiveVerb(TransitiveVerb):
|
||||
"""A transitive verb in the past tense.
|
||||
Examples: canceled, chased, disobeyed, praised
|
||||
"""
|
||||
|
||||
class PastTenseIntransitiveVerb(IntransitiveVerb):
|
||||
"""An intransitive verb in the past tense.
|
||||
Examples: slept, departed, ran, jumped
|
||||
"""
|
||||
|
||||
class Adjective(PartOfSpeech):
|
||||
"""A word which describes a noun.
|
||||
Examples: blue, ugly, tiny, late
|
||||
"""
|
||||
|
||||
class Adverb(PartOfSpeech):
|
||||
"""A word which describes a verb.
|
||||
Examples: quickly, violently, suspiciously, boldly
|
||||
"""
|
||||
|
||||
class Determiner(PartOfSpeech):
|
||||
"""A word which comes before a noun phrase and determines its referent.
|
||||
Examples: my, your, a, an, the, that, some
|
||||
"""
|
||||
|
||||
class Sentence(PartOfSpeech):
|
||||
"""A noun phrase and a verb phrase.
|
||||
Examples: I ate some old bread. The cat caught the bird. The broken chair regretted its history.
|
||||
"""
|
||||
|
||||
class Meter(str):
|
||||
"""The stress pattern of a word's syllables.
|
||||
A Meter is a string of digits. 1 means primary stress (loudest),
|
||||
2 means secondary stress (medium), and 0 means unstressed (quiet).
|
||||
For example, the meter of 'animal' is '100', the meter of 'helicopter' is '1020', and
|
||||
the meter of 'inexcusable' is '20100'.
|
||||
"""
|
||||
|
||||
def __init__(self, code):
|
||||
allowed_digits = ['0', '1', '2']
|
||||
if not all(digit in allowed_digits for digit in code):
|
||||
raise ValueError("A Meter must be a string of digits, 0-2, like '1020'")
|
||||
|
||||
class Poem(list):
|
||||
"""A Poem is just a list which can format itself nicely on multiple lines.
|
||||
"""
|
||||
def __str__(self):
|
||||
return "\n".join(str(line).capitalize() for line in self)
|
||||
Reference in New Issue
Block a user