Implementace jednoduchého skriptovacího jazyka v C++

Nějakou dobu poté co jsem napsal kurz o přehrávání souborů Ogg v C++ pomocí DirectSound, vznikl od stisků kláves na mojí klávesnici další kurz, tentokrát na téma implementace jednoduchého skriptovacího jazyka a virtuálního stroje. Skriptovací jazyk dostal název Universal Scripting Language. Oba tyto kurzy byly vlastně výsledkem mého marného pokusu o napsání hry na motivy seriálu Hvězdná brána. Přehrávání zvuků a skriptovací jazyk byly víceméně nezbytné části pro hru. Až později jsem si přiznal fakt, že je to pro jednoho člověka příliš mnoho práce. Přeci jen, ani celé vývojářské studio o pár let později neuspělo. I když ale hra nikdy cílovou rovinu nespatřila, programováním zmíněných součástí jsem se mnoho naučil.

Kurz na implementaci skriptovacího jazyka a virtuálního stroje nesdílel osud s předchozím kurzem na přehrávání zvukových souborů Ogg. V časopise Chip nevyšel a místo toho pár let zůstal zapomenut v zákoutích různých pevných disků. Ovšem na vysoké škole jsem na něm postavil bakalářskou a následně i diplomovou práci.

Kurz si můžete stáhnout pod odkazem níže. Jedná se o archiv obsahující kurz ve formátu html, tedy ho otevřete v internetovém prohlížeči (až po rozbalení). Kurz má celkem 10 částí, je tedy poměrně dlouhý. Obsahuje také plně funkční projekt, který najdete ve složce download ve staženém archivu. Samotný kurz se na něj také odkazuje.

Projekt byl původně napsán pro ve Visual Studiu 2003, nicméně před pár dny jsem jej úspěšně zkompiloval také ve Visual Studiu 2012, takže nemusíte hledat v poličkách stará CD. Soubor Universal Scripting Language VC2012.zip obsahuje několik podadresářů:

  • compiler – projekt kompilátoru skriptovacího jazyka.
  • VM – knihovna implementující virtuální stroj.
  • usl_vm – konzolová aplikace – virtuální stroj.
  • Debugger – malý prográmek pro debugging skriptů a ukázku jejich běhu. (Tenhle jediný nezkompilujete pod VC 2012 kvůli API pro grafické rozhraní z VC 2003).

Snad tedy někdo shledá kurz nebo některé informace v něm obsažené užitečnými i vzhledem k jejich stáří.