A HUME programozási nyelv

Makrók



Dobozok sokszorosítása.

<wiredecl> ::= "template" <templateid> <prelude> <body>

<wiringdecl> ::= ... | "replicate" <boxid> "as" <boxid> [ "*" <natconst> ] | "instantiate" <templateid> "as" <boxid> [ "*" <natconst> ]



Egy sablont úgy definiálunk, hogy megadjuk a doboz szerkezetét, melyet aztán példányosítunk, hogy megkapjuk a kívánt számú dobozt. Hogy egyszerűsítsük az összetett rendszerek létrehozását, mind a dobozok, mind a sablonok sokszorozhatóak megadott számszor (natconst). Például a instantiate t as b * 4 eredménye a b1, b2, b3 és b4 dobozok lesznek.

Drótok makrózása.

<wiringdecl> ::= ... | "wire" <wmacid> "(" <id1> ... <idn> ")" "=" <wireid> <sources> <dests> | "wire" <wmacid> <args>



A drótok makrózása a drót nevének és paramétereinek megadásával történhet.A drótmakrók argumentumai lehetnek doboznevek, vagy ki-/bemenetek nevei. Azonban nem lehetséges nem meghatározott értékek (pl. integer) argumentumként való megadása.

Ismételt drótozás.

<wiringdecl> ::= "for" <id> "=" <expr> [ "except" <excepts> ] <wiringdecl>


Drótok deklarációja ismételhető egy változó segítségével (opcionálisan elhagyhatók egyes értékek). Például:
for i = 0 to 4 except (2, 1)
instantiate Track as Ring{i},


eredményeképpen legenerálódik a Ring0, Ring3, Ring4, mint a Track sablon egy-egy példánya. Lehetőség van arra is, hogy for-ciklusokat fűzzünk össze, ha szükséges; lehetőség van mindkét ciklusváltozó egyidejű használatára, a statikus konstansok és makrók használatára. Ugyanakkor figyelembe kell venni, hogy az ilyen fajta ciklusok inkább a statikus folyamathálók részei, mintsem a dinamikus kifejezőnyelvé.