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.
|
Diese Seite gehört zur TextTransformer Dokumentation |
Home Inhalt English |