Munka kvazitsitatami a nemerle

bevezetés
Hivatkozások nevek
névfeloldás
Hogy vannak a nevek?
Esetlegesen felmerülő problémákat, ha kvazitsitat
Változások a Splice

Munka kvazitsitatami a nemerle

Kvazitsitaty olyan eszköz, amely leegyszerűsíti a kód generáció. Kvazitsitata - ezt a kódrészletet sablont. Külsőleg hasonlít egy karaktersorozatot kódrészlet, de ellentétben a húr kódot kvazitsitate bemutatott formájában AST. Ez lehetővé teszi, hogy ellenőrizzék a szintaktikai helyességét a generált kód, és segít megelőzni a lefoglalását a nevét a külső környezet, és további kényelmi funkciók.

Az előtag „kvázi” azt jelenti, hogy idézetek lehet töltés pont (helyőrzők), amelyben szúrhat kész AST. Az ilyen pontok hívják Nemerle splicing (splice).

A Nemerle összes kód formájában jelenik meg az AST. Ez lehetővé teszi, hogy összekapcsolják kódot kézzel írt programozó kód kapott hivatkozások.

Ebben a cikkben fogunk összpontosítani az új vagy nem triviális funkciókat kvazitsitatami Nemerle. Tehát, ha van egy általános bevezetést a kérdés, meg más dolgokat.

Hivatkozások nevek

Talán a legnehezebb, és ugyanakkor érdekes téma a téma kialakulásának linkeket a nevek kvazitsitat.

Nemerle támogatja az úgynevezett higiénia. A gyakorlatban ez azt jelenti, hogy a megadott név a makro (a kvazitsitate makró) nem lépheti át a nevét, hogy felvették a kézirat programozó kódot. Például, ha létrehozunk egy makró:

A mi példákban a végső színt és usesite, és a globális egy és ugyanaz. De ez nem kell, hogy így legyen. Splice globális mindig ad egy „globális szín”, míg az értéke illesztési usesite függ, ahol a makro használható, amely kimondta kvazitsitata. Például, ha megnézzük a makrót kvazitsitaty található másik makró, a szín lesz a színe a globális makró.

Hogyan lehetne eldönteni, hogy melyik típusú összeillesztéseinek?

A válaszom egyszerű - próbálja meg anélkül, hogy szeletekre. Ha kell utalni, hogy a név más kontextusban, akkor próbálja ki, hogy milyen típusú illesztési usesite. Ha szükség van arra, hogy egy globálisan látható nevek, használja a globális. És ha meg kell utalni a nevét, és minden más típusú felhasználása nem splice, használat din.

Általában ne feledjük, hogy din - ez egy teljes sérti a higiéniai szabályok. Azt csak a legvégső esetben.

névfeloldás

Bár ez nem tilos, de a makró nem feltétlenül mindig írja teljesen minősített neveket (például típus). Ehelyett, akkor nyissa meg a megfelelő típusú szolgáltatáshoz egy irányelvet, és hogy egyszerű (ami egyetlen azonosító) vagy relatív nevek:

Amellett, hogy az ilyen típusú is vannak illesztési illesztési típus neve. Ez lehetővé teszi, hogy helyettesítse egy idézet Név objektum típusa. Ezen az oldalon a következő részben. Továbbá, ez a cikk tartalmaz egy szakaszt szentelt a problémákat, hogy használata során esetleg előforduló kvazitsitat társított objektumot.

Hogy vannak a nevek?

Minden makroszinten kifejezést Nemerle képez saját egyedi összefüggésében, amely kapcsolatban van egy egyedi „színes”. „Color” - olyan ábrás kifejezés, amely mögött elrejti egész szám azonosítót kapunk egyszerűen megnöveli.

Egyedi kód színe van egy fix azonosító, amelynek értéke „1”.

Nevek alakult kvazitsitatah megkapja a rendelt szín az adott kontextusban. Így a színek nem fedik egymást minden makro-szintű kifejeződését és kézzel írt kódot. Ez az úgynevezett „higiénia”. Higiéniai trudnoobnaruzhimye megelőzi a hibákat, amelyek gyakran megtalálhatók a C / C ++ szöveges makrók makrók Lisp (ahol ez a probléma ki van iktatva, de nem annyira elegáns Nemerle).

Name Nemerle képviselők osztály:

Itt van egy leírás a mezőket:

  • IDL - csak egy név.
  • szín - a szín nevét.
  • összefüggésben - a környezet, amelyben a nevet jelentették be. A kontextus információt tárol szükséges kötési nevét. Vele, akkor a „connect” a neve annak meghatározását, nem miközben a folyamat gépelés.
  • ParsedId - a nevét a formában, amelyben azt megkapják idején elemzés. Ez az érték esetenként eltérhet a értéke «IDL», és nem mindig lehet adni.
  • Elhelyezkedés - tulajdonság, hogy határozza meg az alap osztály. Ez lehetővé teszi, hogy tudja a helyét az azonosító kódot. Ha az azonosító kód határozza meg a kéziratot, akkor pont a helyén annak meghatározását. Ha a makró, a makrót a felhasználás helyén vagy a generált kódot a makrót, ha a makró szerző akarta csinálni. Ez a tulajdonság lehet használni a hibaüzenetek, ez is az IDE használja, így meta-információt a kódot.

Az osztály neve információk kizárólag oktatási célra. A gyakorlatban meg kell próbálni, hogy nem használja közvetlenül.

Esetlegesen felmerülő problémákat, ha kvazitsitat

Annak ellenére, hogy a használata kvazitsitat nagyon kényelmes és nagyban egyszerűsíti a kódot generációs, amikor használják Nemerle problémák merülhetnek fel. Az ok szinte az összes ilyen problémát abban rejlik, hogy megpróbálja újra használni, mint a neve tárgyakat különböző helyeken vagy különböző idézetek idézetek. Tény, hogy ez a fordító hibát. De ez egy elég rendszerhiba, és helyes ez nem olyan könnyű. Amíg ez meg nem oldódik, nem szabad elfelejteni, róla, és tegyen intézkedéseket, hogy nem jelenik meg.

Az újrahasználat fordulhat elő, ha a manuális manipuláció az objektum típusát Név, például: