Polish version - English version - Dokumentacja - Download: tg-0.11.tgz

temgen - uniwersalny generator kodu

Temgen jest uniwersalnym generatorem tekstu opartym na w³asnym jêzyku szablonów. Mo¿e byæ u¿ywany do generowania dowolnych tekstów, takich jak ¼ród³a programów w dowolnych jêzykach, dokumenty HTML, czy teksty w jêzyku naturalnym. Je¶li chodzi o obszar zastosowañ podobny jest czê¶ciowo do preprocesorów (jak M4), czy do narzêdzi w rodzaju PHP.

Inspiracj± do jego powstania by³ w du¿ym stopniu jêzyk szablonów Clariona, z piêknym mechanizmem "embed/emit", umo¿liwiaj±cym odtworzenie tego, co robi cz³owiek (¿ywy generator kodu) podczas pracy nad programem. Autor - programista - nie tworzy tekstu liniowo, ale porusza siê po ró¿nych plikach wstawiaj±c tu i tam kawa³ki kodu.

Ilustruje to poni¿szy przyk³ad, pokazuj±cy, co robi programista dodaj±c now± opcjê wywo³ania programu:

  1. Zdefiniuj zmienn± globaln±
  2. Dodaj odga³êzienie w instrukcji "switch"
  3. Dodaj opis w tek¶cie pomocy

Przy u¿yciu szablonu podobnego do zaprezentowanego ni¿ej, mo¿na to wszystko zrobiæ wywo³uj±c jedn± funkjê.

Dodawanie opcji
  @function  opt( type, var, letter, help )
  @emit  "variables"
    $type  $var;
  @emit  "switch"
    case $letter:
  @if  ( $type == "int" )
         $var = atoi(argv[ i ]);
  @else
         $var = argv[ i ];
  @endif  
         break;
  @emit "help"
         "$help"
  @endfunction
 
1. Zdefiniuj zmienn± 
   globaln±
2. Dodaj odga³êzienie
   w instrukcji switch
 
   ... zale¿nie od typu
       zmiennej
 
  
   
  
3. Dodaj opis 
   w tek¶cie pomocy

Linie rozpoczynaj±ce siê znakiem @ steruj± przebiegiem generacji. Pozosta³e linie zawieraj± szablony generowanych napisów.

Kod szablonu jest przejrzysty, a mechanizm @embed/@emit jest prostszy w u¿yciu od divert/undivert znanego z M4.

Sk³adnia jêzyka szablonów wzorowana jest na C i na PHP. W odró¿nieniu od PHP, Temgen jest generatorem uniwersalnym, u jego podstaw nie le¿± ¿adne za³o¿enia dotycz±ce charakteru generowanego tekstu. Prostszy jest tak¿e "escaping", oparty jest na podziale szablonu na dwa rodzaje linii: linie steruj±ce i line danych. Taki kod ³atwo siê czyta.

Nie jest preprocesorem, jest raczej interpreterem jêzyka. Jest wyposa¿ony w z³o¿one struktury danych (rekordy, hashe) i w klasyczny mechanizm definiowania funkcji.

Temgen rozpowszechniany jest w oparciu o licencjê GNU, wraz z pe³nym kodem ¼ród³owym. Autor bêdzie wdziêczny za wszelkie uwagi i sugestie, a tak¿e za krytykê, o ile bêdzie kulturalna ;)

Marek £êtowski (mletowski@firma.interia.pl)


Polish version - English version - Dokumentacja - Download: tg-0.11.tgz