Logmanager dokumentace
Přepnout tmavý/světlý/automatický režim Přepnout tmavý/světlý/automatický režim Přepnout tmavý/světlý/automatický režim Zpět na domovskou stránku

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.

Prvky analýzy a zpracování zpráv v jazyce

Standartní typy

None

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.

Celá čísla (int)

Reprezentuje číslo v neomezeném rozsahu. Omezeno pouze aktuální dostupnou (virtuální) pamětí.

Reálná čísla (float)

Reprezentují reálná čísla v neomezeném rozsahu s desetinnou čárkou.

Booleans

Reprezentují pravdivostní hodnoty True nebo False. Ukládají se jako celá čísla 1 (true) nebo 0 (false).

Sequences (sekvence)

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.

Mutable sequences (měnitelné sekvence)

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.

Lists (seznamy)

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.

Immutable sequences (neměnné sekvence)

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).

Strings (řetězce)

Řetězec je sekvence znaků Unicode.

Mappings (mapování)

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í.

Dictionaries (Slovníky)

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.

Advanced types (pokročilé typy)

Pokročilé typy jsou odvozeny od základních standardních typů s rozšířenou funkcionalitou.

IP address

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í.

MAC address

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í.

Výrazy

Proměnné

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í

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).

Subscription

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í

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

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.

Porovnání hodnot

Operátory <, >, ==, >=, <=, a != porovnávají hodnoty dvou objektů. Objekty nemusí mít stejný typ.

Operátory testu členství

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).

Boolean operace

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).

Jednoduché výrazy

return, assignment, del, with

Assignment (přidání)

Přiřadí hodnotu variabilnímu výrazu. Jako výraz může být použita proměnná, vyjmutí (slicing) nebo indexace (subscription).

Del (odebrání)

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).

Return (navrácení)

Příkaz return ukončuje aktuální volání funkce a vrací hodnotu (nebo None) jako návratovou hodnotu.

If (podmínka)

Výraz if se používá pro podmíněné vykonání kódu.

With

Příkaz with definuje kontext vykonávání, který je obalen specifikovanými správci kontextu (context managers).

Definování funkcí

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.

Calls (volání)

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