Language implementation patterns: create your own domain-specific and general programming languages
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Dallas, Texas
Pragmatic Bookshelf
2014
|
Ausgabe: | P5.0 - September 2014 |
Schriftenreihe: | The pragmatic programmers
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | XVI, 358 Seiten Illustrationen |
ISBN: | 9781934356456 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV045422349 | ||
003 | DE-604 | ||
005 | 20190204 | ||
007 | t | ||
008 | 190123s2014 a||| |||| 00||| eng d | ||
020 | |a 9781934356456 |9 978-1-934356-45-6 | ||
035 | |a (OCoLC)1083289718 | ||
035 | |a (DE-599)BVBBV045422349 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
049 | |a DE-473 | ||
084 | |a ST 240 |0 (DE-625)143625: |2 rvk | ||
100 | 1 | |a Parr, Terence |e Verfasser |0 (DE-588)139999906 |4 aut | |
245 | 1 | 0 | |a Language implementation patterns |b create your own domain-specific and general programming languages |c Terence Parr |
250 | |a P5.0 - September 2014 | ||
264 | 1 | |a Dallas, Texas |b Pragmatic Bookshelf |c 2014 | |
300 | |a XVI, 358 Seiten |b Illustrationen | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a The pragmatic programmers | |
650 | 0 | 7 | |a Implementierung |g Informatik |0 (DE-588)4026663-1 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Domänenspezifische Programmiersprache |0 (DE-588)7585264-0 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Programmiersprache |0 (DE-588)4047409-4 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Programmiersprache |0 (DE-588)4047409-4 |D s |
689 | 0 | 1 | |a Implementierung |g Informatik |0 (DE-588)4026663-1 |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Domänenspezifische Programmiersprache |0 (DE-588)7585264-0 |D s |
689 | 1 | |5 DE-604 | |
856 | 4 | 2 | |m Digitalisierung UB Bamberg - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030808211&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-030808211 |
Datensatz im Suchindex
_version_ | 1804179302904758272 |
---|---|
adam_text | - v £
v^.Vr -V-
Acknowledgments.......................................ix
Preface...............................................xi
Part I — Getting Started with Parsing
1. Language Applications Cracked Open.............................3
1.1 The Big Picture 3
1.2 A Tour of the Patterns 4
1.3 Dissecting a Few Applications 9
1.4 Choosing Patterns and Assembling Applications 16
2. Basic Parsing Patterns .......................................19
2.1 Identifying Phrase Structure 20
2.2 Building Recursive-Descent Parsers 21
2.3 Parser Construction Using a Grammar DSL 24
2.4 Tokenizing Sentences 25
Pattern 1. Mapping Grammars to Recursive-Descent
Recognizers 27
Pattern 2. LL(1) Recursive-Descent Lexer 31
Pattern 3. LL(1) Recursive-Descent Parser 36
Pattern 4. LL(k) Recursive-Descent Parser 41
3. Enhanced Parsing Patterns.....................................47
3.1 Parsing with Arbitrary Lookahead 48
3.2 Parsing like a Pack Rat 49
3.3 Directing the Parse with Semantic Information 50
Pattern 5. Backtracking Parser 53
Pattern 6. Memoizing Parser 60
Pattern 7. Predicated Parser 65
vi • Contents
Part II — Analyzing Languages
4. Building Intermediate Form Trees...........................71
4.1 Why We Build Trees 73
4.2 Building Abstract Syntax Trees 74
4.3 Quick Introduction to ANTLR 81
4.4 Constructing ASTs with ANTLR Grammars 83
Pattern 8. Parse Tree 87
Pattern 9. Homogeneous AST 91
Pattern 10. Normalized Heterogeneous AST 93
Pattern 11. Irregular Heterogeneous AST 96
5. Walking and Rewriting Trees................................99
5.1 Walking Trees and Visitation Order 100
5.2 Encapsulating Node Visitation Code 104
5.3 Automatically Generating Visitors from Grammars 105
5.4 Decoupling Tree Traversal from Pattern Matching 108
Pattern 12. Embedded Heterogeneous Tree Walker 111
Pattern 13. External Tree Visitor 113
Pattern 14. Tree Grammar 117
Pattern 15. Tree Pattern Matcher 120
6. Tracking and Identifying Program Symbols...................129
6.1 Collecting Information About Program Entities 130
6.2 Grouping Symbols into Scopes 132
6.3 Resolving Symbols 136
Pattern 16. Symbol Table for Monolithic Scope 139
Pattern 17. Symbol Table for Nested Scopes 144
7. Managing Symbol Tables for Data Aggregates .... 153
7.1 Building Scope Trees for Structs 154
7.2 Building Scope Trees for Classes 156
Pattern 18. Symbol Table for Data Aggregates 159
Pattern 19. Symbol Table for Classes 164
8. Enforcing Static Typing Rules..............................179
Pattern 20. Computing Static Expression Types 182
Pattern 21. Automatic Type Promotion 190
Pattern 22. Enforcing Static Type Safety 198
Pattern 23. Enforcing Polymorphic Type Safety 206
Contents • vii
Part III — Building Interpreters
9. Building High-Level Interpreters..............................217
9.1 Designing High-Level Interpreter Memory Systems 218
9.2 Tracking Symbols in High-Level Interpreters 220
9.3 Processing Instructions 221
Pattern 24. Syntax-Directed Interpreter 222
Pattern 25. Tree-Based Interpreter 227
10. Building Bytecode Interpreters................................237
10.1 Programming Bytecode Interpreters 239
10.2 Defining an Assembly Language Syntax 241
10.3 Bytecode Machine Architecture 242
10.4 Where to Go from Here 247
Pattern 26. Bytecode Assembler 250
Pattern 27. Stack-Based Bytecode Interpreter 256
Pattern 28. Register-Based Bytecode Interpreter 264
Part IV — Translating and Generating Languages
11. Translating Computer Languages................................275
11.1 Syntax-Directed Translation 277
11.2 Rule-Based Translation 278
11.3 Model-Driven Translation 280
11.4 Constructing a Nested Output Model 286
Pattern 29. Syntax-Directed Translator 291
Pattern 30. Rule-Based Translator 297
Pattern 31. Target-Specific Generator Classes 303
12. Generating DSLs with Templates................................307
12.1 Getting Started with StringTemplate 308
12.2 Characterizing StringTemplate 311
12.3 Generating Templates from a Simple Input Model 312
12.4 Reusing Templates with a Different Input Model 314
12.5 Using a Tree Grammar to Create Templates 317
12.6 Applying Templates to Lists of Data 324
12.7 Building Retargetable Translators 329
13. Putting It All Together.......................................339
13.1 Finding Patterns in Protein Structures 339
13.2 Using a Script to Build 3D Scenes 340
viii • Contents
13.3 Processing XML 341
13.4 Reading Generic Configuration Files 342
13.5 Tweaking Source Code 343
13.6 Adding a New Type to Java 344
13.7 Pretty Printing Source Code 345
13.8 Compiling to Machine Code 346
Bibliography.................................................349
Index........................................................351
|
any_adam_object | 1 |
author | Parr, Terence |
author_GND | (DE-588)139999906 |
author_facet | Parr, Terence |
author_role | aut |
author_sort | Parr, Terence |
author_variant | t p tp |
building | Verbundindex |
bvnumber | BV045422349 |
classification_rvk | ST 240 |
ctrlnum | (OCoLC)1083289718 (DE-599)BVBBV045422349 |
discipline | Informatik |
edition | P5.0 - September 2014 |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01699nam a2200397 c 4500</leader><controlfield tag="001">BV045422349</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20190204 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">190123s2014 a||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781934356456</subfield><subfield code="9">978-1-934356-45-6</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1083289718</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV045422349</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-473</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 240</subfield><subfield code="0">(DE-625)143625:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Parr, Terence</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)139999906</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Language implementation patterns</subfield><subfield code="b">create your own domain-specific and general programming languages</subfield><subfield code="c">Terence Parr</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">P5.0 - September 2014</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Dallas, Texas</subfield><subfield code="b">Pragmatic Bookshelf</subfield><subfield code="c">2014</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XVI, 358 Seiten</subfield><subfield code="b">Illustrationen</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">The pragmatic programmers</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Implementierung</subfield><subfield code="g">Informatik</subfield><subfield code="0">(DE-588)4026663-1</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Domänenspezifische Programmiersprache</subfield><subfield code="0">(DE-588)7585264-0</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Programmiersprache</subfield><subfield code="0">(DE-588)4047409-4</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Programmiersprache</subfield><subfield code="0">(DE-588)4047409-4</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Implementierung</subfield><subfield code="g">Informatik</subfield><subfield code="0">(DE-588)4026663-1</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Domänenspezifische Programmiersprache</subfield><subfield code="0">(DE-588)7585264-0</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Bamberg - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030808211&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-030808211</subfield></datafield></record></collection> |
id | DE-604.BV045422349 |
illustrated | Illustrated |
indexdate | 2024-07-10T08:17:43Z |
institution | BVB |
isbn | 9781934356456 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-030808211 |
oclc_num | 1083289718 |
open_access_boolean | |
owner | DE-473 DE-BY-UBG |
owner_facet | DE-473 DE-BY-UBG |
physical | XVI, 358 Seiten Illustrationen |
publishDate | 2014 |
publishDateSearch | 2014 |
publishDateSort | 2014 |
publisher | Pragmatic Bookshelf |
record_format | marc |
series2 | The pragmatic programmers |
spelling | Parr, Terence Verfasser (DE-588)139999906 aut Language implementation patterns create your own domain-specific and general programming languages Terence Parr P5.0 - September 2014 Dallas, Texas Pragmatic Bookshelf 2014 XVI, 358 Seiten Illustrationen txt rdacontent n rdamedia nc rdacarrier The pragmatic programmers Implementierung Informatik (DE-588)4026663-1 gnd rswk-swf Domänenspezifische Programmiersprache (DE-588)7585264-0 gnd rswk-swf Programmiersprache (DE-588)4047409-4 gnd rswk-swf Programmiersprache (DE-588)4047409-4 s Implementierung Informatik (DE-588)4026663-1 s DE-604 Domänenspezifische Programmiersprache (DE-588)7585264-0 s Digitalisierung UB Bamberg - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030808211&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Parr, Terence Language implementation patterns create your own domain-specific and general programming languages Implementierung Informatik (DE-588)4026663-1 gnd Domänenspezifische Programmiersprache (DE-588)7585264-0 gnd Programmiersprache (DE-588)4047409-4 gnd |
subject_GND | (DE-588)4026663-1 (DE-588)7585264-0 (DE-588)4047409-4 |
title | Language implementation patterns create your own domain-specific and general programming languages |
title_auth | Language implementation patterns create your own domain-specific and general programming languages |
title_exact_search | Language implementation patterns create your own domain-specific and general programming languages |
title_full | Language implementation patterns create your own domain-specific and general programming languages Terence Parr |
title_fullStr | Language implementation patterns create your own domain-specific and general programming languages Terence Parr |
title_full_unstemmed | Language implementation patterns create your own domain-specific and general programming languages Terence Parr |
title_short | Language implementation patterns |
title_sort | language implementation patterns create your own domain specific and general programming languages |
title_sub | create your own domain-specific and general programming languages |
topic | Implementierung Informatik (DE-588)4026663-1 gnd Domänenspezifische Programmiersprache (DE-588)7585264-0 gnd Programmiersprache (DE-588)4047409-4 gnd |
topic_facet | Implementierung Informatik Domänenspezifische Programmiersprache Programmiersprache |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030808211&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT parrterence languageimplementationpatternscreateyourowndomainspecificandgeneralprogramminglanguages |