Benutzer-Werkzeuge

Webseiten-Werkzeuge


compilerbau:lexer:start

Dies ist eine alte Version des Dokuments!


Inhaltsverzeichnis

Lexer

Der Lexer liest den Programmtext Zeichen für Zeichen und fasst diese zu kleinsten syntaktischen Einheiten, sogenannten Tokens, zusammen. Unsere Beispielsprache besteht aus folgenden 8 Tokens:

  • +
  • -
  • *
  • /
  • (
  • )
  • Zahlen (die aus Ziffern und Dezimalpunkten bestehen), z.B. 1.278
  • Variablenbezeichnern, die mit einem Buchstaben des (englischen!) Alphabets beginnen und danach aus Buchstaben, Ziffern oder einem Unterstrich bestehen.

Die Tokens können im Programmtext unmittelbar hintereinander stehen, sie können aber auch durch Leerzeichen oder Zeilenumbrüche ('whitespace') voneinander getrennt sein. Whitespace wird vom Lexer einfach überlesen.

Den Programmtext

1 + 2 * (4 * a1 - 3)

zerlegt der Lexer also in folgende 11 Tokens:

zahl[1.0] plus zahl[2.0] mal klammerAuf zahl[4.0] mal text[a1] minus zahl[3.0] klammerZu

Die Klasse TokenType

Die Klasse TokenType ist einfach eine Enum-Klasse mit den möglichen Typen:

public enum TokenType {
  	zahl, text, plus, minus, mal, geteilt, klammerAuf, klammerZu,
 
	/**
	 * Nur als Knotentyp für Knoten des Syntaxbaums:
	 */
  	negation
}

Da wir die TokenTypen der Einfachheit halber auch als Typen der Knoten des vom Parser generierten Syntaxbaums verwenden, gibt es einen zusätzlichen Typ negation. Dazu später mehr.

compilerbau/lexer/start.1635444677.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki