Class SubjectVerbAgreementRule

java.lang.Object
org.languagetool.rules.Rule
org.languagetool.rules.de.SubjectVerbAgreementRule

public class SubjectVerbAgreementRule extends org.languagetool.rules.Rule
Check subject verb agreement for verb forms "ist", "sind", "war" and "waren". For example, it detects the errors in:
  • Das Auto sind schnell.
  • Das Auto waren schnell.
  • Die Autos ist schnell.
  • Die Katze und der Hund ist schön.
See our wiki for documentation of the steps this rule relies on.
Since:
2.9
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    private static class 
     
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final List<List<org.languagetool.rules.patterns.PatternToken>>
     
    private static final List<String>
     
    private final German
     
    private static final org.languagetool.chunking.ChunkTag
     
    private static final org.languagetool.chunking.ChunkTag
     
     
    private final Set<String>
     
    private static final org.languagetool.chunking.ChunkTag
     
    private static final List<String>
     
    private final Set<String>
     
    private final GermanTagger
     

    Fields inherited from class org.languagetool.rules.Rule

    messages
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    private boolean
    containsOnlyInfinitivesToTheLeft(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
     
    private boolean
    containsRegexToTheLeft(String regex, org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
     
    int
     
    List<org.languagetool.tagging.disambiguation.rules.DisambiguationPatternRule>
     
     
     
    private String
     
    private @Nullable org.languagetool.rules.RuleMatch
    getPluralMatchOrNull(org.languagetool.AnalyzedTokenReadings[] tokens, int i, org.languagetool.AnalyzedTokenReadings token, String tokenStr, org.languagetool.AnalyzedSentence sentence)
     
    private String
     
    private @Nullable org.languagetool.rules.RuleMatch
    getSingularMatchOrNull(org.languagetool.AnalyzedTokenReadings[] tokens, int i, org.languagetool.AnalyzedTokenReadings token, String tokenStr, org.languagetool.AnalyzedSentence sentence)
     
     
    private boolean
    hasQuestionPronounToTheLeft(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
     
    private boolean
    hasUnknownTokenAt(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos, int endPos)
     
    private boolean
    hasUnknownTokenToTheLeft(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
     
    private boolean
    hasUnknownTokenToTheRight(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
     
    private boolean
    hasVerbToTheLeft(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
     
    private boolean
    isCurrency(org.languagetool.AnalyzedTokenReadings token)
     
    (package private) boolean
    isFollowedByNominativePlural(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
     
    org.languagetool.rules.RuleMatch[]
    match(org.languagetool.AnalyzedSentence sentence)
     
    (package private) boolean
    prevChunkIsNominative(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
     

    Methods inherited from class org.languagetool.rules.Rule

    addExamplePair, getCategory, getConfigureText, getCorrectExamples, getDefaultValue, getErrorTriggeringExamples, getIncorrectExamples, getLocQualityIssueType, getMaxConfigurableValue, getMinConfigurableValue, getSentenceWithImmunization, hasConfigurableValue, isDefaultOff, isDefaultTempOff, isDictionaryBasedSpellingRule, isOfficeDefaultOff, isOfficeDefaultOn, makeAntiPatterns, setCategory, setCorrectExamples, setDefaultOff, setDefaultOn, setDefaultTempOff, setErrorTriggeringExamples, setIncorrectExamples, setLocQualityIssueType, setOfficeDefaultOff, setOfficeDefaultOn, setUrl, supportsLanguage, toRuleMatchArray, useInOffice

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • NPS

      private static final org.languagetool.chunking.ChunkTag NPS
    • NPP

      private static final org.languagetool.chunking.ChunkTag NPP
    • PP

      private static final org.languagetool.chunking.ChunkTag PP
    • QUESTION_PRONOUNS

      private static final List<String> QUESTION_PRONOUNS
    • CURRENCIES

      private static final List<String> CURRENCIES
    • PAIRS

    • singular

      private final Set<String> singular
    • plural

      private final Set<String> plural
    • ANTI_PATTERNS

      private static final List<List<org.languagetool.rules.patterns.PatternToken>> ANTI_PATTERNS
    • tagger

      private final GermanTagger tagger
    • language

      private final German language
  • Constructor Details

    • SubjectVerbAgreementRule

      public SubjectVerbAgreementRule(ResourceBundle messages, German language)
  • Method Details

    • getId

      public String getId()
      Specified by:
      getId in class org.languagetool.rules.Rule
    • getDescription

      public String getDescription()
      Specified by:
      getDescription in class org.languagetool.rules.Rule
    • estimateContextForSureMatch

      public int estimateContextForSureMatch()
      Overrides:
      estimateContextForSureMatch in class org.languagetool.rules.Rule
    • getAntiPatterns

      public List<org.languagetool.tagging.disambiguation.rules.DisambiguationPatternRule> getAntiPatterns()
      Overrides:
      getAntiPatterns in class org.languagetool.rules.Rule
    • getUrl

      public URL getUrl()
      Overrides:
      getUrl in class org.languagetool.rules.Rule
    • match

      public org.languagetool.rules.RuleMatch[] match(org.languagetool.AnalyzedSentence sentence) throws IOException
      Specified by:
      match in class org.languagetool.rules.Rule
      Throws:
      IOException
    • getSingularMatchOrNull

      @Nullable private @Nullable org.languagetool.rules.RuleMatch getSingularMatchOrNull(org.languagetool.AnalyzedTokenReadings[] tokens, int i, org.languagetool.AnalyzedTokenReadings token, String tokenStr, org.languagetool.AnalyzedSentence sentence) throws IOException
      Throws:
      IOException
    • getPluralMatchOrNull

      @Nullable private @Nullable org.languagetool.rules.RuleMatch getPluralMatchOrNull(org.languagetool.AnalyzedTokenReadings[] tokens, int i, org.languagetool.AnalyzedTokenReadings token, String tokenStr, org.languagetool.AnalyzedSentence sentence)
    • isCurrency

      private boolean isCurrency(org.languagetool.AnalyzedTokenReadings token)
    • prevChunkIsNominative

      boolean prevChunkIsNominative(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
    • hasUnknownTokenToTheLeft

      private boolean hasUnknownTokenToTheLeft(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
    • hasUnknownTokenToTheRight

      private boolean hasUnknownTokenToTheRight(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
    • hasUnknownTokenAt

      private boolean hasUnknownTokenAt(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos, int endPos)
    • hasQuestionPronounToTheLeft

      private boolean hasQuestionPronounToTheLeft(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
    • hasVerbToTheLeft

      private boolean hasVerbToTheLeft(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
    • containsRegexToTheLeft

      private boolean containsRegexToTheLeft(String regex, org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
    • containsOnlyInfinitivesToTheLeft

      private boolean containsOnlyInfinitivesToTheLeft(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos) throws IOException
      Throws:
      IOException
    • isFollowedByNominativePlural

      boolean isFollowedByNominativePlural(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)
    • getSingularFor

      private String getSingularFor(String token)
    • getPluralFor

      private String getPluralFor(String token)