LanguageService.ParseSource(ParseRequest) Metoda

Definice

Analyzuje zdroj na základě zadaného ParseRequest objektu.

public:
 abstract Microsoft::VisualStudio::Package::AuthoringScope ^ ParseSource(Microsoft::VisualStudio::Package::ParseRequest ^ req);
 abstract Microsoft::VisualStudio::Package::AuthoringScope ParseSource(Microsoft::VisualStudio::Package::ParseRequest const & req);
public abstract Microsoft.VisualStudio.Package.AuthoringScope ParseSource (Microsoft.VisualStudio.Package.ParseRequest req);
abstract member ParseSource : Microsoft.VisualStudio.Package.ParseRequest -> Microsoft.VisualStudio.Package.AuthoringScope
Public MustOverride Function ParseSource (req As ParseRequest) As AuthoringScope

Parametry

req
ParseRequest

pro ParseRequest Popisuje, jak analyzovat zdrojový soubor.

Návraty

AuthoringScope

V případě úspěchu vrátí AuthoringScope objekt; v opačném případě vrátí hodnotu null.

Příklady

Tady je jednoduchá osnova možné implementace ParseSource metody.

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;  
        }  
    }  
}  

Poznámky

Tato metoda musí být implementována ve vaší třídě, která je odvozena od LanguageService třídy. Počítejte s tím, že operace analýzy může fungovat na celém zdrojovém souboru nebo na jednom řádku nebo dokonce na jednom tokenu. ParseReasonKód v modulu ParseRequest určuje rozsah operace analýzy.

Vrácená zpráva AuthoringScope obsahuje všechny informace analyzované ze zdrojového souboru.

Poznámka

AuthoringScope je abstraktní třída a z ní musíte odvodit svou vlastní třídu, aby poskytovala nezbytné funkce. AuthoringScopeV této metodě je vytvořena instance vaší verze ParseSource . Je nutné vrátit AuthoringScope objekt i v případě, že všichni členové této třídy vrací hodnoty null!

Tuto metodu lze volat buď na popředí, nebo v vlákně na pozadí a je vždy očekávána analýza zdroje podle ParseReason kódu před vrácením.

I když ParseRequest Struktura obsahuje IVsTextView objekt, nemůžete použít tento objekt ve vlákně na pozadí z důvodu problémů s vlákny. Ve skutečnosti nemůžete použít ve vlákně na pozadí Source , ViewFilter , CodeWindowManager třídách nebo jakékoli třídě, která přímo nebo nepřímo komunikuje se zobrazením. ParseSourceAnalyzátor metody musí získat všechny informace o zdroji z textu zadaného ve ParseRequest struktuře (který vždy obsahuje celý zdrojový soubor).

Platí pro