Compilerbauhome Compilerbau: Lexikalische Analyse Prof. Dr. Uwe Schmidt FH Wedel

Lexikalische Analyse

weiter

weiter

Scanner

Aufgabe
Zeichenketten aus dem Eingabetext zu Symbolen der Sprache zusammenfassen
weiter
Beschreibung
Textmuster
Reguläre Ausdrücke
weiter
Verarbeitung
mit endlichen Automaten
weiter
Spezifikation
pro Symbol ein regulärer Ausdruck
weiter
Ausgabe
ein Einleseprogramm
 
scan :: [Char] -> [Token]
weiter
Beispiel
// an example source
 
class X {
  boolean isEven(int x) {
    return
      x % 2 == 0;
  }
}
weiter
Eingabe-Abphabet
Unicode
weiter
Ausgabe-Alphabet
Token = ClassSy
      | BoolSy
      | IntSy
      | ReturnSy
      | ...
      | Identifier String
      | Number     String
      | LeftBrace               -- {
      | RightBrace              -- }
      | LeftPar                 -- (
      | RightPar                -- )
      | ...
      | EqSy                    -- ==
      | ModSy                   -- %
      | ...
      | Comma
      | Semicolon
      | ...
weiter
unwesentliche Zeichen
Zwischenräume, Zeilenumbruch, Kommentare,
werden gelöscht
weiter
Ausgabe
für das Beispiel
 
[ ClassSy
, Identifier "X"
, LeftBrace
, BoolSy
, Identifier "isEven"
, LeftPar
, IntSy
, ...
]
weiter
Spezifikation
Eingabe-Beschreibung
 
ClassSy         "class"
IntSy           "int"
Identifier      [a-zA-Z][a-zA-Z0-9_]*
Number          [0-9]+
weiter
merke
Scanner entwickelt man nicht per Hand
merke
Java String Tokenizer ist eine Krücke
weiter

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel