JLABS

VaxNt/ProDB.PGuide.Virtual

Programátorská příručka.Virtuální stroj VaxNt

Bullet Na tomto místě si trochu popíšeme implementaci interpreteru VaxNt. Každý skript při startu dostává jednu "čistou" kopii interpretečního prostředí, tuto kopii nazýváme virtuálním strojem VaxNt. Tento stroj z pohledu skriptu implementuje všechny funkce, obsahuje proměnné v Contextu, odkazy na globální soubory atd. Není-li stanoveno jinak, skript manipuluje svůj vlastní virtuální stroj. Vedle Contextu existují pro implementaci důležité níže popsané objekty.

Bullet Jejich existence je tak trochu vynucena požadavkem na efektivnost interpretetace. Obsah Contextu bohatě stačí na běžné manipulace, ale načíst například do jedné proměnné seznam všech databázových klíčů z nějaké velké tabulky není moc dobrý nápad - přístup ke každé proměnné Contextu je pak zoufale pomalý. Proto tedy některé operace provádí interpreter na izolovaných objektech, obvykle jsou to Stringy nebo jejich pole. Týká se to headerů reportů, seznamů apod.

Bullet Přehled vnitřních proměnných virtuálního stroje VaxNt


    Objekt             Typ                     Popis
    ------------------------------------------------------------------------------------------------------------
    Context            TStringList             Vlastní proměnné, se kterými skript pracuje explicitně
    Watches            TStringList             Seznam hlídaných proměnných v ladícím režimu
    Data               TStringList             Sem se načítají hodnoty z sql dotazů a mixují se posléze do Context
    List,List2,List3   TStringList             Pomocné proměnné pro konstrukce sáhodlouhých seznamů
    Op                 String                  Kód právě prováděné funkce
    Arg                String                  ArgList právě prováděné funkce
    Arg1               String                  1.slozka operandu
    Arg2               String                  2.slozka operandu
    DbName             String                  Implicitní nastavitelné jméno databáze, které se týkají všechny
                                               databázové operace insert, update apod.
    _S                 String                  Stringový registr
    _Sreg              String                  Stringový registr
    _Atom              String                  Stringový registr
    _Separator         String                  Stringový registr
    _Separator2        String                  Stringový registr
    _SCnt              Integer                 Pointer do _SReg
    _ExitLabel         String                  Stringový registr
    R0                 String                  Stringový registr
    R1                 String                  Stringový registr
    S1                 String                  Stringový registr
    ReturnedList       String                  Stringový registr
    AnalyzedList       String                  Stringový registr
    SavedList          String                  Stringový registr
    ConstructedList    String                  Stringový registr
    Spacing            String                  Stringový registr
    ReturnStack        Array[1..64] of Integer Stack pro _call a _return
    ReturnSP           Integer                 Stack pointer pro _call a _return
    DebugLevel         Integer                 Úroveň ladícího režimu (0-3)
    Stack              Array[1..64] of String  Stack pro operace push a pop
    SP                 Integer                 Jeho pointer
    Prg                Array[1..512] of String Text právě interpretovaného skriptu
    PC                 Integer                 Program counter
    PrgLen             Integer                 Délka programu
    PreviousResult     Integer                 Výsledek předešlé funkce, CC
    A1                 String                  Během analýzy řádku typicky 1.Argument, jméno
    A2                 String                  Během analýzy řádku typicky 2.Argument, jméno
    A3                 String                  Během analýzy řádku typicky 3.Argument, jméno
    A4                 String                  Během analýzy řádku typicky 4.Argument, jméno
    V1                 String                  Během analýzy řádku typicky hodnota 1.Argumentu
    V2                 String                  Během analýzy řádku typicky hodnota 2.Argumentu
    V3                 String                  Během analýzy řádku typicky hodnota 3.Argumentu
    V4                 String                  Během analýzy řádku typicky hodnota 4.Argumentu
    ReportHeader1      String                  Hlavička generovaného reportu, řádek 1
    ReportFooter1      String                  Patička generovaného reportu, řádek 1
    ReportHeader2      String                  Hlavička generovaného reportu, řádek 2
    ReportFooter2      String                  Patička generovaného reportu, řádek 1
    ReportHeader3      String                  Hlavička generovaného reportu, řádek 3
    ReportFooter3      String                  Patička generovaného reportu, řádek 1
    ReportNewLine      String                  String vypisovaný při konci řádku
    ReportPageLength   Integer                 Počet řádků na stránku reportu  
    NoRefreshAtAll     Boolean                 Indikátor potlačující refresh zobrazení po funkci exit

Bullet Přehled globálních proměnných interpreteru sdílených všemi kopiemi virtuálního stroje VaxNt


    Objekt             Typ                     Popis
    ------------------------------------------------------------------------------------------------------------
    fIndention         String                  Autoindentační prefix pro zápisy do textových souborů
    DropSrc            TStringList             Zdrojový kontext pro operace "drag-and-drop", tedy obsah řádku v
                                               pohledu, kde bylo myší "bafnuto"
    DropDst            TStringList             Komplementární kontext pro "drag-and-drop:, tedy kam se data
                                               "bafnutá" myší "mrsknou".
    ImpliciteContext   TStringList             Náhradní kontext volání v situacích, kdy žádný neexistuje, například
                                               při start-upu.
    SavedContext       TStringList             Transientní místo pro operace save a restore přes hranici života
                                               jednoho skriptu.
    CallingContext     TStringList             Dočasná proměnná při volání skriptu
    ReturnedContext    TStringList             Dtto
    Defaults           TStringList             Systémové defaulty, platí globálně
    Vector             TStringList             Pomocná proměnná pro vektorové operace
    Vector2            TStringList             Dtto
    GlobalAnalyzedList String                  Pomocná proměnná pro vracení konstruovaných seznamů z privátních
                                               dat každé kopie virtuálního stroje VaxNt
    ------------------------------------------------------------------------------------------------------------


BulletRejstřík kapitoly
BulletNadřízená kapitola dokumentace / rejstřík


JLABS Aktualizováno dne 20000704. Komentář: info@jlabs.cz