Partager via


LanguageService.ParseSource, méthode

Analyse la source selon l'objet spécifié d'ParseRequest.

Espace de noms :  Microsoft.VisualStudio.Package
Assemblys :   Microsoft.VisualStudio.Package.LanguageService.9.0 (dans Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (dans Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.11.0 (dans Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (dans Microsoft.VisualStudio.Package.LanguageService.dll)

Syntaxe

'Déclaration
Public MustOverride Function ParseSource ( _
    req As ParseRequest _
) As AuthoringScope
public abstract AuthoringScope ParseSource(
    ParseRequest req
)

Paramètres

Valeur de retour

Type : Microsoft.VisualStudio.Package.AuthoringScope
Si réussi, retours un objet d'AuthoringScope ; sinon, retours une valeur NULL.

Remarques

Cette méthode doit être implémentée dans votre classe qui est dérivée de la classe d'LanguageService.Sachez que l'opération d'analyse peut traiter le fichier source entier ou une ligne unique ou même un jeton unique.Code d'ParseReason sur ParseRequest détermine la portée de l'opération d'analyse.

AuthoringScope retourné contient toutes les informations analysées à partir du fichier source.

[!REMARQUE]

AuthoringScope est une classe abstraite et vous devez dériver votre propre classe de celle-ci pour fournir la fonctionnalité nécessaire.Votre version d'AuthoringScope est instanciée dans cette méthode, ParseSource.Vous devez retourner un objet d'AuthoringScope même si tous les membres de cette classe retournent des valeurs NULL !

Supposée toujours cette méthode peut être appelée sur le premier plan ou thread d'arrière-plan et analyse la source selon code d'ParseReason avant de se retourner.

Bien que la structure d'ParseRequest contienne un objet d'IVsTextView, vous ne pouvez pas utiliser qu'objet dans un thread d'arrière-plan dues à des problèmes de threading.En fait, vous ne pouvez utiliser sur le thread d'arrière-plan Source, ViewFilter, les classes d'CodeWindowManager, ou toute classe qui communique directement ou indirectement avec la vue.L'analyseur de méthode d'ParseSource doit obtenir toutes ses informations sur la source du texte fourni dans la structure d'ParseRequest (qui contient toujours le fichier source entier).

Exemples

Voici une structure simple d'une implémentation possible de la méthode d'ParseSource.

using Microsoft.VisualStudio;
using Microsoft.VisualStudio.Package;

namespace MyLanguagePackage
{
    public class MyLanguageService : LanguageService
    {
        public AuthoringScope ParseSource(ParseRequest req)
        {
            MyAuthoringScope scope = new MyAuthoringScope();
            if (req.Reason == ParseReason.Check ||
                req.Reason == ParseReason.None)
            {
                // Parse the entire source as given in req.Text. Store results in the MyAuthoringScope object.
            }
            else if (req.Reason == ParseReason.DisplayMemberList)
            {
                // Parse the line specified in req.Line for the two tokens just before req.Col to get the identifier and the member connector symbol. Find members of the identifer in the parse tree and store the list of members in the Declarations class.
            }
            else if (req.Reason == ParseReason.MethodTip)
            {
                // Parse the line specified in req.Line for the token just before req.Col to obtain the name of the method. Find all method signatures with the same name in the existing parse tree and store the list of signatures in the Methods class.
            }
            // continue for the rest of the supported ParseReason values.
            return scope;
        }
    }
}

Sécurité .NET Framework

Voir aussi

Référence

LanguageService Classe

Microsoft.VisualStudio.Package, espace de noms