A2_patterns2.rb

Path: A2_patterns2.rb
Last Update: Wed Feb 15 12:40:47 Westeuropäische Normalzeit 2006

Dieses Programm stellt zwei Funktionen zur Verfügung, die einen String in der Sprache der arithmetischen Ausdrücke in seine Bestandteile zerlegen bzw. ihren Tokenklassen zuordnen. Diese Funktionen werden an folgendem Beispiel getestet:

      r20 := r2 : r2:2
Author:Markus Marx, Sebastian Betz

Required files

runit/testcase   runit/cui/testrunner   runit/testsuite  

Methods

bestimme   zerlege  

Public Instance methods

bestimme(arittxt)

Die Methode "bestimme" scant einen String von Anfang bis Ende und ordnet sie den Tokenklassen zu. Diese Klassen sind in einem Array und einem Hash-Set als reguläre Ausdrücke gespeichert. Die Ordnung des Token-Array ergibt gleichzeitig auch die Priorität der Tokens. Hier also in absteigender Reihenfolge: op, zahl, reg, bez (d.h. Bezeichner haben die niedrigste Priorität).

Das Hash-Set wird nur verwendet, weil der Programmtext leichter verständlich ist, als bei einem mehr dimensionalen Array.

Die Zuordnung zu den einzelnen Tokens: Dazu wird die Eingabe zunächst zerlegt. Danach werden die Tokens in der entsprechend durch Prioroitäten festgelegten Reihenfolge auf die Bestandteile angewendet. Sobald ein Treffer gefunden ist, wird dieser mit Name und Token ausgegeben.

zerlege(arittxt)

Diese Methode zerlegt einen Eingabestring in seine Bestandteile, die durch Ruby-Patterns gegeben sind Allerdings werden die einzelnen Teile nicht den Tokenklassen zugeordnet, sondern nur in ein Array ge schrieben, welches von der Methode dann zurückgegeben wird. Die Patterns sind:

  • bez = [a-z][a-z0-9]
  • reg = r[0-9]
  • zahl = r2:[0-9]+|[0-9]+
  • op = :=|:

[Validate]