Už se s tím udělaly i poměrně složité věci.
Jaké cykly máte na mysli? Je to deklarativní jazyk, nikoli procedurální.
Pokud jde o ty ostatní věci:
1. podmínky: je tam např. 'when', to je ukázáno v příkladu, kromě toho se dají zadávat podmínky pomocí 'must'.
2. substituce/makra: je možné definovat 'grouping', což je podobá makrům nebo pojmenovaným vzorům (named patterns) v RELAX NG.
V článku jsem se nemohl všemu věnovat, doporučuji RFC 6020 (je to docela pěkné čtení:-).
Ano, modelovat se tím dá ledacos, router od Juniperu například (ačkoli to asi vzniklo nějakou konverzí z něčeho jiného, podle toho, jak to vypadá). 'grouping', 'when', ani 'refine' nejsou v některých situacích dost silné a k vybřednutí z copy-paste to nemusí stačit. (Trochu ujetý příklad - 40 podobných kontejnerů lišících se například v typu či jménu některého uzlu.)
Čímž nechci říct, že YANG je na nic, ale někdy bohužel poslouží leda jako mezijazyk, k čemuž zas tak úplně stavěný není.
Existuje Groovy yangbuilder, kterym lze generovat i slozite yangy se syntaxi podobnou jako ma yang.
https://bitbucket.org/bubbles.way/yangbuilder
Lze tak 'kombinovat' yang + groovy (programovani)
Napr.
https://bitbucket.org/bubbles.way/yangbuilder/src/c8dc63ba13fb/templates/scripts/example1Yang.groovy