Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A szintaxisfák a forráskód lexikális és szintaktikai szerkezetét jelölik. Bár ez az információ önmagában elegendő a forrás összes deklarációjának és logikájának leírásához, nem elegendő információ a hivatkozott adatok azonosításához. A név a következőt jelölheti:
- egy típus
- mező
- metódus
- helyi változó
Bár ezek mindegyike egyedileg eltérő, annak meghatározásához, hogy egy azonosító valójában melyikre utal, gyakran a nyelvi szabályok alapos megértését igényli.
A forráskódban vannak programelemek, és a programok a korábban lefordított programkönyvtárakra is hivatkozhatnak, amelyek assembly-kbe vannak csomagolva. Bár nincs forráskód, és ezért nem érhetők el szintaxiscsomópontok vagy fák az összeállításokhoz, a programok továbbra is hivatkozhatnak az elemeikre.
Ezekhez a feladatokhoz szüksége van a szemantikai modellre.
A forráskód szintaktikai modellje mellett egy szemantikai modell is tartalmazza a nyelvi szabályokat, így könnyen megfeleltetheti az azonosítókat a megfelelő programelemre hivatkozva.
Összeállítás
A fordítás a C# vagy Visual Basic program fordításához szükséges összes elemet ábrázolja, amely tartalmazza az összes szerelvényhivatkozást, a fordítóbeállításokat és a forrásfájlokat.
Mivel ezek az információk egy helyen találhatók, a forráskód elemei részletesebben is leírhatók. Az összeállítás szimbólumként jelöli az egyes deklarált típusokat, tagokat vagy változókat. Az összeállítás számos módszert tartalmaz, amelyek segítenek megtalálni és összekapcsolni azokat a szimbólumokat, amelyeket vagy a forráskódban deklaráltak, vagy egy összeállításból metaadatként importáltak.
A szintaxisfákhoz hasonlóan a kompilációk nem módosíthatók. Miután létrehozott egy összeállítást, azt ön vagy bárki más nem módosíthatja, akivel esetleg megosztja. Azonban létrehozhat egy új összeállítást egy meglévő összeállításból, miközben megad egy módosítást. Létrehozhat például egy olyan fordítást, amely minden szempontból megegyezik egy meglévő fordítással, kivéve, ha az tartalmaz egy további forrásfájlt vagy szerelvényhivatkozást.
Szimbólumok
A szimbólum a forráskód által deklarált vagy egy szerelvényből metaadatként importált különálló elemet jelöl. Minden névteret, típust, metódust, tulajdonságot, mezőt, eseményt, paramétert vagy helyi változót szimbólum jelöl.
A típus különböző metódusai és tulajdonságai segítenek megtalálni a Compilation szimbólumokat. Megtalálhatja például a deklarált típus szimbólumát a közös metaadatok neve alapján. A teljes szimbólumtáblát a globális névtér által gyökerező szimbólumok fájaként is elérheti.
A szimbólumok további információkat is tartalmaznak, amelyeket a fordító a forrásból vagy a metaadatokból határoz meg, például más hivatkozott szimbólumokat. Minden szimbólumtípust egy külön felület jelöl, amely a ISymbolfordító által gyűjtött információkat részletező saját módszerekkel és tulajdonságokkal rendelkezik. Ezen tulajdonságok közül sok közvetlenül hivatkozik más szimbólumokra. A tulajdonság például IMethodSymbol.ReturnType azt a tényleges típusszimbólumot jelzi, amelyet a metódus visszaad.
A szimbólumok a névterek, a típusok és a tagok közös ábrázolását jelenítik meg a forráskód és a metaadatok között. A forráskódban deklarált és a metaadatokból importált metódusokat például ugyanazzal a tulajdonságokkal rendelkező metódus képviseli IMethodSymbol .
A szimbólumok koncepciójukban hasonlóak az API által System.Reflection képviselt CLR-típusrendszerhez, mégis gazdagabbak abban, hogy nem csupán típusokat modelleznek. A névterek, a helyi változók és a címkék mind szimbólumok. Emellett a szimbólumok a nyelvi fogalmak, nem a CLR-fogalmak ábrázolása. Sok az átfedés, de sok értelmes különbség is van. A C# vagy a Visual Basic iterátormetódusa például egyetlen szimbólum. Ha azonban az iterátor metódust CLR-metaadatokra fordítják le, az egy típus és több metódus.
Szemantikai modell
A szemantikai modell egyetlen forrásfájl összes szemantikai információjának felel meg. A következők felderítésére használhatja:
- A forrás egy adott helyén hivatkozott szimbólumok.
- Bármely kifejezés eredő típusa.
- Minden diagnosztika, amely magában foglalja a hibákat és figyelmeztetéseket.
- Hogyan áramlanak a változók be a forrásrégiókba és ki onnan.
- A válaszok a spekulatívabb kérdésekre.