Studium, Ausbildung und Beruf

web uni-protokolle.de
 powered by
NachrichtenLexikonProtokolleBücherForenMittwoch, 11. Dezember 2019 

Formales System (Informatik)


Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.
In der theoretischen Informatik dienen formale Systeme zur exakten Wiedergabe der inneren Logik Systems. Formale Sprachen die aus einem Alphabet von Symbolen zughörigen Worten als Symbolketten bestehen sind ein hierzu. Die Syntax wird durch eine zugehörige Grammatik festgelegt über die die Gültigkeit der festgestellt werden kann.

Definition der Syntax von Programmiersprachen

Ein Untersuchungsgegenstand hierzu ist die Möglichkeit Definition von realen Programmiersprachen über ein formales System. Als Beispiel hier der Aufruf von Unterprogrammen mit Parametern dienen. Die Syntax für Unterprogrammdefinition und den Programmaufruf kann über eine Sprache und die zugehörige formale Grammatik definiert

In der Sprache Pascal kann beispielsweise ein Unterprogramm über

 PROCEDURE example(A B: integer; VAR C: BEGIN .. END;  

definiert und später dann über

 example(2*X Y W);  

aufgerufen werden.

Ein möglicher Ausschnitt der formalen Grammatik Syntaxdefinition in erweiterter Backus-Naur-Notation könnte dann sein:

 procedure_declaration = PROCEDURE name '(' formal_parameter_list block ';' block = BEGIN ... END = parameter { ';' parameter } ; = [ VAR ] name ':' name  

 ... procedure_call = identifier '(' actual_parameter_list ';' ; actual_parameter_list = expression { ' expression } ;  

Symbole sind hier procedure_declaration identifier formal_parameter_list aber auch '(' ':' VAR usw. Eine Symbolkette auf der rechten des Gleichheitszeichens wird falls sie auftritt durch Symbol auf der linken Seite ersetzt. Die und damit das ersetzte Symbol kann wiederum einer Symbolkette sein.

Ein gegebener Programmtext ist syntaxfehlerfrei wenn durch die Umwandlungsregeln der formalen Grammatik auf einzelnes Symbol z.B. program reduziert werden kann.

Hätte man eine Sprache die definiert durch

 program = PROGRAM declarations program_block declarations { procedure_declaration } program_block = BEGIN { } END '.'  
  
so bestünde ein konkretes Programm nur Unterprogramm-Deklarationen und Aufrufen: Das reale Programm

 PROGRAM PROCEDURE p1(a: integer; b: integer) ... END; PROCDURE p2(VAR x: integer) BEGIN END; BEGIN p1(0 1); p2(y); END.  

könnte man mit obenstehendem (unvollständigen) Grammatikausschnitt

Schritt1:

 PROGRAM PROCEDURE name(name: name; name: name) PROCEDURE name(VAR name: name) block; BEGIN name(expression name(expression); END.  

Schritt2:

 PROGRAM PROCEDURE name(formal_parameter_list) block; PROCEDURE name(formal_parameter_list) BEGIN name(actual_parameter_list); name(actual_parameter_list); END.  

Schritt3:

 PROGRAM procedure_declaration procedure_declaration BEGIN procedure_call procedure_call  

Schritt4:

 PROGRAM declarations program_block  

Schritt5:

 program  

Das Programm ist damit syntaktisch korrekt. ist aber nicht die ganze Logik des überprüft worden:

  • Die Übereinstimmung der Namen wurde nicht überprüft hätte auch p3 statt p2 aufrufen können).
  • Die Art der Parameterübergabe ist nicht definiert.
  • Typüberprüfung findet nicht statt.
  • ...

Diese Eigenschaften werden unter dem Begriff Semantik im Gegensatz zur Syntax zusammengefasst.



Bücher zum Thema Formales System (Informatik)

Dieser Artikel von Wikipedia unterliegt der GNU FDL.

ImpressumLesezeichen setzenSeite versendenSeite drucken

HTML-Code zum Verweis auf diese Seite:
<a href="http://www.uni-protokolle.de/Lexikon/Formales_System_%28Informatik%29.html">Formales System (Informatik) </a>