Popis programovacího jazyku Logmanager
Tento dokument popisuje vlastnosti a práci s interním programovacím jazykem Logmanager. Naleznete zde schéma jazyka a mnoho užitečných informací, které usnadní práci s nástrojem Blockly.
Tento typ má pouze jednu hodnotu. Existuje pouze jediný objekt této hodnoty. Používá se k označení absence hodnoty. Pravdivostní hodnota je nepravda.
Reprezentuje číslo v neomezeném rozsahu. Omezeno pouze aktuální dostupnou (virtuální) pamětí.
Reprezentují reálná čísla v neomezeném rozsahu s desetinnou čárkou.
Reprezentují pravdivostní hodnoty True nebo False. Ukládají se jako celá čísla 1 (true) nebo 0 (false).
Sekvence představují omezené uspořádané sady indexované nezápornými čísly. Vestavěná funkce len() vrací počet prvků sekvence. Když je délka sekvence n, množina indexů obsahuje čísla 0, 1, …, n-1. Prvek i sekvence a je vybrán pomocí a[i].
Sekvence také podporují operaci vyjmutí (slicing): a[i:j] vybere všechny prvky s indexem k takovými, že i <= k < j. Když se použije jako výraz, výřez je sekvence stejného typu. To implikuje, že množina indexů je přečíslována tak, že začíná na 0.
Měnitelné sekvence mohou být změněny po jejich vytvoření. Notace přístupu pomocí indexu a výřezu mohou být použity jako cíl při přiřazování a odstraňování (delete) příkazů.
Implementovaným měnitelným typem sekvence je list.
Prvky seznamu jsou libovolné objekty.
Seznamy jsou vytvořeny umístěním seznamu výrazů oddělených čárkou do hranatých závorek.
Objekt neměnného typu sekvence nemůže být změněn poté, co je vytvořen.
Implementací neměnné sekvence je řetězec (string).
Řetězec je sekvence znaků Unicode.
Mapování (mappings) reprezentují konečné sady objektů indexované libovolnými množinami indexů. Notace s hranatými závorkami a[k] vybere k prvek z mapování a; toto lze využít ve výrazech a jako cíl přiřazení (assignment) nebo u příkazů del (odstranění). Vestavěná funkce len() vrátí počet prvků v mapování.
Slovníky (dictionaries) reprezentují konečné sady objektů indexované téměř libovolnými hodnotami. Jediné typy hodnot, které nejsou přijatelné jako klíče, jsou hodnoty obsahující seznamy, slovníky nebo jiné měnitelné typy, které jsou porovnávány hodnotou místo identifikace objektu.
Pokročilé typy jsou odvozeny od základních standardních typů s rozšířenou funkcionalitou.
Reprezentace IP adresy odvozená od typu mapování.
Přiřazení řetězcové hodnoty do tohoto typu se pokouší identifikovat, zda je daný řetězec IP adresou. V opačném případě představuje IP adresu 0.0.0.0.
Podhodnoty tohoto typu jsou pouze pro čtení a lze k nim přistupovat pomocí standardního přístupu mapování.
Reprezentace MAC adresy (MAC-48 dle standardu IEEE 802) v lidsky čitelné podobě.
Přiřazení řetězcové hodnoty do tohoto typu se pokouší najít 12 hexadecimálních znaků a vytvořit normalizovanou reprezentaci MAC adresy. V případě neplatné vstupní hodnoty je adresa reprezentována hodnotou “000000000000”.
Podhodnoty tohoto typu jsou pouze pro čtení a lze k nim přistupovat pomocí standardního přístupu mapování.
Každá proměnná má jedinečný identifikátor a hodnotu s typem definovaným při přiřazení. Speciální vestavěné proměnné jsou pouze pro čtení.
Vyjmutí (slicing) vybere rozsah prvků v objektu sekvence (například seznamu, řetězci). Vyjmutí mohou být použity jako výrazy nebo jako cíle při přiřazování nebo příkazech odstranění (del).
Pomocí indexu vybíráme hodnotu prvku z objektů mapování. V případě, že je objekt mapování také měnitelný, může být použita indexace jako výraz v příkazu odstranění (del).
Porovnání vrací logické hodnoty: True (pravda) nebo False (nepravda).
Porovnání mohou být řetězena libovolně, například x < y <= z je ekvivalentní s x < y & y <= z.
Aritmetika je definována pouze pro numerické datové typy a operace mezi nimi. Použití aritmetických operátorů na jakýkoli jiný typ má nedefinované výsledky, které se mohou měnit mezi verzemi.
Operátory <, >, ==, >=, <=, a != porovnávají hodnoty dvou objektů. Objekty nemusí mít stejný typ.
Operátory in a not in testují členství. Výraz x in s vyhodnotí na true (pravda), pokud je x členem s, a jinak na false (nepravda).
V kontextu logických operací a také při použití výrazů ve řídicích strukturách jsou následující hodnoty interpretovány jako nepravdivé: False, None, numerická nula všech typů, prázdné řetězce a kontejnery (včetně řetězců, tuplů, listů, slovníků). Všechny ostatní hodnoty jsou interpretovány jako pravdivé.
Operátor not vrací True (pravda), pokud je jeho argument nepravdivý, a jinak False (nepravda).
return, assignment, del, with
Přiřadí hodnotu variabilnímu výrazu. Jako výraz může být použita proměnná, vyjmutí (slicing) nebo indexace (subscription).
Smazání jména odstraňuje přiřazení tohoto jména z místního nebo globálního prostoru jmen.
Mazání atributů, indexace a vyjmutí je předáno primárnímu objektu, který je zapojen; smazání vyjmutí je obecně ekvivalentní přiřazení prázdného vyjmutí správného typu (avšak i to je určeno vyjmutým objektem).
Příkaz return ukončuje aktuální volání funkce a vrací hodnotu (nebo None) jako návratovou hodnotu.
Výraz if se používá pro podmíněné vykonání kódu.
Příkaz with definuje kontext vykonávání, který je obalen specifikovanými správci kontextu (context managers).
Definice funkce definuje objekt uživatelem definované funkce.
Názvy a hodnoty parametrů určeny danými typy bloků.
Definice funkce je vykonatelný příkaz. Jeho vykonání váže název funkce v aktuálním místním prostoru jmen na objekt funkce (obalující spustitelný kód funkce). Tento objekt funkce obsahuje odkaz na aktuální globální prostor jmen jako globální prostor jmen, který se použije při volání funkce.
Definice funkce nevykonává tělo funkce; to se vykonává až při volání funkce.
Příkaz volání (call) volá volatelný objekt (například funkci) s možnou prázdnou sekvencí argumentů:
Primární výraz musí vyhodnotit na volatelný objekt (uživatelem definované funkce, vestavěné funkce, metody vestavěných objektů; rozšíření mohou definovat další typy volatelných objektů). Všechny výrazy argumentů jsou vyhodnoceny před pokusem o volání.
Volání jsou v současnosti definována ve speciálních blocích s určenými argumenty