@misc{Herder1992, author = {Herder, Jens}, title = {Konzeption, Implementierung und Integration einer Komponente zur inkrementellen Bezeichner- und Operatoranalyse innerhalb des PSGs}, address = {Darmstadt}, organization = {Technische Hochschule Darmstadt}, year = {1992}, abstract = {Der Programmier System Generator - PSG - des Fachgebiets Praktische Informatik in Darmstadt erzeugt aus einer Sprachdefinition eine sprachspezifische Programmierumgebung. Diese besteht u. a. aus einem Editor, welcher syntaktische und semantische Fehler von Programmfragmenten, die nicht vollst{\"a}ndig sein m{\"u}ssen, erkennen kann. Dem Benutzer werden per Men{\"u} Fehlerkorrekturen angeboten. Neben der freien Texteingabe besteht die M{\"o}glichkeit, den Text nur mit Hilfe von Men{\"u}s zu verfeinern. Teil dieses Editors ist die Bezeichneranalyse. Sie dient als Hilfsmittel f{\"u}r den Benutzer, indem f{\"u}r jede Stelle eines Programmfragmentes die g{\"u}ltigen Bezeichner ausgegeben werden k{\"o}nnen. Die Kontextanalyse setzt die Berechnung auf den von der Bezeichneranalyse erzeugten Daten auf, um semantische Fehler zu erkennen. Die bis zu dieser Arbeit verwendete Bezeichneranalyse im PSG unterst{\"u}tzt nur einfache Sprachkonzepte (z. B. Fortran und Pascal). Die G{\"u}ltigkeitskonzepte der Bezeichner von weiterentwickelten Sprachen (z. B. Modula-2, CHILL, Ada oder Pascal-XT) sind nicht vollst{\"a}ndig modellierbar. Wir stellen ein neues Konzept zur Definition und Berechnung der Bezeichneranalyse vor, das alle uns bekannten Sprachen mit statischer Typbindung unterst{\"u}tzt. Hierf{\"u}r haben wir die Sprache BIS - Bezeichneridentifikationssprache - definiert. Die Methode ist verwandt mid dem Zwischencode f{\"u}r geordnete Attributierte Grammatiken. F{\"u}r jeden Knoten des Abstrakten Syntaxbaumes wird mit Hilfe von BIS ein Code f{\"u}r eine abstrakte Maschine, welche die Bezeichneranalyse durchf{\"u}hrt, geschrieben. Im Gegensatz zu herk{\"o}mlichen Methoden (verkettete Symboltabellen) wird f{\"u}r jeden Punkt innerhalb eines Programmes for der Anfrage durch den Benutzer oder der Kontextanalyse die Menge der g{\"u}ltigen Bezeichner berechnet. Die Kosten f{\"u}r eine Anfrage sind dadurch minimal. Diese abstrakte Maschine teilt sich in zwei unabh{\"a}ngige Maschinen auf, zum einen in die S-Maschine, die die speziellen Operationen der Bezeichneranalyse durchf{\"u}hrt, und zum anderen in die G-Maschine, die den Datenfluss und die Auswertung steuert. Diese Aufteilung erm{\"o}glicht den Austausch der S-Maschine durch eine andere, welche neue Anwendungsgebiete erschliesst, z. B. die eines Praeprozessors. Die G-Maschine arbeitet inkrementell; es werden nur die Codeschablonen neu ausgewertet, deren geerbten Attribute sich ge{\"a}ndert haben. Dazu m{\"u}ssen die Daten, die in einer Codeschablone hinein- und hinausfliessen, abgelegt werden. Dies ergibt bei grossen Programmfragmenten eine immense Rechenzeiteinsparung auf Kosten des Speicherplatzes. Die Funktionsweise wird an einer kleinen Beispielsprache demonstriert, die zu Pascal {\"a}hnlich ist. Diese besitzt Konstrukte zum Import und Export von Daten und Datentypen zwischen Programmfragmenten. Im Prototyp kann die inkrementelle Arbeitsweise abgeschaltet werden und erm{\"o}glicht einen guten Vergleich der Verfahren.}, language = {de} }