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