Stack

Top  Previous  Next

Skripte > Klassen-Elemente und C++-Befehle > interpretierte C++-Anweisungen > Container > Vector > Stack

 

Es gibt keine eigene allgemeine Stack-Container-Klasse im TextTransformer-Interpreter. Dennoch lassen sich Stacks leicht realisieren.

 

Zunächst sei auf die beiden speziellen Stacks zur Verwaltung von Textbereichen und von Einrückungen hingewiesen. Auch ergibt sich ein Stack automatisch aus rekursiv aufgerufenen Produktionen (s.u.). 

 

In anderen Fällen kann ein Vector als Stack verwendet werden. Mit push_back kann ein neuer Wert auf den Stack gelegt werden, mit back wird er gelesen und mit pop_back kann er wieder entfernt werden.

 

vint v;

 

for(int i = 1; i <= 3; i++)

  v.push_back(i);

 

while(v.size())

{

out << v.back();

v.pop_back();

}

 

// ergibt: 321

 

Automatisch ergibt sich ein Stack z.B. beim Parsen des Textes: "( ( ( 1 ) ) )" mit folgender Startregel:

 

StackItem(int xi)

 

{{ int i = xi + 1; }}

"(" 

StackItem[i]

{{ out << i << endl; }}

")"

| DIGIT

 

Für jede neue Stack-Instanz wird in einer lokalen Variablen i ein neuer Wert "auf den Stack gelegt", der beim Verlassen der Stack-Produktion wieder "vom Stack genommen" wird.

 

 

Stack_en



Diese Seite gehört zur TextTransformer Dokumentation

Home  Inhalt  English