ebook img

Übersetzerbau: Virtuelle Maschinen PDF

202 Pages·2007·1.224 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Übersetzerbau: Virtuelle Maschinen

eXamen.press eXamen.pressisteineReihe,dieTheorieund PraxisausallenBereichenderInformatikfür dieHochschulausbildungvermittelt. Reinhard Wilhelm · Helmut Seidl Übersetzerbau Virtuelle Maschinen Mit120Abbildungen 123 ReinhardWilhelm UniversitätdesSaarlandes 66123Saarbrücken [email protected] HelmutSeidl TechnischeUniversitätMünchen FakultätfürInformatik Boltzmannstraße3 85748Garching [email protected] BibliografischeInformationderDeutschenNationalbibliothek DieDeutscheNationalbibliothekverzeichnetdiesePublikationinderDeutschen Nationalbibliografie;detailliertebibliografischeDatensindimInternetüber http://dnb.d-nb.deabrufbar. DasvorliegendeBuchistalsNeuauflageausdemBuchWilhelm,R.;Maurer,D.Übersetzerbau: Theorie,Konstruktion,Generierunghervorgegangen,dasinder1.Auflage(ISBN3-540-55704- 0)undder2.Auflage(ISBN3-540-61692-6)imSpringer-Verlagerschien. ISSN1614-5216 ISBN978-3-540-49596-3 SpringerBerlinHeidelbergNewYork DiesesWerkisturheberrechtlichgeschützt.DiedadurchbegründetenRechte,insbesondere diederÜbersetzung,desNachdrucks,desVortrags,derEntnahmevonAbbildungenund Tabellen,derFunksendung,derMikroverfilmungoderderVervielfältigungaufanderenWe- genundderSpeicherunginDatenverarbeitungsanlagen,bleiben,auchbeinurauszugsweiser Verwertung,vorbehalten.EineVervielfältigungdiesesWerkesodervonTeilendiesesWerkes istauchimEinzelfallnurindenGrenzendergesetzlichenBestimmungendesUrheberrechts- gesetzesderBundesrepublikDeutschlandvom9.September1965inderjeweilsgeltenden Fassungzulässig.Sieistgrundsätzlichvergütungspflichtig.Zuwiderhandlungenunterliegen denStrafbestimmungendesUrheberrechtsgesetzes. SpringeristeinUnternehmenvonSpringerScience+BusinessMedia springer.de ©Springer-VerlagBerlinHeidelberg2007 DieWiedergabevonGebrauchsnamen,Handelsnamen,Warenbezeichnungenusw.indiesem WerkberechtigtauchohnebesondereKennzeichnungnichtzuderAnnahme,dasssolche NamenimSinnederWarenzeichen-undMarkenschutz-Gesetzgebungalsfreizubetrachten wärenunddahervonjedermannbenutztwerdendürften.TextundAbbildungen wurden mitgrößterSorgfalterarbeitet.VerlagundAutorkönnenjedochfüreventuellverbliebene fehlerhafteAngabenundderenFolgenwedereinejuristischeVerantwortungnochirgendeine Haftungübernehmen. Satz:DruckfertigeDatenderAutoren Herstellung:LE-TEX,Jelonek,Schmidt&VöcklerGbR,Leipzig Umschlaggestaltung:KünkelLopkaWerbeagentur,Heidelberg GedrucktaufsäurefreiemPapier 33/3100YL – 543210 Für Margret, Hannah, Eva, Barbara R.W. Für Kerstin und Anna H.S. Vorwort ÜbersetzerfürhöhereProgrammiersprachensindgroßekomplexeSoftwaresysteme. SiehabenabereinigebesondereEigenschaften,diesievordenmeistenanderenSoft- waresystemenauszeichnen. Ihre Funktionalität ist (fast) wohldefiniert. Idealerweise existieren vollständige formaleoderzumindestpräziseBeschreibungenderQuellspracheundderZielspra- che. Häufig gibt es dazu noch Beschreibungenvon Schnittstellen zum Betriebssy- stem,zumProgrammiersystemundzuProgrammierumgebungen,zuanderenÜber- setzernundzuProgrammbibliotheken. Die Übersetzungsaufgabe lässt sich auf natürliche Weise in Teilaufgaben zer- legen. Diese Zerlegung ergibt eine modulare Struktur, welche übrigens auch eine kanonischeStrukturderüblichenÜbersetzerbaubücherinduziert. IndenfünfzigerJahrenwurdebereitserkannt,dassdieImplementierungvonAn- wendungssystemendirektinderMaschinensprachesowohlmühsamalsauchfehler- anfälligistundzuProgrammenführt,diegenausoschnellveraltenwiedieRechner, für die sie entwickelt wurden. Mit der Erfindung höherer maschinenunabhängiger ProgrammiersprachenergabsichaberauchsofortdieNotwendigkeit,Übersetzerbe- reitzustellen,dieinderLagesind,ProgrammedieserhöherenProgrammiersprachen inMaschinensprachezuübersetzen. Aufgrund dieser grundlegendenHerausforderungsind deshalb seit den fünfzi- ger Jahren die verschiedenenTeilaufgabender ÜbersetzungGegenstandintensiver Forschung. Für die Teilaufgabe der syntaktischen Analyse von Programmen wur- denetwa KonzepteausdemBereichderformalenSprachenwie endlicheAutoma- tenundkontextfreieGrammatikenübernommenundim Hinblickaufdiegegebene Anwendungweiterentwickelt.DietheoretischeDurchdringungderProblemstellung war dabei so erfolgreich,dass die Realisierungderfür syntaktischeAnalyse benö- tigtenKomponenten(fast)vollständigautomatisiertwerdenkonnte:anstatt„zuFuß“ implementiertzuwerden,werdendieseKomponentenheuteweitgehendausSpezifi- kationen,indiesemFallkontextfreieGrammatiken,generiert.SolcheGenerierungs- verfahren werden auch für andere Komponenteneines Übersetzers angestrebt und sindzumTeilbereitsrealisiert. VIII Vorwort Das vorliegende Buch strebt nicht an, ein Kochbuch für Übersetzer zu sein. ManwirdhierdarumkeineRezeptefindenderArt:„UmeinenÜbersetzervonder QuellspracheXindieMaschinenspracheYzukonstruieren,nehmeman....“ Unsere Darstellungreflektiertdagegendie obenaufgezähltenBesonderheitendesÜberset- zerbaus,insbesonderedasVorhandenseinpräziserAufgabenstellungenunddasBe- streben,diesegenauzuverstehenundangemessenetheoretischeKonzeptezuihrer systematischen Behandlung bereitzustellen. Idealerweise können solche Konzepte dieGrundlageautomatischerGenerierungsverfahrenbilden. DiesesBuchist fürStudierendederInformatikbestimmt.Die Kenntniszumin- desteinerimperativenProgrammiersprachewirdvorausgesetzt.FürdieKapitelzur ÜbersetzungfunktionalerundlogischerProgrammiersprachenistessichernützlich, einemodernefunktionaleSpracheundPrologzumindestindenGrundzügenzuken- nen.AndererseitskönnendieseKapitelauchzueinemvertieftenVerständnisdieser Programmiersprachenbeitragen. Aufbau desBuches Fürdie neueAuflagedesBuchs,Wilhelm/Maurer:Übersetzerbau,entschiedenwir uns, den Inhalt auf mehrere Bände zu verteilen.Dieser erste Band beschreibt,was einÜbersetzertut,alsowelcheKorrespondenzzwischeneinemQuellprogrammund einem Zielprogramm er herstellt. Dazu wird für eine imperative, eine funktionale, eine logische undeine objektorientierteProgrammierspracheje eine geeignetevir- tuelleMaschine(indenfrüherenAuflagenabstrakteMaschinegenannt)angegeben und die Übersetzungvon Programmender jeweiligen Quellsprache in die Sprache derzugehörigenvirtuellenMaschinegenaubeschrieben. DievirtuellenMaschinendervorherigenAusgabewurdenvollständigüberarbei- tet undmodernisiertmit dem Ziel, die Übersetzungsschematazuvereinfachenund gegebenenfallszuvervollständigen.InvielgrößeremUmfangalsvorherwurdendie verschiedenen gewählten Architekturen und Befehlssätze aneinander angeglichen, umdieGemeinsamkeiten,aberauchUnterschiedlichkeitenderSprachkonzeptekla- rerherauszuarbeiten.Alsvielleichtaugenfälligstes,wennauchnichtunbedingtwich- tigstesMerkmalwachsenjetzt,wieeinLeserfrühererAuflagensoforterkennenwird, dieKellerdervirtuellenMaschinen(wiemancheTräume)indenHimmel,alsonicht mehr„vonobennachunten“. BeiallenBeispiel-ProgrammiersprachenwurdennunFragmenterealerProgram- miersprachenverwendet.AlsimperativeQuellsprachewurdeanstellevonPascaldie ProgrammierspracheCgewählt–eineEntscheidungfürmehrRealitätsnäheundge- gendieÄsthetik,wiemanbeimVergleichderentsprechendenKapitelindieserund früherenAuflagenfeststellenkann.AlsobjektorientierteSprachedientwiedereine TeilmengevonC++.GegenüberderDarstellungderzweitenAuflagewurdejedoch aufeinedetaillierteDiskussionderMehrfachbeerbungverzichtet. Ausgangspunktderin diesem BuchangegebenenÜbersetzungenvonimperati- ven,funktionalen,logischenundobjektorientiertenProgrammeniststetseinestruk- turierteInterndarstellungdesQuellprogramms,fürwelchesbereitseinfacheZusatz- Vorwort IX informationen wie etwa Gültigkeitsbereiche von Variablen oder Typinformationen berechnet wurden. Ein solches analysiertes Quellprogramm werden wir später als dekorierteabstrakteSyntaxdesQuellprogrammsbezeichnen. ImzweitenBandwirddanndasWie derÜbersetzungbeschrieben.Wirwerden die Frage behandeln,wie man den Übersetzungsprozessin einzelne Phasen unter- teilt,welcheAufgabendabeidieeinzelnenPhasenerledigensollen,welcheTechni- kenmanin ihnenbenutzt,wie manformalbeschreibenkann,was sie tun,undwie eventuellauseinersolchenBeschreibungautomatischeinÜbersetzermodulerzeugt werdenkann. Danksagung Nebenden Mitstreitern der früherenAuflagen möchtenwir denStudierendendan- ken, die immer wieder verschiedene Versionen der virtuellen Maschinen geduldig anhörten und uns wertvolle Rückmeldungen gaben. Nicht wenig zum Verständnis trug auch die Visualisierungder virtuellen Maschinendurch Peter Ziewer bei. Für subtile Einsichtenin die SemantikenvonC++ undJava dankenwir ThomasGaw- litza und Michael Petter. Unser besonderer Dank gebührt jedoch Jörg Herter, der mehrere Versionen des Buchs sorgfältig auf Inkonsistenzen durchsah und uns auf vielerleiFehlerundMerkwürdigkeitenaufmerksammachte. EinstweilenwünschenwiraberdergeneigtenLeserinunddemgeneigtenLeser vielVergnügenmitdemvorliegendenBandundhoffen,dassdasBuchAppetitma- chenmöge,fürdieLieblings-ProgrammierspracheblitzschnelleineneigenenÜber- setzerzubasteln. SaarbrückenundMünchen,Januar2007 ReinhardWilhelm,HelmutSeidl WeitereMaterialienzudiesemBuchfindenSieaufderInternet-Seite: http://www2.informatik.tu-muenchen.de/~seidl/compilers/ Inhaltsverzeichnis 1 Einleitung..................................................... 1 1.1 HöhereProgrammiersprachen................................ 1 1.2 ImplementierungvonProgrammiersprachen.................... 2 1.2.1 Interpreter .......................................... 2 1.2.2 Übersetzer.......................................... 3 1.2.3 RealeundvirtuelleMaschinen ......................... 4 1.2.4 KombinationenvonÜbersetzungundInterpretation ....... 5 1.3 AllgemeineLiteraturhinweise ................................ 6 2 ImperativeProgrammiersprachen ............................... 7 2.1 SprachkonzepteundihreÜbersetzung ......................... 7 2.2 DieArchitekturderC-Maschine .............................. 8 2.3 EinfacheAusdrückeundWertzuweisungen..................... 10 2.4 AnweisungenundAnweisungsfolgen.......................... 15 2.5 BedingteunditerativeAnweisungen........................... 16 2.6 SpeicherbelegungfürVariableneinfachenTyps ................. 22 2.7 SpeicherbelegungfürFelderundStrukturen .................... 23 2.8 ZeigerunddynamischeSpeicherbelegung...................... 28 2.9 Funktionen................................................ 34 2.9.1 DieSpeicherorganisationderC-Maschine................ 37 2.9.2 DerUmgangmitlokalenVariablen ..................... 39 2.9.3 BetretenundVerlassenvonFunktionen.................. 42 2.10 ÜbersetzungganzerProgramme .............................. 48 2.11 Aufgaben ................................................. 51 2.12 ListederRegisterderCMa .................................. 57 2.13 ListederCodeerzeugungsfunktionenderCMa .................. 57 2.14 ListederCMa-Instruktionen ................................. 58 2.15 Literaturhinweise........................................... 58

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.