给定一段文本，请使用Python代码检测其中的英文语法错误并输出。
一段英文文本，例如一篇文章或一个句子。
需要使用自然语言处理（NLP）库，如NLTK或SpaCy，对文本进行分词、词性标注和语法分析。然后，可以编写规则或使用规则引擎，例如LanguageTool，来检测英语语法错误，并输出它们的位置和错误类型。以下是一个示例代码：

```python
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import wordnet
from nltk.stem import WordNetLemmatizer

nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('wordnet')

def check_grammar(text):
    errors = []
    tokens = word_tokenize(text)
    tagged = nltk.pos_tag(tokens)
    lemmatizer = WordNetLemmatizer()

    for i in range(len(tagged)):
        word = tagged[i][0]
        pos = tagged[i][1]
        lemma = lemmatizer.lemmatize(word, get_wordnet_pos(pos))

        if not wordnet.synsets(word):
            errors.append((i, 'Word does not exist'))
        elif pos.startswith('V') and not wordnet.synsets(lemma, pos=wordnet.VERB):
            errors.append((i, 'Verb conjugation error'))
        elif pos.startswith('N') and not wordnet.synsets(lemma, pos=wordnet.NOUN):
            errors.append((i, 'Noun capitalization error'))
        elif pos.startswith('J') and not wordnet.synsets(lemma, pos=wordnet.ADJ):
            errors.append((i, 'Adjective comparison error'))
        elif pos.startswith('R') and not wordnet.synsets(lemma, pos=wordnet.ADV):
            errors.append((i, 'Adverb form error'))

    return errors

def get_wordnet_pos(treebank_pos):
    if treebank_pos.startswith('J'):
        return wordnet.ADJ
    elif treebank_pos.startswith('V'):
        return wordnet.VERB
    elif treebank_pos.startswith('N'):
        return wordnet.NOUN
    elif treebank_pos.startswith('R'):
        return wordnet.ADV
    else:
        return wordnet.NOUN

text = "He don't have no money."
errors = check_grammar(text)
if errors:
    for error in errors:
        print(f"Error at position {error[0]}: {error[1]}")
else:
    print("No errors found.")
```

这段代码使用NLTK库进行词性标注和词形还原，然后检查每个单词是否在WordNet库中存在。如果单词不存在，它将被视为语法错误。如果单词存在，它将根据它的POS标签在WordNet中查找并确认是否存在相应的词性。如果不存在相应的词性，将被视为语法错误。在这个示例中，将检测到语法错误“don't”和“no”不应该同时使用，并且“don't”应该用“doesn't”代替。