 |
 | |  |  | | Erläuterung |  | In den Sprachwissenschaften bezeichnet der Begriff Grammatik eine Menge von Regeln durch deren Anwendungen Sätze einer Sprache gebildet werden können. In der Informatik, speziell dem Compilerbau wird dem Begriff Grammatik ein streng formale Bedeutung zugemessen. Eine Grammatik umfasst dort im wesentlichen eine Menge von Regeln, mit deren Hilfe eine Ersetzungsoperation über bestimmte Symbolzeichenketten ausgeführt werden können. Es wird von einem Startsymbol ausgegangen, das ein initiales Wort ausmacht. Durch Anwendung einer Regel kann aus einem bestehenden Wort ein weiteres gebildet werden. Auf diese Weise könnten strukturierte „Sätze“ abgeleitet werden.
Beispiel-Grammatik (jede Zeile macht eine Regel aus):
Program --> Declaration*
Declaration --> PackDecl | FuncDecl |TypeDecl
PackDecl --> "package" IDENT ";"
FuncDecl --> Modifier TypeName IDENT "(" TypeDecl* ")" "{" Statement "}"
TypeDecl --> TypeName IDENT
TypeName --> "int" | "void" | IDENT
Statement --> ( Call | IF | While | ... ) “;”
Call --> IDENT "(" Expression ")"
Expression --> Const | IDENT;
Const --> STRING
IDENT --> [a-zA-z][a-zA-z0-9]*
Ein “Satz” entsprechend dieser Grammatik ist folgender Programmtext:
package error;
public void report(int code) {
print(code);
}
Die Ableitung dieses Satzes kann durch folgende Schritte aufgezeigt werden (einige Schritte wurden ausgelassen):
Program
→ Declaration
→ Declaration Declaration
→ PackDecl FuncDecl
→ package error ; FuncDecl
→ package error ; Modifier TypeName IDENT "(" TypeDecl* ")" "{" Statement "}"
→ package error “;” public void report “(“ TypeDecl* “)” “{“ Statement “}”
→ package error “;” public void report “(“ int code “)” “{“ Call “}”
→ package error “;” public void report “(“ int code “)” “{“ IDENT “(“ Expression “)” “}”
→ package error “;” public void report “(“ int code “)” “{“ print “(“ code “)” “}”
|  |
 | |  |  | |  | |  |  |  |  | | Zu dieser Seite wurden noch keine Kommentare oder Bewertungen abgegeben. |
|
|  | |  |  |  |  | Grammatik |  |  |  |  |   | Erläutert Technologien |  |  |  | |  |  |  |  |  |
|