Redigerer
Principles of Compiler Design
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
{{Infoboks bok | tittel = Principles of Compiler Design | originaltittel = | bilde = | bildestørrelse = | bildetekst = | forfatter = [[Alfred Aho]] og [[Jeffrey Ullman]] | sjanger = [[Sakprosa]], [[informasjons- og kommunikasjonsteknologi]], [[kompilatorteknikk]] | utgitt = {{Startdato og alder|1977|08|01}} | forlag = [[Addison-Wesley]] | illustratør = | sider = 614 | isbn = 0-201-00022-9 | comcat = | commons = | verdensbiblioteket = }} '''''Principles of Compiler Design''''' (''«prinsippene for kompilatorkonstruksjon»'') er en [[engelsk]] [[sakprosa]]bok av [[informatiker]]ne [[Alfred Aho]] og [[Jeffrey Ullman]]. [[Bok]]en ble utgitt av det [[USA|amerikanske]] [[forlag]]et [[Addison-Wesley]] den 1. august 1977,<ref name="Aho1977"/> og er en klassisk [[lærebok]] i konstruksjon av [[kompilator]]er og [[kommandotolk (programvare)|kommandotolk]]er for [[programmeringsspråk]].<ref name="Aho1977"/> Den er inndelt i 15 kapitler og to appendikser. Den påvirket en hel generasjon av [[informatiker]]e og dens innhold er fortsatt aktuelt, 47 år etter utgivelsen. Boken inneholder hele [[pseudokode]]n for generering av en kompilator. Boken ble trykt ved [[Bell Laboratories]] i [[New Jersey]] ved å benytte [[troff]], et program for [[settemaskin|tekstformatering]] i [[operativsystemet]] [[UNIX versjon 6]]. På denne tiden var [[UNIX]] knapt nok tilgjengelig utenfor Bell Laboratories. Bokens fremside viser en [[ridder]] og en [[drage]] i kamp. Dragen er grønn og er merket med teksten «''kompleksiteten ved kompilatorkonstruksjon»'' (''Complexity of Compiler Construction''), mens ridderens lanse bærer teksten [[LALR parsergenerator]]. I motivet på baksiden er dragen erstattet av [[vindmølle]]r, og ridderen er [[Don Quixote]].<ref name="Aho1977"/> Den blir populært kalt «drageboka».<ref name="Macz2002-219"/><ref name="Raymond1996-161"/> Den blir også kalt «den grønne drageboka» eller «den gamle drageboka»,<ref name="Raymond1996-161"/> for å skille den fra sin etterfølger, ''[[Compilers: Principles, Techniques, and Tools]]'' («den røde drageboka» eller «den nye drageboka»),<ref name="Raymond1996-161"/> som utkom 1. januar 1986.<ref name="Aho1986"/> Tredje utgave utkom 10. september 2006;<ref name="Aho2006"/> den var [[purpur]], og ble kalt «den purpurfargede drageboka».<ref>[https://rmathew.blogspot.no/2006/09/where-is-purple-dragon-book.html Where is The Purple Dragon Book?], rmathew.blogspot.no, rmathew, 6. september 2006</ref> Den 1. januar 1990 utga [[Allen Holub|Allen I. Holub]] boken ''[[Compiler Design in C]]''.<ref name="Holub1990"/> Den inneholder implementasjonen av «dragebokens» pseudokode i programmeringsspråket [[C (programmeringsspråk)|C]].<ref name="Holub1990"/> ==Innhold== ===Kapittel 1. Introduksjon til kompilatorer=== Kapittel 1, «introduksjon til kompilatorer» (''Introduction to Compilers''), er en generell innføring i kompilatorer.<ref name="Aho1977_1-25" /> Kapittelet drøfter kompilatorer og oversettere,<ref name="Aho1977_1-3" /> og årsaken til at vi trenger oversettere.<ref name="Aho1977_3-5" /> Deretter gjennomgås strukturen til en kompilator.<ref name="Aho1977_5-10" /> Kapittelet fortsetter med å drøfte leksikalsk analyse,<ref name="Aho1977_10-12" /> syntaktisk analyse<ref name="Aho1977_12-13" /> og mellomkodegenerering.<ref name="Aho1977_13-17" /> Deretter følger en kort gjennomgang av optimaliserende kompilatorer,<ref name="Aho1977_17-19" /> før kapittelet går over til å behandle kodegenerering.<ref name="Aho1977_19-20" /> Kapittelet fortsetter med å behandle [[bokføring (programmering)|bokføring]],<ref name="Aho1977_20" /> feilhåndtering<ref name="Aho1977_21" /> og verktøy for å lage kompilatorer.<ref name="Aho1977_21-23" /> Til slutt forklares det hvordan man kommer i gang med et kompilatorprosjekt.<ref name="Aho1977_23-25" /> ===Kapittel 2. Programmeringsspråk=== Kapittel 2, «Programmeringsspråk» (''Programming Languages''), omhandler [[programmeringsspråk]].<ref name="Aho1977_26-72" /> Kapittelet begynner med å drøfte [[høynivåspråk]],<ref name="Aho1977_26-28" /> og fortsetter med definisjoner av programmeringsspråk.<ref name="Aho1977_28-32" /> Deretter behandles den leksikalske og syntaktiske struktur til et programmeringsspråk,<ref name="Aho1977_32-34" /> [[dataelement]]er,<ref name="Aho1977_34-38" /> [[datastruktur]]er,<ref name="Aho1977_38-45" /> [[operator]]er,<ref name="Aho1977_45-49" /> [[Tildeling (informatikk)|tildelinger]],<ref name="Aho1977_50-54" /> programvareenheter<ref name="Aho1977_55-57" /> datamiljøer<ref name="Aho1977_57-59" /> og [[parameter (informatikk)|parameteroverføringer]].<ref name="Aho1977_59-63" /> Til slutt behandles lagringshåndtering.<ref name="Aho1977_63-72" /> ===Kapittel 3. Endelige tilstandsmaskiner og leksikalsk analyse=== Kapittel 3, «Endelige tilstandsmaskiner og leksikalsk analyse» (''Finite Automata and Lexical Analysis''), omhandler [[leksikalsk analyse]] av et programmeringsspråk.<ref name="Aho1977_73-124" /> Kapittelet innleder med å drøfte rollen til den leksikalske analysator innenfor kompilatoren.<ref name="Aho1977_74-76" /> Deretter følger en enkel tilnærmelse for konstruksjon av leksikalske analysatorer,<ref name="Aho1977_76-82" /> etterfulgt av beskrivelse av [[Regulært uttrykk|regulære uttrykk]].<ref name="Aho1977_82-88" /> Kapittelet fortsetter med beskrivelsen av en Finite Automata eller en [[endelig tilstandsmaskin]],<ref name="Aho1977_88-94" /> og beskriver deretter hvordan regulære uttrykk kan omdannes til en endelig tilstandsmaskin.<ref name="Aho1977_95-99" /> Deretter beskrives det hvordan man minimaliserer antall tilstander i en [[deterministisk endelig tilstandsmaskin]] (DFA), som er konstruert ut fra en [[ikke-deterministisk endelig tilstandsmaskin]] (NFA).<ref name="Aho1977_99-103" /> Kapittelet fortsetter med å drøfte et språk for spesifikasjon av leksikalske analysatorer,<ref name="Aho1977_103-109" /> og forklarer implementasjonen av leksikalske analysatorer.<ref name="Aho1977_109-118" /> Deretter forklares det hvordan en scannergenerator kan fungere som det som metaforisk kalles en «sveitsisk lommekniv» (''Swiss Army Knife'').<ref name="Aho1977_118-124" /> ===Kapittel 4. Den syntaktiske spesifikasjon av programmeringsspråk=== Kapittel 4, «den syntaktiske spesifikasjon av programmeringsspråk» (''The Syntactic Specification of Programming Languages''), behandler måter å spesifisere [[Syntaks (programmering)|syntaksen]] i et programmeringsspråk.<ref name="Aho1977_125-144" /> Kapittelet behandler [[kontekstfri grammatikk]]<ref name="Aho1977_126-136" />, derivasjoner og parsertrær<ref name="Aho1977_129-136" /> og til slutt kapabilitetene til kontekstfri grammatikk.<ref name="Aho1977_136-144" /> ===Kapittel 5. Grunnleggende parsingteknikker=== Kapittel 5, «grunnleggende parsingteknikker» (''Basic Parsing Techniques''), beskriver ulike former for [[parser|parsing]].<ref name="Aho1977_145-196" /> Kapittelet innledes med å drøfte parsere generelt.<ref name="Aho1977_145-150" /> Deretter omtales [[skift-reduser-parser]]e,<ref name="Aho1977_150-158" /> [[operator-presedens-parser]]e,<ref name="Aho1977_158-174" /> [[ovenfra-ned-parser]]e,<ref name="Aho1977_174-184" /> og til slutt [[prediktiv parser|prediktive parsere]].<ref name="Aho1977_184-196" /> ===Kapittel 6. Automatisk konstruksjon av effektive parsere=== Kapittel 6, «automatisk konstruksjon av effektive parsere» (''Automatic Construction of Efficient Parsers''), dreier seg blant annet om [[parsergenerator]]er.<ref name="Aho1977_198-245" /> Kapittelet begynner med å beskrive [[LR-parser]]e<ref name="Aho1977_198-204" /> og den kanoniske samling av LR(0)-elementer.<ref name="Aho1977_204-211" /> Deretter fortsetter det med å beskrive konstruksjon av [[Simpel LR-parser|SLR-parsingtabeller]],<ref name="Aho1977_211-214" /> konstruksjon av [[kanonisk LR-parser|kanonisk LR-parsertabeller]]<ref name="Aho1977_214-219" /> og konstruksjon av [[LALR-parser|LALR-parsertabeller]].<ref name="Aho1977_219-224" /> Deretter behandles bruken av tvetydig grammatikk<ref name="Aho1977_225-229" /> og en automatisk parsergenerator, i dette tilfellet [[Yacc]].<ref name="Aho1977_229-233" /> Til slutt behandles implementasjon av LR-parsingtabeller<ref name="Aho1977_233-236" /> og konstruksjon av et LALR elementsett.<ref name="Aho1977_236-245" /> ===Kapittel 7. Syntaksrettet oversettelse=== Kapittel 7, «syntaksrettet oversettelse» (''Syntax-Directed Translation''), dreier seg om [[syntaksrettet oversettelse]].<ref name="Aho1977_245-295" /> Kapittelet drøfter ulike former for spørsmål ved [[kodegenerering (kompilatorer)|mellomkodegenerering]] relatert til semantiske aksjoner og oversettelser av parsertreet,<ref name="Aho1977_245-249" /> Deretter behandles forskjellige implementasjoner av syntaksrettede oversettelser,<ref name="Aho1977_249-254" />, etterfulgt av en drøfting av [[mellomliggende representasjon]],<ref name="Aho1977_254" /> [[omvendt polsk notasjon]],<ref name="Aho1977_254-258" /> parsertrær og syntakstrær,<ref name="Aho1977_258-259" /> [[tre-adresse-kode]]r, [[nibble]]r (4 biter) og [[tupel|tupler]],<ref name="Aho1977_259-265" /> oversettelser av tildelingstrær,<ref name="Aho1977_265-270" /> [[boolsk uttrykk|boolske uttrykk]],<ref name="Aho1977_270-281" /> setninger som stanser flytkontrollen<ref name="Aho1977_281-286" /> oversettelse av omvendte polske notasjoner<ref name="Aho1977_286-290" /> og oversettelse med en ovenfra-ned parser.<ref name="Aho1977_290-295" /> ===Kapittel 8. Mer om oversettelse=== Kapittel 8, «mer om oversettelse» (''More About Translation''), fortsetter drøftelsen av oversettelser.<ref name="Aho1977_296-317" /> Kapitlet begynner med å gjennomgå tabellreferanser i aritmetiske uttrykk,<ref name="Aho1977_296-302" /> og fortsetter med å behandle prosedyrekall,<ref name="Aho1977_303-306"/> deklarasjoner,<ref name="Aho1977_307-308"/> [[switch-setning|''case''-setninger]]<ref name="Aho1977_308-311"/> og [[Record|''record''-datastrukturer]].<ref name="Aho1977_312-316"/> Avslutningsvis omtales datastrukturene i [[PL/I]]-lignende programmeringsspråk.<ref name="Aho1977_317-327"/> ===Kapittel 9. Symboltabeller=== Kapittel 9, «symboltabeller» (''Symbol Tables''), behandler [[symboltabell]]er.<ref name="Aho1977_328-350"/> Kapitlet begynner med å drøfte innholdet i en symboltabell,<ref name="Aho1977_328-335"/> og drøfter deretter datastrukturer for symboltabeller,<ref name="Aho1977_336-340"/> før det til slutt drøfter informasjonens gyldighetsområder.<ref name="Aho1977_341-350"/> ===Kapittel 10. Administrasjon av lagringsmedia under kjøring=== Kapittel 10, «administrasjon av lagringsmedia under kjøring» (''Run-time Storage Administration''), omhandler behandling av lagringsmedia.<ref name="Aho1977_351-377"/> Først beskrives en implementasjon av en enkel [[Stakk (datastruktur)|stakkallokering]].<ref name="Aho1977_351-355"/> Deretter beskrives en implementasjon av blokkstrukturerte programmeringsspråk.<ref name="Aho1977_356-363"/> Deretter beskrives lagringsallokering i [[Fortran]],<ref name="Aho1977_364-376"/> og til slutt lagringsallokering i blokkstrukturerte språk.<ref name="Aho1977_377-381"/> ===Kapittel 11. Deteksjon og retting av feil=== Kapittel 11, «deteksjon og retting av feil» (''Error Dedection and Recovery''), omhandler feilbehandling. Kapittelet innledes med å beskrive feilrapportering og ulike typer feil, leksikalske, syntaktiske og semantiske.<ref name="Aho1977_382-388"/> Deretter behandles feil som kan oppdages under den leksikalske analysen og den syntaktiske analysen,<ref name="Aho1977_388-402"/> og til slutt behandles semantiske feil.<ref name="Aho1977_402-405"/> ===Kapittel 12. Introduksjon til kodeoptimalisering=== Kapittel 12, «introduksjon til kodeoptimalisering» (''Introduction to Code Optimization''), innleder drøftingen av [[programvareoptimalisering]]. Innledningsvis gis en oppsummering av ulike former for optimalisering.<ref name="Aho1977_406-410"/> Deretter behandles [[løkkeoptimalisering]].<ref name="Aho1977_410-418"/> I neste omgang beskrives [[Rettet asyklisk graf|rettede asykliske grafer]] som en presentasjon av grunnleggende blokker.<ref name="Aho1977_418-427"/> Kapittelet beskriver verditall og algebraiske lover,<ref name="Aho1977_427-429"/> før det avsluttes med en global dataflytanalyse.<ref name="Aho1977_429-440"/> ===Kapittel 13. Mer om løkkeoptimalisering=== Kapittel 13, «mer om løkkeoptimalisering» (''More About Loop Optimization''), utdyper drøftelsen av løkkeoptimalisering. Kapittelet starter med å behandle [[dominator (grafteori)|dominatorer]], en [[kontrollflytgraf]] hvor node ''d'' dominerer en node ''n''.<ref name="Aho1977_441-447"/> Deretter fortsetter det med å behandle [[intervall (grafteori)|reduserbare flytgrafer]]<ref name="Aho1977_447-454"/> og beregninger av [[løkkeinvariant]]er.<ref name="Aho1977_454-466"/> Deretter behandles eliminasjon av [[Matematisk induksjon|induksjonsvariabler]].<ref name="Aho1977_466-471"/> Avslutningsvis behandles en del andre løkkeoptimaliseringer.<ref name="Aho1977_471-478"/> ===Kapittel 14. Mer om dataflytanalyse=== Kapittel 14, «mer om dataflytanalyse» (''More About Data-Flow Analysis''), fortsetter drøftelsen av [[dataflytanalyse]]r. Etter å ha gjort en del grunnleggende definisjoner,<ref name="Aho1977_478-479"/> beskrives ''constant folding'' som en måte å gjenkjenne og evaluere konstanter i uttrykk under kompilering i stedet for at de beregnes under kjøring.<ref name="Aho1977_479-481"/> Deretter beskrives [[tilgjengelige uttrykk]], som er en analysealgoritme for å bestemme mengden med uttrykk som ikke behøves å beregnes på nytt.<ref name="Aho1977_482-487"/> Videre beskrives behandlingen av [[copy propagation]].<ref name="Aho1977_487-489"/> Etter å ha behandlet en [[dataflytanalyse|baklengs analyse]] av dataflyten,<ref name="Aho1977_489-491"/> kommer boken inn på ''«svært opptatte uttrykk»'' og ''kodeheising''.<ref name="Aho1977_491-497"/> Deretter beskrives fire former for dataflytanalyser: To som følger dataflyten fremover, og to som følger dataflyten bakover.<ref name="Aho1977_497-504"/> Avslutningsvis beskrives dataflytanalyser mellom prosedyrer.<ref name="Aho1977_504-517"/> ===Kapittel 15. Kodegenerering=== Kapittel 15, «kodegenerering» (''Code Generation''), diskuterer [[Kodegenerering (kompilatorer)|generering av kode]].<ref name="Aho1977_518"/> Det drøftes ulike alternativer, som generering av absolutt [[maskinkode]], relokaliserbar maskinkode ([[objektfil]]er), [[assembler]]kode eller et annet programmeringsspråk.<ref name="Aho1977_518-519"/> [[ALTRAN]] og [[Ratfor]] brukes som eksempler på det siste, i forbindelse med Fortran.<ref name="Aho1977_519"/> Deretter drøftes kodegeneratorens miljø,<ref name="Aho1977_519"/> [[adresseområde]]ne til navn under [[utførelse (informatikk)|utførelse]],<ref name="Aho1977_520"/> problemer forbundet med kodegenerering,<ref name="Aho1977_521"/> valg av [[Instruksjon (datamaskin)|instruksjoner]] som skal genereres,<ref name="Aho1977_520"/> i hvilken rekkefølge beregninger skal utføres,<ref name="Aho1977_522"/> og hvilke [[prosessorregister]]e som skal brukes.<ref name="Aho1977_522"/> Deretter beskrives en abstrakt modell for en datamaskin,<ref name="Aho1977_523-525"/> og pseudokoden for en kodegenerator.<ref name="Aho1977_525-552"/> ===Appendiks A. En kikk på enkelte kompilatorer=== Appendiks A, «en kikk på enkelte kompilatorer» (''A Look at Some Compilers''), diskuterer strukturen til kompilatorer for [[C (programmeringsspråk)|C]], Fortran og [[BLISS]].<ref name="Aho1977_557"/> Tre ulike C-kompilatorer diskuteres: [[Dennis Ritchie]]'s (1941–2011) kompilator for [[minidatamaskin]]en [[PDP-11]] og [[Stephen Curtis Johnson]]'s [[Portable C Compiler]] for [[stormaskin]]ene [[Honeywell 6000-serien|Honeywell 6070]] og [[IBM System/370]].<ref name="Aho1977_557"/> Den førstnevnte benyttet en rekursiv descendant parser, mens de to sistnevnte var implementert ved hjelp av en [[LALR-parser]].<ref name="Aho1977_557"/> Alle disse kompilatorene hadde to pass, og PDP-11 kompilatoren manglet et tredje pass for kodeoptimaliseringer.<ref name="Aho1977_557"/> Deretter følger en kort gjennomgang av kompilatoren FORTRAN-H for IBM System/370, og fire av dens 25 faser av kompilering.<ref name="Aho1977_558-560"/> Til slutt gjennomgås BLISS-kompilatoren for PDP-11, og dens fem faser av kompilering.<ref name="Aho1977_560-562"/> ===Appendiks B. Et programmeringsprosjekt=== Appendiks B, «et programmeringsprosjekt» (''A Programming Project''), presenterer en samling anbefalte øvelser for kompilatorkonstruksjon.<ref name="Aho1977_563"/> Forfatterne presenterer en delmengde av grammatikken til [[Pascal (programmeringsspråk)|Pascal]],<ref name="Aho1977_563-565"/> og forklarer dette språkets programstruktur<ref name="Aho1977_566"/> og leksikalske konvensjoner.<ref name="Aho1977_566-567"/> Deretter foreslås det, som øvelser, å lage en symboltabell, en kommandotolk for kvadrupler (nibler), en leksikalsk analysator, rutiner for semantikk for å generere kvadrupler, en parser, rutiner for feilhåndtering og evaluering av kompilatoren ved hjelp av en ''profiler''.<ref name="Aho1977_567-568"/> Til slutt foreslås det enkelte utvidelser av språket.<ref name="Aho1977_569"/> ==Referanser== <references> <ref name="Aho1977">[[#Aho1977|Aho 1977]]</ref> <ref name="Aho1977_1-25">[[#Aho1977|Aho 1977]], side 1-25</ref> <ref name="Aho1977_1-3">[[#Aho1977|Aho 1977]], side 1-3</ref> <ref name="Aho1977_3-5">[[#Aho1977|Aho 1977]], side 3-5</ref> <ref name="Aho1977_5-10">[[#Aho1977|Aho 1977]], side 5-10</ref> <ref name="Aho1977_10-12">[[#Aho1977|Aho 1977]], side 10-12</ref> <ref name="Aho1977_12-13">[[#Aho1977|Aho 1977]], side 12-13</ref> <ref name="Aho1977_13-17">[[#Aho1977|Aho 1977]], side 13-17</ref> <ref name="Aho1977_17-19">[[#Aho1977|Aho 1977]], side 17-19</ref> <ref name="Aho1977_19-20">[[#Aho1977|Aho 1977]], side 19-20</ref> <ref name="Aho1977_20">[[#Aho1977|Aho 1977]], side 20</ref> <ref name="Aho1977_21">[[#Aho1977|Aho 1977]], side 21</ref> <ref name="Aho1977_21-23">[[#Aho1977|Aho 1977]], side 21-23</ref> <ref name="Aho1977_23-25">[[#Aho1977|Aho 1977]], side 23-25</ref> <ref name="Aho1977_26-72">[[#Aho1977|Aho 1977]], side 26-72</ref> <ref name="Aho1977_26-28">[[#Aho1977|Aho 1977]], side 26-28</ref> <ref name="Aho1977_28-32">[[#Aho1977|Aho 1977]], side 28-32</ref> <ref name="Aho1977_32-34">[[#Aho1977|Aho 1977]], side 32-34</ref> <ref name="Aho1977_34-38">[[#Aho1977|Aho 1977]], side 34-38</ref> <ref name="Aho1977_38-45">[[#Aho1977|Aho 1977]], side 38-45</ref> <ref name="Aho1977_45-49">[[#Aho1977|Aho 1977]], side 45-49</ref> <ref name="Aho1977_50-54">[[#Aho1977|Aho 1977]], side 50-54</ref> <ref name="Aho1977_55-57">[[#Aho1977|Aho 1977]], side 55-57</ref> <ref name="Aho1977_57-59">[[#Aho1977|Aho 1977]], side 57-59</ref> <ref name="Aho1977_59-63">[[#Aho1977|Aho 1977]], side 59-63</ref> <ref name="Aho1977_63-72">[[#Aho1977|Aho 1977]], side 63-72</ref> <ref name="Aho1977_73-124">[[#Aho1977|Aho 1977]], side 73-124</ref> <ref name="Aho1977_74-76">[[#Aho1977|Aho 1977]], side 74-76</ref> <ref name="Aho1977_76-82">[[#Aho1977|Aho 1977]], side 76-82</ref> <ref name="Aho1977_82-88">[[#Aho1977|Aho 1977]], side 82-88</ref> <ref name="Aho1977_88-94">[[#Aho1977|Aho 1977]], side 88-94</ref> <ref name="Aho1977_95-99">[[#Aho1977|Aho 1977]], side 95-99</ref> <ref name="Aho1977_99-103">[[#Aho1977|Aho 1977]], side 99-103</ref> <ref name="Aho1977_103-109">[[#Aho1977|Aho 1977]], side 103-109</ref> <ref name="Aho1977_109-118">[[#Aho1977|Aho 1977]], side 109-118</ref> <ref name="Aho1977_118-124">[[#Aho1977|Aho 1977]], side 118-124</ref> <ref name="Aho1977_125-144">[[#Aho1977|Aho 1977]], side 125-144</ref> <ref name="Aho1977_126-136">[[#Aho1977|Aho 1977]], side 126-136</ref> <ref name="Aho1977_129-136">[[#Aho1977|Aho 1977]], side 129-136</ref> <ref name="Aho1977_136-144">[[#Aho1977|Aho 1977]], side 136-144</ref> <ref name="Aho1977_145-196">[[#Aho1977|Aho 1977]], side 145-196</ref> <ref name="Aho1977_145-150">[[#Aho1977|Aho 1977]], side 145-150</ref> <ref name="Aho1977_150-158">[[#Aho1977|Aho 1977]], side 150-158</ref> <ref name="Aho1977_158-174">[[#Aho1977|Aho 1977]], side 158-174</ref> <ref name="Aho1977_174-184">[[#Aho1977|Aho 1977]], side 174-184</ref> <ref name="Aho1977_184-196">[[#Aho1977|Aho 1977]], side 184-196</ref> <ref name="Aho1977_198-245">[[#Aho1977|Aho 1977]], side 198-245</ref> <ref name="Aho1977_198-204">[[#Aho1977|Aho 1977]], side 198-204</ref> <ref name="Aho1977_204-211">[[#Aho1977|Aho 1977]], side 204-211</ref> <ref name="Aho1977_211-214">[[#Aho1977|Aho 1977]], side 211-214</ref> <ref name="Aho1977_214-219">[[#Aho1977|Aho 1977]], side 214-219</ref> <ref name="Aho1977_219-224">[[#Aho1977|Aho 1977]], side 219-224</ref> <ref name="Aho1977_225-229">[[#Aho1977|Aho 1977]], side 225-229</ref> <ref name="Aho1977_229-233">[[#Aho1977|Aho 1977]], side 229-233</ref> <ref name="Aho1977_233-236">[[#Aho1977|Aho 1977]], side 233-236</ref> <ref name="Aho1977_236-245">[[#Aho1977|Aho 1977]], side 236-245</ref> <ref name="Aho1977_245-295">[[#Aho1977|Aho 1977]], side 245-295</ref> <ref name="Aho1977_245-249">[[#Aho1977|Aho 1977]], side 245-249</ref> <ref name="Aho1977_249-254">[[#Aho1977|Aho 1977]], side 249-254</ref> <ref name="Aho1977_254">[[#Aho1977|Aho 1977]], side 254</ref> <ref name="Aho1977_254-258">[[#Aho1977|Aho 1977]], side 254-258</ref> <ref name="Aho1977_258-259">[[#Aho1977|Aho 1977]], side 258-259</ref> <ref name="Aho1977_259-265">[[#Aho1977|Aho 1977]], side 259-265</ref> <ref name="Aho1977_265-270">[[#Aho1977|Aho 1977]], side 265-270</ref> <ref name="Aho1977_270-281">[[#Aho1977|Aho 1977]], side 270-281</ref> <ref name="Aho1977_281-286">[[#Aho1977|Aho 1977]], side 281-286</ref> <ref name="Aho1977_286-290">[[#Aho1977|Aho 1977]], side 286-290</ref> <ref name="Aho1977_290-295">[[#Aho1977|Aho 1977]], side 290-295</ref> <ref name="Aho1977_296-317">[[#Aho1977|Aho 1977]], side 296-317</ref> <ref name="Aho1977_296-302">[[#Aho1977|Aho 1977]], side 296-302</ref> <ref name="Aho1977_303-306">[[#Aho1977|Aho 1977]], side 303-306</ref> <ref name="Aho1977_307-308">[[#Aho1977|Aho 1977]], side 307-308</ref> <ref name="Aho1977_308-311">[[#Aho1977|Aho 1977]], side 308-311</ref> <ref name="Aho1977_312-316">[[#Aho1977|Aho 1977]], side 312-316</ref> <ref name="Aho1977_317-327">[[#Aho1977|Aho 1977]], side 317-327</ref> <ref name="Aho1977_328-350">[[#Aho1977|Aho 1977]], side 328-350</ref> <ref name="Aho1977_328-335">[[#Aho1977|Aho 1977]], side 328-335</ref> <ref name="Aho1977_336-340">[[#Aho1977|Aho 1977]], side 336-340</ref> <ref name="Aho1977_341-350">[[#Aho1977|Aho 1977]], side 340-350</ref> <ref name="Aho1977_351-355">[[#Aho1977|Aho 1977]], side 351-355</ref> <ref name="Aho1977_356-363">[[#Aho1977|Aho 1977]], side 356-363</ref> <ref name="Aho1977_364-376">[[#Aho1977|Aho 1977]], side 364-376</ref> <ref name="Aho1977_377-381">[[#Aho1977|Aho 1977]], side 377-381</ref> <ref name="Aho1977_351-377">[[#Aho1977|Aho 1977]], side 351-377</ref> <ref name="Aho1977_382-388">[[#Aho1977|Aho 1977]], side 382-388</ref> <ref name="Aho1977_388-402">[[#Aho1977|Aho 1977]], side 388-402</ref> <ref name="Aho1977_402-405">[[#Aho1977|Aho 1977]], side 402-405</ref> <ref name="Aho1977_406-410">[[#Aho1977|Aho 1977]], side 406-410</ref> <ref name="Aho1977_410-418">[[#Aho1977|Aho 1977]], side 410-418</ref> <ref name="Aho1977_418-427">[[#Aho1977|Aho 1977]], side 418-427</ref> <ref name="Aho1977_427-429">[[#Aho1977|Aho 1977]], side 427-429</ref> <ref name="Aho1977_429-440">[[#Aho1977|Aho 1977]], side 429-440</ref> <ref name="Aho1977_441-447">[[#Aho1977|Aho 1977]], side 441-447</ref> <ref name="Aho1977_447-454">[[#Aho1977|Aho 1977]], side 447-454</ref> <ref name="Aho1977_454-466">[[#Aho1977|Aho 1977]], side 454-466</ref> <ref name="Aho1977_466-471">[[#Aho1977|Aho 1977]], side 466-471</ref> <ref name="Aho1977_471-478">[[#Aho1977|Aho 1977]], side 471-478</ref> <ref name="Aho1977_478-479">[[#Aho1977|Aho 1977]], side 478-479</ref> <ref name="Aho1977_479-481">[[#Aho1977|Aho 1977]], side 479-481</ref> <ref name="Aho1977_482-487">[[#Aho1977|Aho 1977]], side 482-487</ref> <ref name="Aho1977_487-489">[[#Aho1977|Aho 1977]], side 487-489</ref> <ref name="Aho1977_489-491">[[#Aho1977|Aho 1977]], side 489-491</ref> <ref name="Aho1977_491-497">[[#Aho1977|Aho 1977]], side 491-497</ref> <ref name="Aho1977_497-504">[[#Aho1977|Aho 1977]], side 497-504</ref> <ref name="Aho1977_504-517">[[#Aho1977|Aho 1977]], side 504-517</ref> <ref name="Aho1977_518">[[#Aho1977|Aho 1977]], side 518</ref> <ref name="Aho1977_518-519">[[#Aho1977|Aho 1977]], side 518-519</ref> <ref name="Aho1977_519">[[#Aho1977|Aho 1977]], side 519</ref> <ref name="Aho1977_520">[[#Aho1977|Aho 1977]], side 520</ref> <ref name="Aho1977_521">[[#Aho1977|Aho 1977]], side 521</ref> <ref name="Aho1977_522">[[#Aho1977|Aho 1977]], side 522</ref> <ref name="Aho1977_523-525">[[#Aho1977|Aho 1977]], side 523-525</ref> <ref name="Aho1977_525-552">[[#Aho1977|Aho 1977]], side 525-552</ref> <ref name="Aho1977_557">[[#Aho1977|Aho 1977]], side 557</ref> <ref name="Aho1977_563">[[#Aho1977|Aho 1977]], side 563</ref> <ref name="Aho1977_563-565">[[#Aho1977|Aho 1977]], side 563-565</ref> <ref name="Aho1977_566">[[#Aho1977|Aho 1977]], side 566</ref> <ref name="Aho1977_566-567">[[#Aho1977|Aho 1977]], side 566-567</ref> <ref name="Aho1977_567-568">[[#Aho1977|Aho 1977]], side 567-568</ref> <ref name="Aho1977_569">[[#Aho1977|Aho 1977]], side 569</ref> <ref name="Aho1977_558-560">[[#Aho1977|Aho 1977]], side 558-560</ref> <ref name="Aho1977_560-562">[[#Aho1977|Aho 1977]], side 560-562</ref> <ref name="Aho1986">[[#Aho1986|Aho 1986]]</ref> <ref name="Aho2006">[[#Aho2006|Aho 2006]]</ref> <ref name="Holub1990">[[#Holub1990|Holub 1990]]</ref> <ref name="Macz2002-219">[[#Macz2002|Macz 2002]], side 219</ref> <ref name="Raymond1996-161">[[#Raymond1996|Raymond 1996]], side 161</ref> </references> == Litteratur == *{{Kilde bok | ref=Aho1977 | forfatter=[[Alfred Aho|Aho, Alfred Vaino]]; [[Jeffrey Ullman|Ullman, Jeffrey David]] | utgivelsesår=1977 | tittel=Principles of Compiler Design | forlag=[[Addison-Wesley]], 1. august 1977 | isbn=0-201-00022-9 }} *{{Kilde bok | ref=Aho1986 | forfatter=Aho, Alfred Vaino; Ullman, Jeffrey David; [[Ravi Sethi|Sethi Ravi]] | utgivelsesår=1986 | tittel=[[Compilers: Principles, Techniques, and Tools]] | forlag=Addison-Wesley, 1. januar 1986 | isbn=0-201-10088-6 | id=ISBN 978-0-201-10088-4 }} *{{Kilde bok | ref=Aho2006 | forfatter=Aho, Alfred Vaino; Ullman, Jeffrey David; Sethi Ravi; [[Monica Sin-Ling Lam|Lam, Monica Sing-Ling]] | utgivelsesår=2006 | tittel=Compilers: Principles, Techniques, and Tools | forlag=Addison-Wesley, 2. utgave, 10. september 2006 | isbn=0-321-48681-1 | id=ISBN 978-0-321-48681-3 }} *{{Kilde bok | ref=Holub1990 | forfatter=[[Allen Holub|Holub, Allen I.]] | utgivelsesår=1990 | tittel=Compiler Design in C | forlag=[[Prentice Hall]], 1. januar 1990 | url=http://holub.com/goodies/compiler/compilerDesignInC.pdf | isbn=0-131-55045-4 | id=ISBN 978-0-131-55045-2 }} * {{Kilde bok | ref=Macz2002 | forfatter=Macz, Mad | utgivelsesår=2002 | tittel=Internet Underground: The Way of the Hacker | forlag=PageFree Publishing, Incorporated; 1. januar 2002 | isbn=978-1-93025-253-0 | id=ISBN 19-302525-3-6 }} * {{Kilde bok | ref=Raymond1996 | forfatter=[[Eric Steven Raymond|Raymond, Eric Steven]] | utgivelsesår=1996 | tittel=The New Hacker's Dictionary | forlag=[[MIT Press]], [[Massachusetts]]; 3. reviderte utgave, 11 oktober 1996 | isbn=978-0-26268-092-9 | id=ISBN 02-626809-2-0 }} ==Eksterne lenker== * [https://www.amazon.com/Principles-Compiler-Addison-Wesley-information-processing/dp/0201000229/ref=sr_1_1?qid=1579336891&refinements=p_66%3A0201000229&s=books&sr=1-1 Boken] hos [[Amazon.com]] {{kursiv tittel}} {{Autoritetsdata}} [[Kategori:Informatikkens historie]] [[Kategori:Bell Laboratories]] [[Kategori:Addison-Wesley]] [[Kategori:Bøker om kompilatorer]] [[Kategori:Lærebøker]] [[Kategori:Bøker fra USA]] [[Kategori:Bøker fra 1977]] [[Kategori:1977 i USA]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
vis kilde
) (beskyttet)
Mal:Bilde fra Wikidata
(
rediger
)
Mal:Commonscat fra Wikidata
(
rediger
)
Mal:ISOtilNorskdato
(
rediger
)
Mal:Infoboks/styles.css
(
rediger
)
Mal:Infoboks bilde
(
rediger
)
Mal:Infoboks bok
(
rediger
)
Mal:Infoboks dobbeltrad
(
rediger
)
Mal:Infoboks rad
(
rediger
)
Mal:Infoboks slutt
(
rediger
)
Mal:Infoboks start
(
rediger
)
Mal:Kilde bok
(
rediger
)
Mal:Kursiv tittel
(
rediger
)
Mal:MONTHNAME
(
rediger
)
Mal:Startdato og alder
(
rediger
)
Mal:Time ago
(
rediger
)
Mal:Time ago/core
(
rediger
)
Mal:Wikidata-norsk
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Citation/CS1
(
rediger
)
Modul:Citation/CS1/COinS
(
rediger
)
Modul:Citation/CS1/Configuration
(
rediger
)
Modul:Citation/CS1/Date validation
(
rediger
)
Modul:Citation/CS1/Identifiers
(
rediger
)
Modul:Citation/CS1/Utilities
(
rediger
)
Modul:Citation/CS1/Whitelist
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:GetParameters
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Modul:Italic title
(
rediger
)
Modul:String2
(
rediger
)
Modul:Wd-norsk
(
rediger
)
Modul:Wd-norsk/i18n
(
rediger
)
Modul:WikidataBilde
(
rediger
)
Modul:WikidataCommonscat
(
rediger
)
Modul:Yesno
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon