{"publications":[{"abstract":"","conferenceYear":"","series":"","lastpage":138,"booktitle":"Proceedings of the 10th International Symposium on Memory Management, ISMM 2011, San Jose, CA, USA, June 04 - 05, 2011","number":"","editors":[{"alias":{"id":"42ba3dc1-8c8f-4736-8e86-67b84c04fb31","name":"Hans-Juergen Boehm","key":"hans-juergen-boehm","url":"http://researchr.org/alias/hans-juergen-boehm"}},{"alias":{"id":"5b83173b-5c24-4ed2-9022-d34ee080cea8","name":"David F. Bacon","key":"david-f.-bacon","url":"http://researchr.org/alias/david-f.-bacon"}}],"type":"inproceedings","url":"http://researchr.org/publication/Tarau11","firstpage":129,"publisher":"ACM","id":"003ebab3-406a-4247-a2f0-2a0538cf6295","authors":[{"alias":{"id":"3bd5940f-c834-40cf-bd8f-45b64d46556e","name":"Paul Tarau","key":"paul-tarau","url":"http://researchr.org/alias/paul-tarau"}}],"title":"Integrated symbol table, engine and heap memory management in multi-engine prolog","organization":"","address":"","month":"","volume":"","year":"2011","conference":"iwmm","note":"","doi":"http://doi.acm.org/10.1145/1993478.1993497","key":"Tarau11"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":247,"booktitle":"Compiler Construction, 5th International Conference, CC 94, Edinburgh, U.K., April 7-9, 1994, Proceedings","number":"","editors":[{"alias":{"id":"7554a09f-b0be-4d62-9998-a04f3283d40c","name":"Peter Fritzson","key":"peter-fritzson","url":"http://researchr.org/alias/peter-fritzson"}}],"type":"inproceedings","url":"http://researchr.org/publication/Poetzsch-Heffter94%3A0","firstpage":233,"publisher":"Springer","id":"0137c282-fc5e-42ae-ac09-b2a8cf7ad7f0","authors":[{"alias":{"id":"778804b3-d25a-4744-838b-53bf93d2815b","name":"Arnd Poetzsch-Heffter","key":"arnd-poetzsch-heffter","url":"http://researchr.org/alias/arnd-poetzsch-heffter"}}],"title":"Developing Efficient Interpreters Based on Formal Language Specifications","organization":"","address":"","month":"","volume":"786","year":"1994","conference":"cc","note":"","doi":"","key":"Poetzsch-Heffter94:0"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":150,"booktitle":"Programming Language Implementation and Logic Programming, 5th International Symposium, PLILP 93, Tallinn, Estonia, August 25-27, 1993, Proceedings","number":"","editors":[{"alias":{"id":"5120437c-c943-4a77-a07d-a96dd5642a76","name":"Maurice Bruynooghe","key":"maurice-bruynooghe","url":"http://researchr.org/alias/maurice-bruynooghe"}},{"alias":{"id":"350d12c7-82d9-4c1f-bcf7-a49e9e2e46ee","name":"Jaan Penjam","key":"jaan-penjam","url":"http://researchr.org/alias/jaan-penjam"}}],"type":"inproceedings","url":"http://researchr.org/publication/Poetzsch-Heffter93","firstpage":137,"publisher":"Springer","id":"0de1bf38-cd75-41f1-af13-5b1898fac965","authors":[{"alias":{"id":"778804b3-d25a-4744-838b-53bf93d2815b","name":"Arnd Poetzsch-Heffter","key":"arnd-poetzsch-heffter","url":"http://researchr.org/alias/arnd-poetzsch-heffter"}}],"title":"Programming Language Specification and Prototyping Using the MAX System","organization":"","address":"","month":"","volume":"714","year":"1993","conference":"plilp","note":"","doi":"","key":"Poetzsch-Heffter93"},{"abstract":"","lastpage":627,"type":"article","url":"http://researchr.org/publication/KastensW94","firstpage":601,"issuenumber":"7","journal":"Acta Inf.","id":"116fee55-5eae-4d06-8ce5-e98309da31e3","authors":[{"alias":{"id":"908f6144-84ad-40f1-b519-5b5d115b59b6","name":"Uwe Kastens","key":"uwe-kastens","url":"http://researchr.org/alias/uwe-kastens"}},{"alias":{"id":"332ae189-be38-47a9-916e-6bc8cb8d6599","name":"William M. Waite","key":"william-m.-waite","url":"http://researchr.org/alias/william-m.-waite"}}],"title":"Modularity and Reusability in Attribute Grammars","month":"","volumenumber":"31","year":"1994","note":"","key":"KastensW94","doi":"http://portal.acm.org/citation.cfm?id=191491"},{"abstract":"How do distributed applications exchange (tree-like) data structures? To this end, we introduce the abstract data type of Annotated Terms (ATerms) and discuss their design, implementation and application. A comprehensive procedural interface enables creation and manipulation of ATerms in C. A Java version is also supported. The ATerm implementation is based on maximal subterm sharing and automatic garbage collection. A binary exchange format for the concise representation of ATerms (sharing preserved) allows the fast exchange of ATerms between applications. In a typical application---parse trees which contain quite some redundant information---less than 2 bytes are needed to represent a node in memory, and less than 2 bits are needed to represent it in binary format. It is shown that the implementation of ATerms scales up to the manipulation of ATerms in the giga-byte range.","lastpage":291,"type":"article","url":"http://researchr.org/publication/BrandJKO00","firstpage":259,"issuenumber":"3","journal":"Softw., Pract. Exper.","id":"11bee7ad-169d-418f-afd0-6dd13a97daf0","authors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"alias":{"id":"f24ad6b7-a319-40a9-b4c4-343871614b3c","name":"H. A. de Jong","key":"h.-a.-de-jong","url":"http://researchr.org/alias/h.-a.-de-jong"}},{"person":{"id":"37c2b529-fbd6-4ebd-9ca5-6dbe5dcdeeba","fullname":"Paul  Klint","key":"paulklint","url":"http://researchr.org/profile/paulklint"},"alias":{"id":"1fd9f1b5-3b9a-492a-b6c7-44525de23507","name":"Paul Klint","key":"paul-klint","url":"http://researchr.org/alias/paul-klint"}},{"alias":{"id":"389c90c2-cfa5-4ef1-ab65-2389187ae627","name":"Pieter A. Olivier","key":"pieter-a.-olivier","url":"http://researchr.org/alias/pieter-a.-olivier"}}],"title":"Efficient annotated terms","month":"","volumenumber":"30","year":"2000","note":"","key":"BrandJKO00","doi":""},{"abstract":"","conferenceYear":"","series":"","lastpage":0,"booktitle":"Proceedings of the 11th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education, ITiCSE 2006, Bologna, Italy, June 26-28, 2006","number":"","editors":[{"alias":{"id":"87e2ff61-0b76-4132-893b-aa78c27054c7","name":"Renzo Davoli","key":"renzo-davoli","url":"http://researchr.org/alias/renzo-davoli"}},{"alias":{"id":"84cb0c4e-777b-4669-9804-3d607b434106","name":"Michael Goldweber","key":"michael-goldweber","url":"http://researchr.org/alias/michael-goldweber"}},{"alias":{"id":"a66484d8-39ee-44de-b5b9-507385674d29","name":"Paola Salomoni","key":"paola-salomoni","url":"http://researchr.org/alias/paola-salomoni"}}],"type":"inproceedings","url":"http://researchr.org/publication/Urquiza-FuentesGGV06","firstpage":341,"publisher":"ACM","id":"13616652-714c-4988-995c-27c0e7c6dd39","authors":[{"alias":{"id":"82d16a05-7efa-4634-a12c-9c3df7738a0c","name":"Jaime Urquiza-Fuentes","key":"jaime-urquiza-fuentes","url":"http://researchr.org/alias/jaime-urquiza-fuentes"}},{"alias":{"id":"1e33c492-6ba9-4faf-83e5-a4edfc465511","name":"Micael Gallego-Carrillo","key":"micael-gallego-carrillo","url":"http://researchr.org/alias/micael-gallego-carrillo"}},{"alias":{"id":"10b77f53-bf43-4598-ad20-1bfeae26027b","name":"Francisco Gortázar-Bellas","key":"francisco-gortázar-bellas","url":"http://researchr.org/alias/francisco-gort%C3%A1zar-bellas"}},{"alias":{"id":"79df0879-8e54-45c6-b090-a410186b6850","name":"J. Ángel Velázquez-Iturbide","key":"j.-ángel-velázquez-iturbide","url":"http://researchr.org/alias/j.-%C3%A1ngel-vel%C3%A1zquez-iturbide"}}],"title":"Visualizing the symbol table","organization":"","address":"","month":"","volume":"","year":"2006","conference":"iticse","note":"","doi":"http://doi.acm.org/10.1145/1140124.1140249","key":"Urquiza-FuentesGGV06"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":44,"booktitle":"Languages: From Formal to Natural, Essays Dedicated to Nissim Francez on the Occasion of His 65th Birthday","number":"","editors":[{"alias":{"id":"1bbe6516-efd1-437f-914c-9fdd0b6df5f7","name":"Orna Grumberg","key":"orna-grumberg","url":"http://researchr.org/alias/orna-grumberg"}},{"alias":{"id":"b9ab8e45-8932-4746-89f8-ccb695e53084","name":"Michael Kaminski","key":"michael-kaminski","url":"http://researchr.org/alias/michael-kaminski"}},{"alias":{"id":"4a760191-d352-42b3-827f-6d1b9e96bf8f","name":"Shmuel Katz","key":"shmuel-katz","url":"http://researchr.org/alias/shmuel-katz"}},{"alias":{"id":"3f12ec65-02d4-450d-9b58-051988004145","name":"Shuly Wintner","key":"shuly-wintner","url":"http://researchr.org/alias/shuly-wintner"}}],"type":"inproceedings","url":"http://researchr.org/publication/Ben-AviW09","firstpage":36,"publisher":"Springer","id":"16f88122-8256-48c4-a5cc-d72962edf6c1","authors":[{"alias":{"id":"b11ce37d-f514-469e-9709-c970216cc6dc","name":"Gilad Ben-Avi","key":"gilad-ben-avi","url":"http://researchr.org/alias/gilad-ben-avi"}},{"alias":{"id":"a1340743-bf1e-4dc5-82ce-02f08890a4b2","name":"Yoad Winter","key":"yoad-winter","url":"http://researchr.org/alias/yoad-winter"}}],"title":"Scope Dominance with Generalized Quantifiers","organization":"","address":"","month":"","volume":"5533","year":"2009","conference":"birthday","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-01748-3_3","key":"Ben-AviW09"},{"abstract":"","lastpage":0,"type":"article","url":"http://researchr.org/publication/KastensS02","firstpage":0,"issuenumber":"3","journal":"Electr. Notes Theor. Comput. Sci.","id":"1ce1b783-f7a2-428c-aca3-a450833ae0a0","authors":[{"alias":{"id":"908f6144-84ad-40f1-b519-5b5d115b59b6","name":"Uwe Kastens","key":"uwe-kastens","url":"http://researchr.org/alias/uwe-kastens"}},{"alias":{"id":"2ea3df78-5fbe-4cc1-9efd-89210da11398","name":"Carsten Schmidt","key":"carsten-schmidt","url":"http://researchr.org/alias/carsten-schmidt"}}],"title":"VL-Eli: A Generator for Visual Languages - System Demonstration","month":"","volumenumber":"65","year":"2002","note":"","key":"KastensS02","doi":"http://www.elsevier.com/gej-ng/31/29/23/117/52/show/Products/notes/index.htt#012"},{"abstract":"","lastpage":28,"type":"article","url":"http://researchr.org/publication/Wells90%3A1","firstpage":25,"issuenumber":"5","journal":"SIGPLAN Notices","id":"25ab7248-7bd5-4063-b901-1e7038d5ac19","authors":[{"alias":{"id":"c69f376f-77f8-498a-812c-923c96f54802","name":"Mark B. Wells","key":"mark-b.-wells","url":"http://researchr.org/alias/mark-b.-wells"}}],"title":"Identifiers and static name abstraction","month":"","volumenumber":"25","year":"1990","note":"","key":"Wells90:1","doi":"http://doi.acm.org/10.1145/382080.382628"},{"abstract":"","conferenceYear":"","series":"","lastpage":365,"booktitle":"22nd IEEE Symposium on Logic in Computer Science (LICS 2007), 10-12 July 2007, Wroclaw, Poland, Proceedings","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/Pottier07%3A0","firstpage":356,"publisher":"IEEE Computer Society","id":"2945580c-ec10-487a-bd65-b742e316114b","authors":[{"alias":{"id":"4873b8c4-dea7-4856-9a7e-64f7e404443b","name":"François Pottier","key":"françois-pottier","url":"http://researchr.org/alias/fran%C3%A7ois-pottier"}}],"title":"Static Name Control for FreshML","organization":"","address":"","month":"","volume":"","year":"2007","conference":"lics","note":"","doi":"http://doi.ieeecomputersociety.org/10.1109/LICS.2007.44","key":"Pottier07:0"},{"abstract":"The applicability of term rewriting to program transformation is limited by the lack \r\nof control over rule application and by the context-free nature of rewrite rules. The \r\nﬁrst problem is addressed by languages supporting user-deﬁnable rewriting strate- \r\ngies. This paper addresses the second problem by extending rewriting strategies \r\nwith scoped dynamic rewrite rules. Dynamic rules are generated at run-time and \r\ncan access variables available from their deﬁnition context. Rules generated within \r\na rule scope are automatically retracted at the end of that scope. The technique is \r\nillustrated by means of several program tranformations: bound variable renaming, \r\nfunction inlining, and dead function elimination. ","lastpage":0,"type":"article","url":"http://researchr.org/publication/Visser01a","firstpage":0,"issuenumber":"4","journal":"Electr. Notes Theor. Comput. Sci.","id":"2ac5d88e-e63c-454a-a3a9-ba818d9c440c","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Scoped Dynamic Rewrite Rules","month":"","volumenumber":"59","year":"2001","note":"","key":"Visser01a","doi":"http://www.elsevier.nl/locate/entcs/volume59.html"},{"abstract":"We are concerned with languages in which the programmer has explicit control over the referencing environment of a name. Several modern programming languages, including Ada, Euclid, Mesa, and Modula, implement these control capabilities. This paper describes a simple technique which uses the traditional concepts of a hashed symbol table and lexical level to solve many of the symbol table implementation problems associated with explicit scope control. The primary ad-vantage of this technique is that a single symbol table abstraction can be used to simply and efficiently solve most problems in scope control.","lastpage":12,"type":"article","url":"http://researchr.org/publication/CookL83","firstpage":8,"issuenumber":"1","journal":"IEEE Trans. Software Eng.","id":"3a8e1b8f-64dd-4b7e-ae20-594fd58e71fc","authors":[{"alias":{"id":"b147f5e7-2b91-40a8-b993-7b324248114f","name":"Robert P. Cook","key":"robert-p.-cook","url":"http://researchr.org/alias/robert-p.-cook"}},{"alias":{"id":"718e86f3-74ec-4144-9871-9aed1fbde2e8","name":"Thomas J. LeBlanc","key":"thomas-j.-leblanc","url":"http://researchr.org/alias/thomas-j.-leblanc"}}],"title":"A Symbol Table Abstraction to Implement Languages with Explicit Scope Control","month":"","volumenumber":"9","year":"1983","note":"","key":"CookL83","doi":""},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":369,"booktitle":"Interactive Theorem Proving - Second International Conference, ITP 2011, Berg en Dal, The Netherlands, August 22-25, 2011. Proceedings","number":"","editors":[{"alias":{"id":"60f3419a-8c27-4f74-930f-e1a9b1f67b38","name":"Marko C. J. D. van Eekelen","key":"marko-c.-j.-d.-van-eekelen","url":"http://researchr.org/alias/marko-c.-j.-d.-van-eekelen"}},{"alias":{"id":"07114cd3-b278-4a45-a617-a45046bcacb6","name":"Herman Geuvers","key":"herman-geuvers","url":"http://researchr.org/alias/herman-geuvers"}},{"alias":{"id":"360ea9bc-a27d-4067-a919-1b6068ff083c","name":"Julien Schmaltz","key":"julien-schmaltz","url":"http://researchr.org/alias/julien-schmaltz"}},{"alias":{"id":"2ef046b6-83ff-4cef-b08b-94867fcf46fd","name":"Freek Wiedijk","key":"freek-wiedijk","url":"http://researchr.org/alias/freek-wiedijk"}}],"type":"inproceedings","url":"http://researchr.org/publication/OwensBNS11","firstpage":363,"publisher":"Springer","id":"3afadde8-9b7d-4111-b1f6-b72f2f696f66","authors":[{"alias":{"id":"b23d1370-aa76-4370-9928-c65e305f5a60","name":"Scott Owens","key":"scott-owens","url":"http://researchr.org/alias/scott-owens"}},{"alias":{"id":"01db9482-a9c3-4892-b35a-20129f1d10c5","name":"Peter Böhm","key":"peter-böhm","url":"http://researchr.org/alias/peter-b%C3%B6hm"}},{"alias":{"id":"11a6c0a9-0719-407b-b356-0b48a4113ecf","name":"Francesco Zappa Nardelli","key":"francesco-zappa-nardelli","url":"http://researchr.org/alias/francesco-zappa-nardelli"}},{"alias":{"id":"06b178b9-df56-4543-a785-739b90ee6bd9","name":"Peter Sewell","key":"peter-sewell","url":"http://researchr.org/alias/peter-sewell"}}],"title":"Lem: A Lightweight Tool for Heavyweight Semantics","organization":"","address":"","month":"","volume":"6898","year":"2011","conference":"itp","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-22863-6_27","key":"OwensBNS11"},{"abstract":"","lastpage":26,"type":"article","url":"http://researchr.org/publication/EkmanH07%3A1","firstpage":14,"issuenumber":"1-3","journal":"Sci. Comput. Program.","id":"3c4eeccb-cac6-4612-a88c-32501bf19d87","authors":[{"person":{"id":"182d076f-1981-401a-ade6-e441c37c1448","fullname":"Torbjörn Ekman","key":"torbjrnekman","url":"http://researchr.org/profile/torbjrnekman"},"alias":{"id":"b925f0fd-d511-4b6b-bc3f-322dc88a7e59","name":"Torbjörn Ekman","key":"torbjörn-ekman","url":"http://researchr.org/alias/torbj%C3%B6rn-ekman"}},{"person":{"id":"5d7d5fd9-c563-43af-a011-42970a398b45","fullname":"Görel Hedin","key":"grelhedin","url":"http://researchr.org/profile/grelhedin"},"alias":{"id":"da20f253-5a98-47ab-9955-f9dcf209d5b4","name":"Görel Hedin","key":"görel-hedin","url":"http://researchr.org/alias/g%C3%B6rel-hedin"}}],"title":"The JastAdd system - modular extensible compiler construction","month":"","volumenumber":"69","year":"2007","note":"","key":"EkmanH07:1","doi":"http://dx.doi.org/10.1016/j.scico.2007.02.003"},{"abstract":"","id":"3d8caf74-083e-49bc-84c5-417127c3893c","authors":[],"title":"Tutorials and Documentation for Xtext 2.0","month":"","year":"2011","url":"http://researchr.org/publication/xtext","note":"","doi":"","key":"xtext"},{"abstract":"Program compilers implement translations from the high-level language\r\nworld of programmers to the low-level world of hardware. A compiler\r\nreads program text written in a source language and translates it into\r\nan equivalent program written in a different target language. A\r\nstandard pipeline architecture for compiler construction consists of\r\nlexical analysis, syntax analysis, semantic analysis, translation and\r\ncode generation phases, with optional optimisation phases\r\ninterspersed. Support for the phases is provided by a symbol table\r\ncontaining properties of program entities. Some compiler phases can be\r\nautomatically generated from formal specifications.","series":"","booktitle":"Wiley Encyclopedia of Computer Science and Engineering","number":"","lastpage":0,"editors":[{"alias":{"id":"e68f5f04-9f22-4b02-86a3-1019659a25d9","name":"Benjamin W. Wah","key":"benjamin-w.-wah","url":"http://researchr.org/alias/benjamin-w.-wah"}}],"type":"inproceedings","url":"http://researchr.org/publication/reference-wiley-Sloane08","firstpage":0,"publisher":"John Wiley &amp; Sons, Inc.","id":"4121302a-a3cc-4529-8086-3369f5a1f550","authors":[{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"4cebde5d-1a0c-46b4-abdc-cd51b77b3c88","name":"Anthony M. Sloane","key":"anthony-m.-sloane","url":"http://researchr.org/alias/anthony-m.-sloane"}}],"title":"Program Compilers","organization":"","address":"","month":"","volume":"","year":"2008","note":"","doi":"http://dx.doi.org/10.1002/9780470050118.ecse559","key":"reference-wiley-Sloane08"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":337,"booktitle":"Foundations of Software Technology and Theoretical Computer Science, 15th Conference, Bangalore, India, December 18-20, 1995, Proceedings","number":"","editors":[{"alias":{"id":"c61d48bc-9aee-4e86-b23c-fd28b7ee7e94","name":"P. S. Thiagarajan","key":"p.-s.-thiagarajan","url":"http://researchr.org/alias/p.-s.-thiagarajan"}}],"type":"inproceedings","url":"http://researchr.org/publication/Odersky95","firstpage":324,"publisher":"Springer","id":"41a69793-d89c-460d-b505-58e30bb7a155","authors":[{"person":{"id":"f85bed9a-ff64-4608-b607-1d8cb84a1d4a","fullname":"Martin Odersky","key":"martinodersky","url":"http://researchr.org/profile/martinodersky"},"alias":{"id":"4a0a243e-c2c5-4bb8-b69e-6c245cd64e3b","name":"Martin Odersky","key":"martin-odersky","url":"http://researchr.org/alias/martin-odersky"}}],"title":"Polarized Name Passing","organization":"","address":"","month":"","volume":"1026","year":"1995","conference":"fsttcs","note":"","doi":"","key":"Odersky95"},{"abstract":"","lastpage":54,"type":"article","url":"http://researchr.org/publication/WykBGK10","firstpage":39,"issuenumber":"1-2","journal":"Sci. Comput. Program.","id":"425e5c33-646d-46f9-a8e0-71b4482f1b7b","authors":[{"alias":{"id":"a2b5cb8d-5bd0-4330-8551-0e8bb70f39a6","name":"Eric Van Wyk","key":"eric-van-wyk","url":"http://researchr.org/alias/eric-van-wyk"}},{"alias":{"id":"4e8264fb-b53e-4b95-8b91-ea61f95017d6","name":"Derek Bodin","key":"derek-bodin","url":"http://researchr.org/alias/derek-bodin"}},{"alias":{"id":"8518de8c-9b97-45df-9235-ad788f54b6e2","name":"Jimin Gao","key":"jimin-gao","url":"http://researchr.org/alias/jimin-gao"}},{"alias":{"id":"c715954e-a9e4-4851-96b4-0d200e5b4269","name":"Lijesh Krishnan","key":"lijesh-krishnan","url":"http://researchr.org/alias/lijesh-krishnan"}}],"title":"Silver: An extensible attribute grammar system","month":"","volumenumber":"75","year":"2010","note":"","key":"WykBGK10","doi":"http://dx.doi.org/10.1016/j.scico.2009.07.004"},{"abstract":"","lastpage":63,"type":"article","url":"http://researchr.org/publication/Klug91","firstpage":51,"issuenumber":"2","journal":"SIGPLAN Notices","id":"4a6bf3b2-9bcd-473a-bca4-845703dd6d0c","authors":[{"alias":{"id":"5ba9660e-43eb-42a2-8a4b-26f94c6e84ef","name":"Michael A. Klug","key":"michael-a.-klug","url":"http://researchr.org/alias/michael-a.-klug"}}],"title":"VisiCola, a model and a language for visibility control in programming languages","month":"","volumenumber":"26","year":"1991","note":"","key":"Klug91","doi":"http://doi.acm.org/10.1145/122179.122185"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":159,"booktitle":"Programming Languages and Systems, 18th European Symposium on Programming, ESOP 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, York, UK, March 22-29, 2009. Proceedings","number":"","editors":[{"alias":{"id":"b671853a-0da2-4fa0-8125-bd3d339e903a","name":"Giuseppe Castagna","key":"giuseppe-castagna","url":"http://researchr.org/alias/giuseppe-castagna"}}],"type":"inproceedings","url":"http://researchr.org/publication/SchaferEM09","firstpage":143,"publisher":"Springer","id":"4c5a0305-e5ea-445b-b070-03823704fae1","authors":[{"person":{"id":"5cecc9d6-ae90-4b14-9088-0a1d9ea93de6","fullname":"Max Schäfer","key":"maxschafer","url":"http://researchr.org/profile/maxschafer"},"alias":{"id":"f8e57539-b485-4d8f-aecc-7ae5dfa64013","name":"Max Schäfer","key":"max-schäfer","url":"http://researchr.org/alias/max-sch%C3%A4fer"}},{"person":{"id":"182d076f-1981-401a-ade6-e441c37c1448","fullname":"Torbjörn Ekman","key":"torbjrnekman","url":"http://researchr.org/profile/torbjrnekman"},"alias":{"id":"b925f0fd-d511-4b6b-bc3f-322dc88a7e59","name":"Torbjörn Ekman","key":"torbjörn-ekman","url":"http://researchr.org/alias/torbj%C3%B6rn-ekman"}},{"person":{"id":"5991e76d-b9a7-4b37-b08a-c72d4c05db58","fullname":"Oege de Moor","key":"oegedemoor","url":"http://researchr.org/profile/oegedemoor"},"alias":{"id":"23153e23-c6bd-434a-9197-e5b6c0d878fa","name":"Oege de Moor","key":"oege-de-moor","url":"http://researchr.org/alias/oege-de-moor"}}],"title":"Formalising and Verifying Reference Attribute Grammars in Coq","organization":"","address":"","month":"","volume":"5502","year":"2009","conference":"esop","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-00590-9_11","key":"SchaferEM09"},{"abstract":"Newer programming languages such as Modula and Euclid provide more control than traditional Algol-like\r\nlanguages such as ALGOL-60 and Pascal over the inheritance, in inner scopes, of named entities available in\r\nouter scopes. They also provide mechanisms whereby chosen entities from inner scopes may be made available to outer scopes. In this paper we show how a hashed symbol table can be organized to implement these new scope rules in a time and space efficient way.","conferenceYear":"","series":"","lastpage":57,"booktitle":"Proceedings of the 1979 SIGPLAN Symposium on Compiler Construction, Denver, Colorado, USA, August 6-10, 1979","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/GrahamJR79","firstpage":50,"publisher":"ACM","id":"51cd499d-7829-4ee1-a587-e6d1bb909637","authors":[{"alias":{"id":"91a89ded-557d-4536-b798-ea79c503c64c","name":"Susan L. Graham","key":"susan-l.-graham","url":"http://researchr.org/alias/susan-l.-graham"}},{"alias":{"id":"a6f7ee79-bf54-4c49-b8fa-272691ce2e4e","name":"William N. Joy","key":"william-n.-joy","url":"http://researchr.org/alias/william-n.-joy"}},{"alias":{"id":"fb519468-2f5f-48d0-81de-66ff6e19f514","name":"Olivier Roubine","key":"olivier-roubine","url":"http://researchr.org/alias/olivier-roubine"}}],"title":"Hashed symbol tables for languages with explicit scope control","organization":"","address":"","month":"","volume":"","year":"1979","conference":"sigplan","note":"","doi":"http://doi.acm.org/10.1145/800229.806953","key":"GrahamJR79"},{"abstract":"","conferenceYear":"","series":"","lastpage":122,"booktitle":"Proceedings of the 17th annual IEEE International Conference on Network Protocols, 2009. ICNP 2009, Princeton, NJ, USA, 13-16 October 2009","number":"","editors":[{"alias":{"id":"089936c2-e088-4d04-a801-d41a1784cb0a","name":"Henning Schulzrinne","key":"henning-schulzrinne","url":"http://researchr.org/alias/henning-schulzrinne"}},{"alias":{"id":"5144fed2-d1ed-4246-a90e-4fd9419df58a","name":"K. K. Ramakrishnan","key":"k.-k.-ramakrishnan","url":"http://researchr.org/alias/k.-k.-ramakrishnan"}},{"alias":{"id":"71a57e76-5a15-428b-91b9-19b5a433336c","name":"Timothy G. Griffin","key":"timothy-g.-griffin","url":"http://researchr.org/alias/timothy-g.-griffin"}},{"alias":{"id":"9af27d15-ff04-4089-9e4c-a20b23892dfa","name":"Srikanth V. Krishnamurthy","key":"srikanth-v.-krishnamurthy","url":"http://researchr.org/alias/srikanth-v.-krishnamurthy"}}],"type":"inproceedings","url":"http://researchr.org/publication/DeccioCSKM09","firstpage":113,"publisher":"IEEE Computer Society","id":"5338d26a-21e5-49ee-b304-aa7e1d20bd5e","authors":[{"alias":{"id":"a1780ce8-8c89-48d5-a03b-22183dfd61c4","name":"Casey T. Deccio","key":"casey-t.-deccio","url":"http://researchr.org/alias/casey-t.-deccio"}},{"alias":{"id":"887e75bd-a59a-49b5-bd9f-d6ab506c5982","name":"Chao-Chih Chen","key":"chao-chih-chen","url":"http://researchr.org/alias/chao-chih-chen"}},{"alias":{"id":"815d738d-90df-425e-a0a2-ac944c9a6c3d","name":"Jeff Sedayao","key":"jeff-sedayao","url":"http://researchr.org/alias/jeff-sedayao"}},{"alias":{"id":"0e4b6089-ad2d-4da3-bc56-b6dbfa76739d","name":"Krishna Kant","key":"krishna-kant","url":"http://researchr.org/alias/krishna-kant"}},{"alias":{"id":"ec5270f5-1907-4cdc-a2d3-123ce780ca51","name":"Prasant Mohapatra","key":"prasant-mohapatra","url":"http://researchr.org/alias/prasant-mohapatra"}}],"title":"Quality of Name Resolution in the Domain Name System","organization":"","address":"","month":"","volume":"","year":"2009","conference":"icnp","note":"","doi":"http://dx.doi.org/10.1109/ICNP.2009.5339693","key":"DeccioCSKM09"},{"abstract":"","id":"55f22161-2622-4069-8658-8aa76a90d194","authors":[{"alias":{"id":"54146312-8f4b-479e-8a9b-63dd5b26a5b2","name":"Jon Meyer","key":"jon-meyer","url":"http://researchr.org/alias/jon-meyer"}},{"alias":{"id":"8c389b9f-8014-454f-aec9-109cd011e509","name":"Troy Downing","key":"troy-downing","url":"http://researchr.org/alias/troy-downing"}}],"title":"Java Virtual Machine","month":"","year":"1997","url":"http://researchr.org/publication/MeyerD97","note":"","doi":"","key":"MeyerD97"},{"abstract":"Some type systems are first described formally, to be sometimes followed by an implementation. Other type systems are first implemented as language extensions, to be sometimes retrofitted with a formal description. In neither case it is an easy task to keep both artefacts consistent. In this paper we introduce Ruler, a domain specific language for describing type rules. Type rules can be incrementally described, thus providing a means for building complex type systems on top of simpler ones. Besides checking well-formedness of Ruler programs we use them to generate (1) a visual LATEX rendering, suitable for use in the presentation of formal aspects, and (2) an attribute grammar based implementation. Combining these two aspects in Ruler contributes to bridging the gap between theory and practice: mutually consistent representations can be generated for use in both theoretical and practical settings.","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":46,"booktitle":"Functional and Logic Programming, 8th International Symposium, FLOPS 2006, Fuji-Susono, Japan, April 24-26, 2006, Proceedings","number":"","editors":[{"alias":{"id":"a72db082-11fa-4623-a7f5-e36663008051","name":"Masami Hagiya","key":"masami-hagiya","url":"http://researchr.org/alias/masami-hagiya"}},{"person":{"id":"682828ae-306b-49ea-b847-6eda8680b7d9","fullname":"Philip Wadler","key":"philipwadler","url":"http://researchr.org/profile/philipwadler"},"alias":{"id":"f8c4f726-caec-4bcf-889d-86917caa1ede","name":"Philip Wadler","key":"philip-wadler","url":"http://researchr.org/alias/philip-wadler"}}],"type":"inproceedings","url":"http://researchr.org/publication/DijkstraS06","firstpage":30,"publisher":"Springer","id":"5a717144-66fc-493f-9f95-7b15fdd24160","authors":[{"alias":{"id":"068a1ee8-4a07-4713-a751-f6be956ed4e3","name":"Atze Dijkstra","key":"atze-dijkstra","url":"http://researchr.org/alias/atze-dijkstra"}},{"person":{"id":"13b6447e-b532-42b6-a3a9-94d2cc6cbee4","fullname":"S. Doaitse Swierstra","key":"doaitseswierstra","url":"http://researchr.org/profile/doaitseswierstra"},"alias":{"id":"881e8100-a8b3-48df-978b-864cdb42d400","name":"S. Doaitse Swierstra","key":"s.-doaitse-swierstra","url":"http://researchr.org/alias/s.-doaitse-swierstra"}}],"title":"Ruler: Programming Type Rules","organization":"","address":"","month":"","volume":"3945","year":"2006","conference":"flops","note":"","doi":"http://dx.doi.org/10.1007/11737414_4","key":"DijkstraS06"},{"abstract":"","lastpage":558,"type":"article","url":"http://researchr.org/publication/KastensW91","firstpage":539,"issuenumber":"6","journal":"Acta Inf.","id":"5c793f85-7934-48d1-9e60-6550942baf7f","authors":[{"alias":{"id":"908f6144-84ad-40f1-b519-5b5d115b59b6","name":"Uwe Kastens","key":"uwe-kastens","url":"http://researchr.org/alias/uwe-kastens"}},{"alias":{"id":"332ae189-be38-47a9-916e-6bc8cb8d6599","name":"William M. Waite","key":"william-m.-waite","url":"http://researchr.org/alias/william-m.-waite"}}],"title":"An Abstract Data Type for Name Analysis","month":"","volumenumber":"28","year":"1991","note":"","key":"KastensW91","doi":""},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":169,"booktitle":"ECOOP 2004 - Object-Oriented Programming, 18th European Conference, Oslo, Norway, June 14-18, 2004, Proceedings","number":"","editors":[{"person":{"id":"f85bed9a-ff64-4608-b607-1d8cb84a1d4a","fullname":"Martin Odersky","key":"martinodersky","url":"http://researchr.org/profile/martinodersky"},"alias":{"id":"4a0a243e-c2c5-4bb8-b69e-6c245cd64e3b","name":"Martin Odersky","key":"martin-odersky","url":"http://researchr.org/alias/martin-odersky"}}],"type":"inproceedings","url":"http://researchr.org/publication/EkmanH04","firstpage":144,"publisher":"Springer","id":"60ede493-a70f-4d00-9aa7-f7d2e1af446b","authors":[{"person":{"id":"182d076f-1981-401a-ade6-e441c37c1448","fullname":"Torbjörn Ekman","key":"torbjrnekman","url":"http://researchr.org/profile/torbjrnekman"},"alias":{"id":"b925f0fd-d511-4b6b-bc3f-322dc88a7e59","name":"Torbjörn Ekman","key":"torbjörn-ekman","url":"http://researchr.org/alias/torbj%C3%B6rn-ekman"}},{"person":{"id":"5d7d5fd9-c563-43af-a011-42970a398b45","fullname":"Görel Hedin","key":"grelhedin","url":"http://researchr.org/profile/grelhedin"},"alias":{"id":"da20f253-5a98-47ab-9955-f9dcf209d5b4","name":"Görel Hedin","key":"görel-hedin","url":"http://researchr.org/alias/g%C3%B6rel-hedin"}}],"title":"Rewritable Reference Attributed Grammars","organization":"","address":"","month":"","volume":"3086","year":"2004","conference":"ecoop","note":"","doi":"http://springerlink.metapress.com/openurl.asp?genre=article&amp;issn=0302-9743&amp;volume=3086&amp;spage=144","key":"EkmanH04"},{"abstract":"","id":"612a83d6-1503-49e0-9432-99fab2f75cb9","authors":[],"title":"Human Usable Textual Notation Specification","month":"","year":"2004","url":"http://researchr.org/publication/HUTN","note":"","doi":"","key":"HUTN"},{"abstract":"Presents the design of a symbol table library and addresses its design rationale. A symbol-processing task can be divided into two parts: one for storing/retrieving symbols, and the other for semantic checking. The former is language-independent and can be defined in terms of reusable components. The latter is language-dependent and can be defined in terms of parametric types of symbol table components or as specific semantic rules. We identify general properties of name analysis problems: topology, overload, navigation, etc. The resulting design of the library covers most usages in symbol processing","conferenceYear":"","series":"","booktitle":"TENCON '94. IEEE Region 10's Ninth Annual International Conference. Theme: Frontiers of Computer Technology. Proceedings of 1994","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/369182","firstpage":0,"publisher":"","id":"6212bfc6-5e99-4e14-be53-163c077822e2","authors":[{"alias":{"id":"d92a397d-b2f6-4654-82c6-86fc8928fa73","name":"Pei-Chi Wu","key":"pei-chi-wu","url":"http://researchr.org/alias/pei-chi-wu"}},{"alias":{"id":"c9059984-2233-460a-a3fb-b100d22ff0e5","name":"Jin-Hue Lin","key":"jin-hue-lin","url":"http://researchr.org/alias/jin-hue-lin"}},{"alias":{"id":"3ab98a25-d260-4921-94f4-0b2b36216acc","name":"Feng-Jian Wang","key":"feng-jian-wang","url":"http://researchr.org/alias/feng-jian-wang"}}],"title":"Designing a reusable symbol table library","organization":"","address":"","month":"aug","volume":"","year":"1994","conference":"TENCON '94","note":"","doi":"10.1109/TENCON.1994.369182","key":"369182"},{"abstract":"","conferenceYear":"","series":"","lastpage":194,"booktitle":"Proceedings of the 5th International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, 27-29 August 2003, Uppsala, Sweden","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/MiculanS03","firstpage":184,"publisher":"ACM","id":"67ff2c31-9c6e-494b-8065-0bc1bd21baef","authors":[{"alias":{"id":"56daec1c-c113-4a7d-b5a3-90c4bceab029","name":"Marino Miculan","key":"marino-miculan","url":"http://researchr.org/alias/marino-miculan"}},{"alias":{"id":"0ae1c29d-3cbc-458c-b2ee-ab50fcc01aa7","name":"Ivan Scagnetto","key":"ivan-scagnetto","url":"http://researchr.org/alias/ivan-scagnetto"}}],"title":"A framework for typed HOAS and semantics","organization":"","address":"","month":"","volume":"","year":"2003","conference":"ppdp","note":"","doi":"http://doi.acm.org/10.1145/888251.888269","key":"MiculanS03"},{"abstract":"The JastAdd Extensible Java Compiler is a high quality Java compiler that is easy to extend in order to build static analysis tools for Java, and to extend Java with new language constructs. It is built modularly, with a Java 1.4 compiler that is extended to a Java 5 compiler. Example applications that are built as extensions include an alternative backend that generates Jimple, an extension of Java with AspectJ constructs, and the implementation of a pluggable type system for non-null checking and inferenc.\r\n\r\nThe system is implemented using JastAdd, a declarative Java-like language. We describe the compiler architecture, the major design ideas for building and extending the compiler, in particular, for dealing with complex extensions that affect name and type analysis. Our extensible compiler compares very favorably concerning quality, speed and size with other extensible Java compiler frameworks. It also compares favorably in quality and size compared with traditional non-extensible Java compilers, and it runs within a factor of three compared to javac.","conferenceYear":"","series":"","lastpage":18,"booktitle":"Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2007, October 21-25, 2007, Montreal, Quebec, Canada","number":"","editors":[{"person":{"id":"0e0ba6ca-4df8-4120-80c9-5ba9d2875089","fullname":"Richard P. Gabriel","key":"richardpgabriel","url":"http://researchr.org/profile/richardpgabriel"},"alias":{"id":"6bd15e52-c9cb-4aac-af0e-1739547c8719","name":"Richard P. Gabriel","key":"richard-p.-gabriel","url":"http://researchr.org/alias/richard-p.-gabriel"}},{"person":{"id":"302fb13e-1232-49cb-8977-2632eb74b219","fullname":"David F. Bacon","key":"davidfbacon","url":"http://researchr.org/profile/davidfbacon"},"alias":{"id":"5b83173b-5c24-4ed2-9022-d34ee080cea8","name":"David F. Bacon","key":"david-f.-bacon","url":"http://researchr.org/alias/david-f.-bacon"}},{"person":{"id":"59a2d3a5-8c38-4bee-a335-d0518f11800f","fullname":"Cristina Videira  Lopes","key":"cristinavideiralopes","url":"http://researchr.org/profile/cristinavideiralopes"},"alias":{"id":"7e59d9ab-6822-40bf-8bc6-7a614a58ef35","name":"Cristina Videira Lopes","key":"cristina-videira-lopes","url":"http://researchr.org/alias/cristina-videira-lopes"}},{"person":{"id":"521f4ca8-aff9-4dde-a04f-d6fdfc3cce20","fullname":"Guy L. Steele Jr.","key":"guylsteelejr","url":"http://researchr.org/profile/guylsteelejr"},"alias":{"id":"e5207d8f-4185-478b-98f8-5fe43100ec0e","name":"Guy L. Steele Jr.","key":"guy-l.-steele-jr.","url":"http://researchr.org/alias/guy-l.-steele-jr."}}],"type":"inproceedings","url":"http://researchr.org/publication/EkmanH07","firstpage":1,"publisher":"ACM","id":"6a7e6676-de9d-4844-b74e-d4a41e800df8","authors":[{"person":{"id":"182d076f-1981-401a-ade6-e441c37c1448","fullname":"Torbjörn Ekman","key":"torbjrnekman","url":"http://researchr.org/profile/torbjrnekman"},"alias":{"id":"b925f0fd-d511-4b6b-bc3f-322dc88a7e59","name":"Torbjörn Ekman","key":"torbjörn-ekman","url":"http://researchr.org/alias/torbj%C3%B6rn-ekman"}},{"person":{"id":"5d7d5fd9-c563-43af-a011-42970a398b45","fullname":"Görel Hedin","key":"grelhedin","url":"http://researchr.org/profile/grelhedin"},"alias":{"id":"da20f253-5a98-47ab-9955-f9dcf209d5b4","name":"Görel Hedin","key":"görel-hedin","url":"http://researchr.org/alias/g%C3%B6rel-hedin"}}],"title":"The JastAdd extensible Java compiler","organization":"","address":"","month":"","volume":"","year":"2007","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1297027.1297029","key":"EkmanH07"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":224,"booktitle":"Generative Programming and Component Engineering: Third International Conference, GPCE 2004, Vancouver, Canada, October 24-28, 2004. Proceedings","number":"","editors":[{"person":{"id":"6df8c0c4-c00b-4914-8aeb-d9b80b9f06c8","fullname":"Gabor Karsai","key":"gaborkarsai","url":"http://researchr.org/profile/gaborkarsai"},"alias":{"id":"0f27230f-b798-4577-ba3e-aa09bcf23aec","name":"Gabor Karsai","key":"gabor-karsai","url":"http://researchr.org/alias/gabor-karsai"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"type":"inproceedings","url":"http://researchr.org/publication/AnconaM04%3A0","firstpage":206,"publisher":"Springer","id":"731adabc-adcd-4b1c-8621-0adde85330de","authors":[{"alias":{"id":"513fb951-f3b1-4b3e-b002-0b28974b2839","name":"Davide Ancona","key":"davide-ancona","url":"http://researchr.org/alias/davide-ancona"}},{"alias":{"id":"fe391a35-8844-4eb9-a9bd-8ef0d5bada8d","name":"Eugenio Moggi","key":"eugenio-moggi","url":"http://researchr.org/alias/eugenio-moggi"}}],"title":"A Fresh Calculus for Name Management","organization":"","address":"","month":"","volume":"3286","year":"2004","conference":"gpce","note":"","doi":"http://springerlink.metapress.com/openurl.asp?genre=article&amp;issn=0302-9743&amp;volume=3286&amp;spage=206","key":"AnconaM04:0"},{"abstract":"","id":"757d628f-4a4d-4795-a0cf-7ec0d4e00f5d","authors":[],"title":"Standard ECMA-334\r\nC# Language Specification\r\n4th edition","month":"","year":"2006","url":"http://researchr.org/publication/CSharpSpec2006","note":"","doi":"","key":"CSharpSpec2006"},{"abstract":"","lastpage":189,"type":"article","url":"http://researchr.org/publication/Ranta04","firstpage":145,"issuenumber":"2","journal":"J. Funct. Program.","id":"78083836-5c96-4ac4-a956-5e1c1f302980","authors":[{"alias":{"id":"6fec8fd2-5eee-47de-8181-9bb12c4e6adb","name":"Aarne Ranta","key":"aarne-ranta","url":"http://researchr.org/alias/aarne-ranta"}}],"title":"Grammatical Framework","month":"","volumenumber":"14","year":"2004","note":"","key":"Ranta04","doi":"http://dx.doi.org/10.1017/S0956796803004738"},{"abstract":"","lastpage":50,"type":"article","url":"http://researchr.org/publication/Klug96","firstpage":44,"issuenumber":"1","journal":"SIGPLAN Notices","id":"79156c83-51d2-43bc-bf20-10290ddd5809","authors":[{"alias":{"id":"5ba9660e-43eb-42a2-8a4b-26f94c6e84ef","name":"Michael A. Klug","key":"michael-a.-klug","url":"http://researchr.org/alias/michael-a.-klug"}}],"title":"Towards a Classification of Visibility Rules","month":"","volumenumber":"31","year":"1996","note":"","key":"Klug96","doi":""},{"abstract":"The term visibility control refers to the use of names in programming languages. A binding of a name and an entity results from a declaration. A binding is visible where the name can be used to reference the entity. The visibility rules of a language define how names may be used in that language, how to determine which declaration is denoted by a reference anywhere in a program, and the meaning of multiple declarations of the same name. <p>Existing approaches to modeling visibility rules are not powerful enough to model the wide variety of visibility features present in modern programming languages. The Inheritance Graph Model, presented in this dissertation, is a natural and general model of visibility that embodies the fundamental concepts of visibility. Because the Inheritance Graph Model is based on fundamental concepts, it is easy to represent the visibility structure of a wide variety of languages and visibility features in a straightforward manner. These fundamental concepts were developed on the basis of a comprehensive survey and analysis of the visibility features used in programming languages. <p>The visibility structure of a program is represented by an inheritance graph. A vertex in the graph represents a uniform referencing environment (a contour). Multiple visibility classes can be used to explicitly represent different kinds of visibility in the graph. An edge in the graph represents inheritance of visibility of bindings with a specific visibility class from one vertex to another. Inheritance of visibility of bindings via an edge can be restricted depending on attributes of each binding or on the program construct represented by the edge. A general mechanism for detecting errors and specifying shadowing of bindings declared in enclosing scopes is also provided. An implementation based on data flow analysis techniques can be generated automatically from a specification of the inheritance graph for a language. <p>The study of visibility features and their precise meanings exposed several subtle complexities in the visibility rules of popular languages. Among these is the requirement in Pascal that a declaration precede all references to the declaration. This requirement provides few benefits, and results in visibility rules that are difficult to understand, specify, and implement correctly.","id":"7ad725aa-dd3d-4dc8-8289-4e2d50af5e25","authors":[{"alias":{"id":"3d718b85-360e-4a96-a1a1-3728c5a809d2","name":"Garrison, Phillip Edward","key":"garrison,-phillip-edward","url":"http://researchr.org/alias/garrison%2C-phillip-edward"}}],"title":"Modeling and Implementation of Visibility in Programming Languages","month":"Dec","year":"1987","url":"http://researchr.org/publication/Garrison-CSD-88-400","note":"","doi":"","key":"Garrison-CSD-88-400"},{"abstract":"The implementation of real-world type checkers requires a nontrivial engineering effort. The resulting code easily comprises thousands of lines, which increases the probability of software defects\r\nin a component critical to compiler correctness. To make type\r\ncheckers easier to implement and extend, this paper presents Typi-\r\ncal, a domain-speciﬁc language and compiler that directly and concisely captures the structure of type systems. Our language builds\r\non the functional core for ML to represent syntax trees and types\r\nas variants and to traverse them with pattern matches. It then adds\r\ndeclarative constructs for common type checker concerns, such as\r\nscoping rules, namespaces, and constraints on types. It also integrates error checking and reporting with other constructs to promote comprehensive error management. We have validated our system with two real-world type checkers written in Typical, one for\r\nTypical itself and the other for C.","id":"7e25819f-7011-45a9-8408-c548d0a95ea7","authors":[{"person":{"id":"898c7f43-902c-4095-a156-68571211162e","fullname":"Robert Grimm","key":"robertgrimm","url":"http://researchr.org/profile/robertgrimm"},"alias":{"id":"239a026f-472c-4315-b3cf-46d6c22dcf98","name":"Robert Grimm","key":"robert-grimm","url":"http://researchr.org/alias/robert-grimm"}},{"alias":{"id":"f5c97ec8-a0d4-41db-9fac-e614e3c20d6a","name":" Laune Harris","key":"laune-harris","url":"http://researchr.org/alias/laune-harris"}},{"alias":{"id":"28a5f293-2b28-46ab-9401-6fec794a9999","name":"Anh Le","key":"anh-le","url":"http://researchr.org/alias/anh-le"}}],"title":"Typical: Taking the Tedium Out of Typing","month":"November","year":"2007","url":"http://researchr.org/publication/GrimmHarrisLe2007","note":"","doi":"","key":"GrimmHarrisLe2007"},{"abstract":"","lastpage":130,"type":"article","url":"http://researchr.org/publication/GrayLHSW92","firstpage":121,"issuenumber":"2","journal":"Commun. ACM","id":"7ff18eba-0e97-452d-b237-0f650a11b25b","authors":[{"alias":{"id":"50a282da-d88f-4908-8128-c69f3978d581","name":"Robert W. Gray","key":"robert-w.-gray","url":"http://researchr.org/alias/robert-w.-gray"}},{"alias":{"id":"bda147a8-3ca7-4337-9ccc-e1628ac462c6","name":"Steven P. Levi","key":"steven-p.-levi","url":"http://researchr.org/alias/steven-p.-levi"}},{"alias":{"id":"5138b915-584c-4144-91f0-a8fc82098b61","name":"Vincent P. Heuring","key":"vincent-p.-heuring","url":"http://researchr.org/alias/vincent-p.-heuring"}},{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"4cebde5d-1a0c-46b4-abdc-cd51b77b3c88","name":"Anthony M. Sloane","key":"anthony-m.-sloane","url":"http://researchr.org/alias/anthony-m.-sloane"}},{"alias":{"id":"332ae189-be38-47a9-916e-6bc8cb8d6599","name":"William M. Waite","key":"william-m.-waite","url":"http://researchr.org/alias/william-m.-waite"}}],"title":"ELI: A Complete, Flexible Compiler Construction System","month":"","volumenumber":"35","year":"1992","note":"","key":"GrayLHSW92","doi":""},{"abstract":"","lastpage":562,"type":"article","url":"http://researchr.org/publication/Odersky93","firstpage":535,"issuenumber":"3","journal":"ACM Trans. Program. Lang. Syst.","id":"83cc971e-f373-4cb3-a417-e43a24f31098","authors":[{"person":{"id":"f85bed9a-ff64-4608-b607-1d8cb84a1d4a","fullname":"Martin Odersky","key":"martinodersky","url":"http://researchr.org/profile/martinodersky"},"alias":{"id":"4a0a243e-c2c5-4bb8-b69e-6c245cd64e3b","name":"Martin Odersky","key":"martin-odersky","url":"http://researchr.org/alias/martin-odersky"}}],"title":"Defining Context-Dependent Syntax Without Using Contexts","month":"","volumenumber":"15","year":"1993","note":"","key":"Odersky93","doi":"http://doi.acm.org/10.1145/169683.174159"},{"abstract":"","lastpage":512,"type":"article","url":"http://researchr.org/publication/Dewhurst87-1","firstpage":503,"issuenumber":"8","journal":"Softw., Pract. Exper.","id":"8877825a-d992-4410-b535-da2679b9eea1","authors":[{"alias":{"id":"a173dad5-4fff-4a00-b0bd-941b7883ef98","name":"Stephen C. Dewhurst","key":"stephen-c.-dewhurst","url":"http://researchr.org/alias/stephen-c.-dewhurst"}}],"title":"Flexible Symbol Table Structures for Compiling C++","month":"","volumenumber":"17","year":"1987","note":"","key":"Dewhurst87-1","doi":""},{"abstract":"","conferenceYear":"","series":"","lastpage":74,"booktitle":"PLILP","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/Poetzsch-Heffter91","firstpage":63,"publisher":"","id":"8a63e53f-fd5d-4da0-895c-aeeab3ab285c","authors":[{"alias":{"id":"778804b3-d25a-4744-838b-53bf93d2815b","name":"Arnd Poetzsch-Heffter","key":"arnd-poetzsch-heffter","url":"http://researchr.org/alias/arnd-poetzsch-heffter"}}],"title":"Logic-Based Specification of Visibility Rules","organization":"","address":"","month":"","volume":"","year":"1991","conference":"plilp","note":"","doi":"","key":"Poetzsch-Heffter91"},{"abstract":"Attribute grammars are a powerful specification paradigm for many language processing tasks, particularly semantic analysis of programming languages. Recent attribute grammar systems use dynamic scheduling algorithms to evaluate attributes on demand. In this paper, we show how to remove the need for a generator, by embedding a dynamic approach in a modern, object-oriented and functional programming language. The result is a small, lightweight attribute grammar library that is part of our larger Kiama language processing library. Kiama\u2019s attribute grammar library supports a range of advanced features including cached, uncached, higher order, parameterised and circular attributes. Forwarding is available to modularise higher order attributes and decorators abstract away from the details of attribute value propagation. Kiama also implements new techniques for dynamic extension and variation of attribute equations. We use the Scala programming language because of its support for domain-specific notations and emphasis on scalability. Unlike generators with specialised notation, Kiama attribute grammars use standard Scala notations such as pattern-matching functions for equations, traits and mixins for composition and implicit parameters for forwarding. A benchmarking exercise shows that our approach is practical for realistic language processing.","lastpage":0,"type":"article","url":"http://researchr.org/publication/SloaneKV2012","firstpage":0,"issuenumber":"","journal":"Science of Computer Programming","id":"8e9096d8-af2f-4ea6-970f-b00e69993d4d","authors":[{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"4cebde5d-1a0c-46b4-abdc-cd51b77b3c88","name":"Anthony M. Sloane","key":"anthony-m.-sloane","url":"http://researchr.org/alias/anthony-m.-sloane"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"A pure embedding of attribute grammars","month":"","volumenumber":"","year":"2012","note":"Available online \\url{http://dx.doi.org/10.1016/j.scico.2011.11.005}","key":"SloaneKV2012","doi":"http://dx.doi.org/10.1016/j.scico.2011.11.005"},{"abstract":"A frequent dilemma in programming language design is the choice between a \r\nlanguage with a rich set of notations and a small simple core language. We \r\naddress this dilemma by proposing extensible grammars, a syntax definition \r\nformalism for incremental language extensions and restrictions. \r\n\r\nThe translation of programs written in rich object languages into a small \r\ncore language is defined via syntax-directed patterns. In contrast to macro- expansion and program-rewriting tools, our extensible grammars respect scoping \r\nrules. Therefore, we can introduce binding constructs while avoiding problems \r\nwith unwanted name clashes.\r\n\r\nWe develop extensible grammars and illustrate their use by extending the \r\nlambda calculus with let-bindings conditionals and constructs from database \r\nprogramming languages, such as SQL query expressions. We then give a formal \r\ndescription of the underlying rules for parsing transformation and substitution\r\nFinally, we sketch how these rules are exploited in an implementation of a \r\ngeneric, extensible parser package.","id":"8ea4f9e8-0577-428a-84c1-7b419252c195","authors":[{"person":{"id":"f2e13560-0f6e-4432-ba37-c64ea9b133c4","fullname":"Luca Cardelli","key":"lucacardelli","url":"http://researchr.org/profile/lucacardelli"},"alias":{"id":"13b2a84e-5921-4883-aebe-50a8e3e5cc30","name":"Luca Cardelli","key":"luca-cardelli","url":"http://researchr.org/alias/luca-cardelli"}},{"alias":{"id":"0d9dba25-844f-4961-a53a-759e4edf1a5e","name":"Florian Matthes","key":"florian-matthes","url":"http://researchr.org/alias/florian-matthes"}},{"alias":{"id":"76d17890-3106-4416-bdc6-ee889da43860","name":"Martín Abadi","key":"martín-abadi","url":"http://researchr.org/alias/mart%C3%ADn-abadi"}}],"title":"Extensible syntax with lexical scoping","month":"February","year":"1994","url":"http://researchr.org/publication/CardelliMA94","note":"","doi":"http://lucacardelli.name/Papers/SRC-121.ps","key":"CardelliMA94"},{"abstract":"The applicability of term rewriting to program transformation is limited by the lack of control over rule application and by the context-free nature of rewrite rules. The first problem is addressed by languages supporting user-definable rewriting strategies. The second problem is addressed by the extension of rewriting strategies with scoped dynamic rewrite rules. Dynamic rules are defined at run-time and can access variables available from their definition context. Rules defined within a rule scope are automatically retracted at the end of that scope. In this paper, we explore the design space of dynamic rules, and their application to transformation problems. The technique is formally defined by extending the operational semantics underlying the program transformation language Stratego, and illustrated by means of several program transformations in Stratego, including constant propagation, bound variable renaming, dead code elimination, function inlining, and function specialization. ","lastpage":178,"type":"article","url":"http://researchr.org/publication/BravenboerDOV06","firstpage":123,"issuenumber":"1-2","journal":"Fundam. Inform.","id":"90951569-3d14-4aec-b74b-30451d86f939","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"7e90e182-d469-41cf-860f-282829bca0fc","fullname":"Arthur van Dam","key":"arthurvandam","url":"http://researchr.org/profile/arthurvandam"},"alias":{"id":"b50e21c9-3399-4469-8743-faeb6995f6a9","name":"Arthur van Dam","key":"arthur-van-dam","url":"http://researchr.org/alias/arthur-van-dam"}},{"person":{"id":"3a540653-1069-400e-93e1-051060c87ab1","fullname":"Karina Olmos","key":"karinaolmos","url":"http://researchr.org/profile/karinaolmos"},"alias":{"id":"8e6fdae1-9b09-4e01-8a08-f1ac76e40742","name":"Karina Olmos","key":"karina-olmos","url":"http://researchr.org/alias/karina-olmos"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Program Transformation with Scoped Dynamic Rewrite Rules","month":"","volumenumber":"69","year":"2006","note":"","key":"BravenboerDOV06","doi":"http://iospress.metapress.com/openurl.asp?genre=article&amp;issn=0169-2968&amp;volume=69&amp;issue=1&amp;spage=123"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":297,"booktitle":"Compiler Construction, 7th International Conference, CC 98, Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS 98, Lisbon, Portugal, March 28 - April 4, 1998, Proceedings","number":"","editors":[{"alias":{"id":"4643efb7-036e-4725-b71e-c8ddf3dee2d6","name":"Kai Koskimies","key":"kai-koskimies","url":"http://researchr.org/alias/kai-koskimies"}}],"type":"inproceedings","url":"http://researchr.org/publication/KastensPJ98","firstpage":294,"publisher":"Springer","id":"9479b70d-1ff8-4423-ad07-adcc36add160","authors":[{"alias":{"id":"908f6144-84ad-40f1-b519-5b5d115b59b6","name":"Uwe Kastens","key":"uwe-kastens","url":"http://researchr.org/alias/uwe-kastens"}},{"alias":{"id":"4e80a551-2241-49e2-9dec-160c14a0cb15","name":"Peter Pfahler","key":"peter-pfahler","url":"http://researchr.org/alias/peter-pfahler"}},{"alias":{"id":"f7457bfd-2f25-48e6-8708-6b6d653ef6f0","name":"Matthias T. Jung","key":"matthias-t.-jung","url":"http://researchr.org/alias/matthias-t.-jung"}}],"title":"The Eli System","organization":"","address":"","month":"","volume":"1383","year":"1998","conference":"cc","note":"","doi":"","key":"KastensPJ98"},{"abstract":"","lastpage":772,"type":"article","url":"http://researchr.org/publication/Poetzsch-Heffter97","firstpage":737,"issuenumber":"10","journal":"Acta Inf.","id":"9984771b-ffcb-45ef-ad0b-c31576473507","authors":[{"alias":{"id":"778804b3-d25a-4744-838b-53bf93d2815b","name":"Arnd Poetzsch-Heffter","key":"arnd-poetzsch-heffter","url":"http://researchr.org/alias/arnd-poetzsch-heffter"}}],"title":"Prototyping Realistic Programming Languages Based on Formal Specifications","month":"","volumenumber":"34","year":"1997","note":"","key":"Poetzsch-Heffter97","doi":"http://link.springer.de/link/service/journals/00236/bibs/7034010/70340737.htm"},{"abstract":"","conferenceYear":"","series":"","lastpage":19,"booktitle":"ALGOL 68 Implementation: Proceedings of the IFIP Working Conference on ALGOL 68 Implementation, Munich, Germany, July 20-24, 1970","number":"","editors":[{"alias":{"id":"211c0a6b-ed59-42d0-9972-b2ed82b3fcc5","name":"J. E. L. Peck","key":"j.-e.-l.-peck","url":"http://researchr.org/alias/j.-e.-l.-peck"}}],"type":"inproceedings","url":"http://researchr.org/publication/Bowlden70","firstpage":1,"publisher":"North-Holland","id":"9bbb8e30-2dac-431a-ac8c-7ac94e0c0493","authors":[{"alias":{"id":"0f2c6314-a539-45cf-a7c7-fa9b5ce1d32b","name":"Henry J. Bowlden","key":"henry-j.-bowlden","url":"http://researchr.org/alias/henry-j.-bowlden"}}],"title":"A Symbol Table with Scope Recognition for the B-6500","organization":"","address":"","month":"","volume":"","year":"1970","conference":"algol","note":"","doi":"","key":"Bowlden70"},{"abstract":"","lastpage":50,"type":"article","url":"http://researchr.org/publication/Klug94","firstpage":44,"issuenumber":"9","journal":"SIGPLAN Notices","id":"9c799ed4-faf9-425e-b11a-e0258def72b2","authors":[{"alias":{"id":"5ba9660e-43eb-42a2-8a4b-26f94c6e84ef","name":"Michael A. Klug","key":"michael-a.-klug","url":"http://researchr.org/alias/michael-a.-klug"}}],"title":"Basic operations of the VisiCola scope model","month":"","volumenumber":"29","year":"1994","note":"","key":"Klug94","doi":"http://doi.acm.org/10.1145/185009.185018"},{"abstract":"","conferenceYear":"","series":"","lastpage":76,"booktitle":"Proceedings of the APL-Berlin-2000 Conference: Think Arrays in a Great City, APL 2000, Berlin, Germany, July 24-27, 2000","number":"","editors":[{"alias":{"id":"5b4b4738-95ab-44ac-bf26-f679fcab5603","name":"Dieter Lattermann","key":"dieter-lattermann","url":"http://researchr.org/alias/dieter-lattermann"}},{"alias":{"id":"0df15086-8b2f-4a80-b121-ba81bbe3ad3e","name":"Dieter Kilsch","key":"dieter-kilsch","url":"http://researchr.org/alias/dieter-kilsch"}}],"type":"inproceedings","url":"http://researchr.org/publication/Ching00","firstpage":69,"publisher":"ACM","id":"9d513010-5dbf-44e4-913d-dce268514cd4","authors":[{"alias":{"id":"c0b8e13f-6eec-4429-88da-b62157b2a629","name":"Wai-Mee Ching","key":"wai-mee-ching","url":"http://researchr.org/alias/wai-mee-ching"}}],"title":"The design and implementation of an APL dialect, ELI","organization":"","address":"","month":"","volume":"","year":"2000","conference":"apl","note":"","doi":"http://doi.acm.org/10.1145/570475.570485","key":"Ching00"},{"abstract":"Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable transformation components, and tools for generating such components from declarative specifications. Complete program transformation systems are composed from these components.","lastpage":70,"type":"article","url":"http://researchr.org/publication/BravenboerKVV08","firstpage":52,"issuenumber":"1-2","journal":"Sci. Comput. Program.","id":"a6da54f9-956a-4574-854c-6f0f3aee1618","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f6aa2423-57ab-44c6-909c-dd1d19dfbe85","fullname":"Rob Vermaas","key":"robvermaas","url":"http://researchr.org/profile/robvermaas"},"alias":{"id":"6a38d57e-6acc-4105-be50-25e9b31b00fa","name":"Rob Vermaas","key":"rob-vermaas","url":"http://researchr.org/alias/rob-vermaas"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Stratego/XT 0.17. A language and toolset for program transformation","month":"","volumenumber":"72","year":"2008","note":"","key":"BravenboerKVV08","doi":"http://dx.doi.org/10.1016/j.scico.2007.11.003"},{"abstract":"\"Meaning\" may be assigned to a string in a context-free language by defining attributes of the symbols in a derivation tree for that string. The attributes can be defined by functions associated with each production in the grammar. This paper examines the implications of this process when some of the attributes are synthesized, i.e., defined solely in terms of attributes of thedescendants of the corresponding nonterminal symbol, while other attributes are inherited, i.e., defined in terms of attributes of theancestors of the nonterminal symbol. An algorithm is given which detects when such semantic rules could possibly lead to circular definition of some attributes. An example is given of a simple programming language defined with both inherited and synthesized attributes, and the method of definition is compared to other techniques for formal specification of semantics which have appeared in the literature.","lastpage":145,"type":"article","url":"http://researchr.org/publication/Knuth68","firstpage":127,"issuenumber":"2","journal":"Mathematical Systems Theory","id":"a94cd405-4f0c-44f1-be18-0038c981218e","authors":[{"alias":{"id":"3398c876-eed8-4596-aaee-1c3a082d1c09","name":"Donald E. Knuth","key":"donald-e.-knuth","url":"http://researchr.org/alias/donald-e.-knuth"}}],"title":"Semantics of Context-Free Languages","month":"","volumenumber":"2","year":"1968","note":"","key":"Knuth68","doi":"http://www.springerlink.com/content/m2501m07m4666813/"},{"abstract":"","conferenceYear":"","series":"","lastpage":40,"booktitle":"Proceedings of the 25th Annual IEEE Symposium on Logic in Computer Science, LICS 2010, 11-14 July 2010, Edinburgh, United Kingdom","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/PopescuGO10","firstpage":31,"publisher":"IEEE Computer Society","id":"a9e80c72-aa67-4b70-813f-5641f56b6960","authors":[{"alias":{"id":"98752fd5-1180-464a-9c42-dfcd2b9b5533","name":"Andrei Popescu","key":"andrei-popescu","url":"http://researchr.org/alias/andrei-popescu"}},{"alias":{"id":"fd7c6424-7b4e-455f-a350-dac1be5c9e02","name":"Elsa L. Gunter","key":"elsa-l.-gunter","url":"http://researchr.org/alias/elsa-l.-gunter"}},{"alias":{"id":"8b033cfd-cfb1-4f72-aebc-37ea61e56707","name":"Christopher J. Osborn","key":"christopher-j.-osborn","url":"http://researchr.org/alias/christopher-j.-osborn"}}],"title":"Strong Normalization for System F by HOAS on Top of FOAS","organization":"","address":"","month":"","volume":"","year":"2010","conference":"lics","note":"","doi":"http://doi.ieeecomputersociety.org/10.1109/LICS.2010.48","key":"PopescuGO10"},{"abstract":"","lastpage":434,"type":"article","url":"http://researchr.org/publication/RosuS10","firstpage":397,"issuenumber":"6","journal":"J. Log. Algebr. Program.","id":"af46c007-5806-446b-b557-168d8db1aca8","authors":[{"person":{"id":"45cef4b6-849f-433c-8bac-a06eeed6f184","fullname":"Grigore Rosu","key":"grigorerosu","url":"http://researchr.org/profile/grigorerosu"},"alias":{"id":"00d462c8-7af9-47c9-8b8f-6657115f3cf7","name":"Grigore Rosu","key":"grigore-rosu","url":"http://researchr.org/alias/grigore-rosu"}},{"alias":{"id":"9b308dfd-fec1-4b91-b7b0-42c2106e6e9f","name":"Traian-Florin Serbanuta","key":"traian-florin-serbanuta","url":"http://researchr.org/alias/traian-florin-serbanuta"}}],"title":"An overview of the K semantic framework","month":"","volumenumber":"79","year":"2010","note":"","key":"RosuS10","doi":"http://dx.doi.org/10.1016/j.jlap.2010.03.012"},{"abstract":"","conferenceYear":"2006","series":"","booktitle":"Workshop on Modeling Symposium at Eclipse Summit","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/EfftingeVoelter2006","firstpage":0,"publisher":"","id":"b1afde62-a3f0-49ed-8a39-23666e655909","authors":[{"alias":{"id":"760f2767-79d9-4433-8f0e-886dcca52e74","name":"Sven Efftinge","key":"sven-efftinge","url":"http://researchr.org/alias/sven-efftinge"}},{"person":{"id":"d0507709-858d-4c99-9af3-97f51623b905","fullname":"Markus Völter","key":"markusvoelter","url":"http://researchr.org/profile/markusvoelter"},"alias":{"id":"dd9460cc-2993-4497-9148-9e82a9e0bd75","name":"Markus Voelter","key":"markus-voelter","url":"http://researchr.org/alias/markus-voelter"}}],"title":"oAW xText: A framework for textual DSLs","organization":"","address":"","month":"","volume":"","year":"2006","conference":"","note":"","doi":"","key":"EfftingeVoelter2006"},{"abstract":"","lastpage":74,"type":"article","url":"http://researchr.org/publication/Schnorf91","firstpage":63,"issuenumber":"2","journal":"Structured Programming","id":"b41efe48-b4ee-44dd-a1b3-58b80c88db41","authors":[{"alias":{"id":"4750d1d6-7b3f-4396-a4fa-23706d5cc10d","name":"Peter Schnorf","key":"peter-schnorf","url":"http://researchr.org/alias/peter-schnorf"}}],"title":"Design of a Reusable Symbol Table Abstraction","month":"","volumenumber":"12","year":"1991","note":"","key":"Schnorf91","doi":""},{"abstract":"In textual software languages, names are used to reference elements like variables, methods, classes, etc. Name resolution analyses these names in order to establish references between definition and use sites of elements. In this paper, we identify recurring patterns for name bindings in programming languages and introduce a declarative metalanguage for the specification of name bindings in terms of namespaces, definition sites, use sites, and scopes. Based on such declarative name binding specifications, we provide a language-parametric algorithm for static name resolution during compile-time. We discuss the integration of the algorithm into the Spoofax Language Workbench and show how its results can be employed in semantic editor services like reference resolution, constraint checking, and content completion.","conferenceYear":"2012","series":"Lecture Notes in Computer Science","lastpage":331,"booktitle":"Software Language Engineering, 5th International Conference, SLE 2012, Dresden, Germany, September 26-28, 2012, Revised Selected Papers","number":"","editors":[{"person":{"id":"f8475ad2-6a3b-4cd6-9986-5a1ede62a0ae","fullname":"Krzysztof Czarnecki","key":"krzysztofczarnecki","url":"http://researchr.org/profile/krzysztofczarnecki"},"alias":{"id":"90e6b89e-5d7d-45cb-9b0d-c81157867ce4","name":"Czarnecki","key":"czarnecki","url":"http://researchr.org/alias/czarnecki"}},{"person":{"id":"5d7d5fd9-c563-43af-a011-42970a398b45","fullname":"Görel Hedin","key":"grelhedin","url":"http://researchr.org/profile/grelhedin"},"alias":{"id":"da20f253-5a98-47ab-9955-f9dcf209d5b4","name":"Görel Hedin","key":"görel-hedin","url":"http://researchr.org/alias/g%C3%B6rel-hedin"}}],"type":"inproceedings","url":"http://researchr.org/publication/KonatKWV13","firstpage":311,"publisher":"Springer","id":"b6f7debb-176c-49ac-bee5-debe6396f974","authors":[{"person":{"id":"a497348b-9ba2-4f94-8859-8dfccb46ff48","fullname":"Gabriël D. P. Konat","key":"gabrielkonat","url":"http://researchr.org/profile/gabrielkonat"},"alias":{"id":"7be69c7e-6700-4818-8c23-f129788c3eef","name":"Gabriël Konat","key":"gabriël-konat","url":"http://researchr.org/alias/gabri%C3%ABl-konat"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"d5ff2ef2-75d4-4ac7-847f-098d645baf0e","name":"Guido Wachsmuth","key":"guido-wachsmuth","url":"http://researchr.org/alias/guido-wachsmuth"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Declarative Name Binding and Scope Rules ","organization":"","address":"","month":"","volume":"7745","year":"2013","conference":"SLE","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-36089-3_18","key":"KonatKWV13"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":72,"booktitle":"Advanced Functional Programming, 5th International School, AFP 2004, Tartu, Estonia, August 14-21, 2004, Revised Lectures","number":"","editors":[{"alias":{"id":"45f48daf-ac29-44d0-a9b9-e50bd3261698","name":"Varmo Vene","key":"varmo-vene","url":"http://researchr.org/alias/varmo-vene"}},{"alias":{"id":"4c7a8274-6b1d-4aa7-8dc0-461377c95130","name":"Tarmo Uustalu","key":"tarmo-uustalu","url":"http://researchr.org/alias/tarmo-uustalu"}}],"type":"inproceedings","url":"http://researchr.org/publication/DijkstraS04","firstpage":1,"publisher":"Springer","id":"b83dd639-d23a-4a1b-b39b-9c54db5589ef","authors":[{"alias":{"id":"068a1ee8-4a07-4713-a751-f6be956ed4e3","name":"Atze Dijkstra","key":"atze-dijkstra","url":"http://researchr.org/alias/atze-dijkstra"}},{"person":{"id":"13b6447e-b532-42b6-a3a9-94d2cc6cbee4","fullname":"S. Doaitse Swierstra","key":"doaitseswierstra","url":"http://researchr.org/profile/doaitseswierstra"},"alias":{"id":"881e8100-a8b3-48df-978b-864cdb42d400","name":"S. Doaitse Swierstra","key":"s.-doaitse-swierstra","url":"http://researchr.org/alias/s.-doaitse-swierstra"}}],"title":"Typing Haskell with an Attribute Grammar","organization":"","address":"","month":"","volume":"3622","year":"2004","conference":"afp","note":"","doi":"http://dx.doi.org/10.1007/11546382_1","key":"DijkstraS04"},{"abstract":"","lastpage":331,"type":"article","url":"http://researchr.org/publication/RusinolLS10","firstpage":321,"issuenumber":"3","journal":"Pattern Anal. Appl.","id":"bd9d797f-c81c-4259-b7f5-daaeb7b765b1","authors":[{"alias":{"id":"67e9c3c4-5306-4e6f-a61e-b60cb2d9911d","name":"Marçal Rusiñol","key":"marçal-rusiñol","url":"http://researchr.org/alias/mar%C3%A7al-rusi%C3%B1ol"}},{"alias":{"id":"662fe373-8369-4fc6-8bae-6801636df4ff","name":"Josep Lladós","key":"josep-lladós","url":"http://researchr.org/alias/josep-llad%C3%B3s"}},{"alias":{"id":"a1683a7b-f99c-495d-acd2-725a6bc352cb","name":"Gemma Sánchez","key":"gemma-sánchez","url":"http://researchr.org/alias/gemma-s%C3%A1nchez"}}],"title":"Symbol spotting in vectorized technical drawings through a lookup table of region strings","month":"","volumenumber":"13","year":"2010","note":"","key":"RusinolLS10","doi":"http://dx.doi.org/10.1007/s10044-009-0161-2"},{"abstract":"The central task of symbol table administration is identification of all identifiers used in the source program under consideration of visibility rules varying between the different programming languages. Usually this problem is handled by a hash search of the identifier and an additional decision about the visibility of this identifier in the current program region (\"scoping problem\"). The most used solution for the scoping problem is scope-dependent switching of hash links in such a way that only such identifier indeed visible in this region are reachable by the hashing process.\r\n\r\nThe new approach handles the scoping problem by visibility sets defined for every program region, and additionally by overload resolution tables for multiple used identifier names. The result is constant decision time for the scoping problem (at latest) after the first access to an identifier in a program region. The algorithm is very simple so that the access time is not only (nearly) constant but also very small. The approach permits an efficient solution of all the scoping problems of contemporary programming\r\nlanguages such as MODULA-2, C, or Fonran90.","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":71,"booktitle":"Compiler Construction, 4th International Conference on Compiler Construction, CC 92, Paderborn, Germany, October 5-7, 1992, Proceedings","number":"","editors":[{"alias":{"id":"908f6144-84ad-40f1-b519-5b5d115b59b6","name":"Uwe Kastens","key":"uwe-kastens","url":"http://researchr.org/alias/uwe-kastens"}},{"alias":{"id":"4e80a551-2241-49e2-9dec-160c14a0cb15","name":"Peter Pfahler","key":"peter-pfahler","url":"http://researchr.org/alias/peter-pfahler"}}],"type":"inproceedings","url":"http://researchr.org/publication/Assmann92%3A0","firstpage":66,"publisher":"Springer","id":"bfd526d5-4191-43e9-9c28-435f60ae06ec","authors":[{"alias":{"id":"2b93020c-0f00-4246-9a97-f638d307c47e","name":"Werner Aßmann","key":"werner-aßmann","url":"http://researchr.org/alias/werner-a%C3%9Fmann"}}],"title":"Another Solution of Scoping Problems in Symbol Tables","organization":"","address":"","month":"","volume":"641","year":"1992","conference":"cc","note":"","doi":"","key":"Assmann92:0"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":41,"booktitle":"Software Language Engineering - Third International Conference, SLE 2010, Eindhoven, The Netherlands, October 12-13, 2010, Revised Selected Papers","number":"","editors":[{"alias":{"id":"eaa0d610-b519-42c8-9cdd-ddbd308e27b1","name":"Brian A. Malloy","key":"brian-a.-malloy","url":"http://researchr.org/alias/brian-a.-malloy"}},{"alias":{"id":"38c08b6b-f450-4293-9d46-4ca937072e67","name":"Steffen Staab","key":"steffen-staab","url":"http://researchr.org/alias/steffen-staab"}},{"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}}],"type":"inproceedings","url":"http://researchr.org/publication/BurgerKWA10","firstpage":22,"publisher":"Springer","id":"c033a77a-5f91-4453-8327-99664601a586","authors":[{"alias":{"id":"05918e67-f55e-4944-bb56-5bb88248a81c","name":"Christoff Bürger","key":"christoff-bürger","url":"http://researchr.org/alias/christoff-b%C3%BCrger"}},{"alias":{"id":"92db91a6-c213-485c-a87d-8daf84cb1264","name":"Sven Karol","key":"sven-karol","url":"http://researchr.org/alias/sven-karol"}},{"alias":{"id":"2c4f841e-404c-45ca-9272-56edfe901ac4","name":"Christian Wende","key":"christian-wende","url":"http://researchr.org/alias/christian-wende"}},{"alias":{"id":"3ae0533a-54bf-47a7-81ec-1ca854224275","name":"Uwe Aßmann","key":"uwe-aßmann","url":"http://researchr.org/alias/uwe-a%C3%9Fmann"}}],"title":"Reference Attribute Grammars for Metamodel Semantics","organization":"","address":"","month":"","volume":"6563","year":"2010","conference":"sle","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-19440-5_3","key":"BurgerKWA10"},{"abstract":"","conferenceYear":"","series":"","lastpage":274,"booktitle":"Proceedings of the Eighth ACM SIGPLAN International Conference on Functional Programming, ICFP 2003, Uppsala, Sweden, August 25-29, 2003","number":"","editors":[{"alias":{"id":"f2f07369-c5a0-4e0b-bdf2-5ad391dc485c","name":"Colin Runciman","key":"colin-runciman","url":"http://researchr.org/alias/colin-runciman"}},{"alias":{"id":"8de4dbc5-65cd-4e48-8f69-ba5e1af00cfc","name":"Olin Shivers","key":"olin-shivers","url":"http://researchr.org/alias/olin-shivers"}}],"type":"inproceedings","url":"http://researchr.org/publication/ShinwellPG03","firstpage":263,"publisher":"ACM","id":"c35a2714-ca01-4f13-bc73-75e6b00091c5","authors":[{"alias":{"id":"175e09fc-99bc-4b8e-b7d8-bbfc45635a81","name":"Mark R. Shinwell","key":"mark-r.-shinwell","url":"http://researchr.org/alias/mark-r.-shinwell"}},{"alias":{"id":"780757eb-48b7-49cf-8baf-2607193dc69b","name":"Andrew M. Pitts","key":"andrew-m.-pitts","url":"http://researchr.org/alias/andrew-m.-pitts"}},{"alias":{"id":"2cc8fb3b-ab35-4631-933b-998433609864","name":"Murdoch Gabbay","key":"murdoch-gabbay","url":"http://researchr.org/alias/murdoch-gabbay"}}],"title":"FreshML: programming with binders made simple","organization":"","address":"","month":"","volume":"","year":"2003","conference":"icfp","note":"","doi":"http://doi.acm.org/10.1145/944705.944729","key":"ShinwellPG03"},{"abstract":"","lastpage":255,"type":"article","url":"http://researchr.org/publication/Paakki95","firstpage":196,"issuenumber":"2","journal":"ACM Comput. Surv.","id":"c6071f2e-4e1a-49c1-9e85-09cbc47846f3","authors":[{"alias":{"id":"04034829-8bad-454f-a927-82c67e3a8b68","name":"Jukka Paakki","key":"jukka-paakki","url":"http://researchr.org/alias/jukka-paakki"}}],"title":"Attribute Grammar Paradigms - A High-Level Methodology in Language Implementation","month":"","volumenumber":"27","year":"1995","note":"","key":"Paakki95","doi":""},{"abstract":"","id":"c6c12be1-cfa5-482d-9ad7-56c6676b0faf","authors":[],"title":"Object Constraint Language","month":"","year":"2012","url":"http://researchr.org/publication/OCL2012","note":"","doi":"","key":"OCL2012"},{"abstract":"We approach the general problem of representing higher-order languages, that are\r\nusually equipped with special variable binding constructs, in a less specialized ﬁrstorder framework such as membership equational logic and the corresponding version\r\nof rewriting logic. The solution we propose is based on CINNI, a new calculus of\r\nexplicit substitutions that makes use of a term representation that contains both\r\nthe standard named notation and de Bruijn\u2019s indexed notation as special subcases.\r\nThe calculus is parametric in the syntax of the object language, which allows us to\r\napply it to diﬀerent object languages such as λ-calculus, Abadi and Cardelli\u2019s object\r\ncalculus (ς-calculus) and Milner\u2019s calculus of communicating mobile processes (π-\r\ncalculus). As a practical result we obtain executable formal representations of these\r\nobject languages in Maude with a representational distance close to zero.","lastpage":0,"type":"article","url":"http://researchr.org/publication/Stehr00","firstpage":0,"issuenumber":"","journal":"Electr. Notes Theor. Comput. Sci.","id":"d14fabd7-3b9a-434e-8186-0dbda277677c","authors":[{"alias":{"id":"70393862-e612-4219-8e3c-0f89833041e5","name":"Mark-Oliver Stehr","key":"mark-oliver-stehr","url":"http://researchr.org/alias/mark-oliver-stehr"}}],"title":"CINNI - A Generic Calculus of Explicit Substitutions and its Application to lambda-, varsigma- and pi- Calculi","month":"","volumenumber":"36","year":"2000","note":"","key":"Stehr00","doi":"http://www.elsevier.com/gej-ng/31/29/23/71/22/show/Products/notes/index.htt#006"},{"abstract":"Whether there is an (emerging or legacy) Domain-Specific\r\nLanguage to increase the expressiveness of your coworkers\r\nor whether you are about to invent a new General Purpose\r\nPrgramming Language: Tool support that goes beyond a\r\nparser/compiler is essential to make other people adopt your\r\nlanguage and to be more productive. Xtext is an award-\r\nwinning framework to build such tooling.\r\n\r\nIn this tutorial we explain how to define a language and\r\na statically typed, EMF-based Abstract Syntax Tree using\r\nonly a grammar. We then generate a parser, a serializer and\r\na smart editor from it. The editor provides many features\r\nout-of-the-box, such as syntax highlighting, content-assist,\r\nfolding, jump-to-declaration and reverse-reference lookup\r\nacross multiple files. Then, it is shown how literally every aspects of the language and its complementary tool support can\r\nbe customized using Dependency Injection, especially how\r\nthis can be done for linking, formatting and validation. As\r\nan outlook, we will demonstrate how to integrate a custom\r\nlanguage with Java, how Xtext maintains a workspace-wide\r\nindex of named elements and how to implement incremental\r\ncode generation or attach an interpreter.\r\n","conferenceYear":"","series":"","booktitle":"Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion","number":"","lastpage":309,"type":"inproceedings","url":"http://researchr.org/publication/eysholdt2010xtext","firstpage":307,"publisher":"","id":"d6fe4e08-6afa-4d57-993f-d885f194611c","authors":[{"alias":{"id":"31dcf86f-2a84-4c82-808a-bac332401aa5","name":"M. Eysholdt","key":"m.-eysholdt","url":"http://researchr.org/alias/m.-eysholdt"}},{"alias":{"id":"bb474975-6426-4882-a94e-277d7824943a","name":"H. Behrens","key":"h.-behrens","url":"http://researchr.org/alias/h.-behrens"}}],"title":"Xtext: implement your language faster than the quick and dirty way","organization":"ACM","address":"","month":"","volume":"","year":"2010","conference":"","note":"","doi":"","key":"eysholdt2010xtext"},{"abstract":"","conferenceYear":"","series":"","lastpage":69,"booktitle":"TOOLS Pacific 2000: 37th International Conference on Technology of Object-Oriented Languages and Systems, Sydney, Australia, November 2000","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/PowerM00%3A1","firstpage":57,"publisher":"IEEE Computer Society","id":"de31d613-c870-4f9a-93c6-74b35fe5a987","authors":[{"alias":{"id":"6d1757f8-5b00-4f61-85f4-66883dc7a642","name":"James F. Power","key":"james-f.-power","url":"http://researchr.org/alias/james-f.-power"}},{"alias":{"id":"eaa0d610-b519-42c8-9cdd-ddbd308e27b1","name":"Brian A. Malloy","key":"brian-a.-malloy","url":"http://researchr.org/alias/brian-a.-malloy"}}],"title":"Symbol Table Construction and Name Lookup in ISO C++","organization":"","address":"","month":"","volume":"","year":"2000","conference":"tools","note":"","doi":"http://doi.ieeecomputersociety.org/10.1109/TOOLS.2000.891358","key":"PowerM00:1"},{"abstract":"","conferenceYear":"","series":"","lastpage":183,"booktitle":"Proceedings of the 11th ACM SIGPLAN International Conference on Functional Programming, ICFP 2006, Portland, Oregon, USA, September 16-21, 2006","number":"","editors":[{"person":{"id":"a8ccd4f0-6a32-4cfc-a52f-d994a4da8e06","fullname":"John H. Reppy","key":"johnhreppy","url":"http://researchr.org/profile/johnhreppy"},"alias":{"id":"cbd6dce9-1d8e-44f3-9aa8-496429609329","name":"John H. Reppy","key":"john-h.-reppy","url":"http://researchr.org/alias/john-h.-reppy"}},{"person":{"id":"6d36196c-1b66-405d-9143-fdfc0e20f34f","fullname":"Julia L. Lawall","key":"juliallawall","url":"http://researchr.org/profile/juliallawall"},"alias":{"id":"50a0fe78-d70d-4890-904d-f020a9a3f2bd","name":"Julia L. Lawall","key":"julia-l.-lawall","url":"http://researchr.org/alias/julia-l.-lawall"}}],"type":"inproceedings","url":"http://researchr.org/publication/HickeyNYK06","firstpage":172,"publisher":"ACM","id":"e2157ecb-f025-45e6-ae80-6869da4ec14f","authors":[{"alias":{"id":"e4a83eb7-07cc-4d5a-80c2-51048683c619","name":"Jason Hickey","key":"jason-hickey","url":"http://researchr.org/alias/jason-hickey"}},{"alias":{"id":"ccd58d59-f7da-44a1-814d-bf048de68dc2","name":"Aleksey Nogin","key":"aleksey-nogin","url":"http://researchr.org/alias/aleksey-nogin"}},{"alias":{"id":"a815a54f-8f61-4544-84d3-5a2ef303c389","name":"Xin Yu","key":"xin-yu","url":"http://researchr.org/alias/xin-yu"}},{"alias":{"id":"26682c33-0941-47cb-b646-d79ad452472c","name":"Alexei Kopylov","key":"alexei-kopylov","url":"http://researchr.org/alias/alexei-kopylov"}}],"title":"Mechanized meta-reasoning using a hybrid HOAS/de bruijn representation and reflection","organization":"","address":"","month":"","volume":"","year":"2006","conference":"icfp","note":"","doi":"http://doi.acm.org/10.1145/1159803.1159826","key":"HickeyNYK06"},{"abstract":"","conferenceYear":"","series":"","booktitle":"Companion to the 27th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2012, Tucson, AR, USA, October 19 - 26, 2012","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/KonatVKWV2012","firstpage":0,"publisher":"ACM","id":"e290ea1a-bb5c-43e4-8ebb-b7329902915d","authors":[{"person":{"id":"a497348b-9ba2-4f94-8859-8dfccb46ff48","fullname":"Gabriël D. P. Konat","key":"gabrielkonat","url":"http://researchr.org/profile/gabrielkonat"},"alias":{"id":"3f8f6412-0a34-4f44-afbd-58e57ebf377b","name":"Gabriël D. P. Konat","key":"gabriël-d.-p.-konat","url":"http://researchr.org/alias/gabri%C3%ABl-d.-p.-konat"}},{"person":{"id":"1c401700-6273-4c92-b582-223b9f848895","fullname":"Vlad A. Vergu","key":"vladavergu","url":"http://researchr.org/profile/vladavergu"},"alias":{"id":"2afcc82d-748d-49e2-ac16-221972f6986f","name":"Vlad A. Vergu","key":"vlad-a.-vergu","url":"http://researchr.org/alias/vlad-a.-vergu"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"032f498d-7a9a-4edf-a66f-13ac255fe023","name":"Guido H. Wachsmuth","key":"guido-h.-wachsmuth","url":"http://researchr.org/alias/guido-h.-wachsmuth"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"The Spoofax Name Binding Language","organization":"","address":"","month":"","volume":"","year":"2012","conference":"","note":"","doi":"","key":"KonatVKWV2012"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":200,"booktitle":"Generative and Transformational Techniques in Software Engineering III - International Summer School, GTTSE 2009, Braga, Portugal, July 6-11, 2009. Revised Papers","number":"","editors":[{"alias":{"id":"07e9e70a-d7f5-4fca-b0f2-581e633e11f3","name":"Joao M. Fernandes","key":"joao-m.-fernandes","url":"http://researchr.org/alias/joao-m.-fernandes"}},{"person":{"id":"1605f420-86fe-4521-9126-c8999c59b3ed","fullname":"Ralf Lämmel","key":"ralflaemmel","url":"http://researchr.org/profile/ralflaemmel"},"alias":{"id":"ed24dc02-7f49-4a56-9541-d9bcba42ced8","name":"Ralf Laemmel","key":"ralf-laemmel","url":"http://researchr.org/alias/ralf-laemmel"}},{"person":{"id":"96380068-84b9-436b-ab9b-40d90a566d94","fullname":"Joost Visser","key":"joostvisser","url":"http://researchr.org/profile/joostvisser"},"alias":{"id":"a2685a71-4f48-405f-8d9b-0c4757bcef35","name":"Joost Visser","key":"joost-visser","url":"http://researchr.org/alias/joost-visser"}},{"person":{"id":"5c5d9adc-5293-437a-80e2-bf1044dc8837","fullname":"João Saraiva","key":"joosaraiva","url":"http://researchr.org/profile/joosaraiva"},"alias":{"id":"86ca504b-2401-4b19-b14e-9197dd2fe05f","name":"Joao Saraiva","key":"joao-saraiva","url":"http://researchr.org/alias/joao-saraiva"}}],"type":"inproceedings","url":"http://researchr.org/publication/Hedin09","firstpage":166,"publisher":"Springer","id":"e2e87b45-c104-4d43-9933-8c5c9fade63a","authors":[{"person":{"id":"5d7d5fd9-c563-43af-a011-42970a398b45","fullname":"Görel Hedin","key":"grelhedin","url":"http://researchr.org/profile/grelhedin"},"alias":{"id":"da20f253-5a98-47ab-9955-f9dcf209d5b4","name":"Görel Hedin","key":"görel-hedin","url":"http://researchr.org/alias/g%C3%B6rel-hedin"}}],"title":"An Introductory Tutorial on JastAdd Attribute Grammars","organization":"","address":"","month":"","volume":"6491","year":"2009","conference":"gttse","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-18023-1_4","key":"Hedin09"},{"abstract":"Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. Spoofax integrates language processing techniques for parser generation, meta-programming, and IDE development into a single environment. It uses concise, declarative specifications for languages and IDE services. In this paper we describe the architecture of Spoofax and introduce idioms for high-level specifications of language semantics using rewrite rules, showing how analyses can be reused for transformations, code generation, and editor services such as error marking, reference resolving, and content completion. The implementation of these services is supported by language-parametric editor service classes that can be dynamically loaded by the Eclipse IDE, allowing new languages to be developed and used side-by-side in the same Eclipse environment.","conferenceYear":"","series":"","lastpage":463,"booktitle":"Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA","number":"","editors":[{"person":{"id":"7f55f747-1ff4-4fa3-85ea-b40e083546b5","fullname":"William R. Cook","key":"williamrcook","url":"http://researchr.org/profile/williamrcook"},"alias":{"id":"9a3ff127-3980-45d1-8b6b-baa769285bbc","name":"William R. Cook","key":"william-r.-cook","url":"http://researchr.org/alias/william-r.-cook"}},{"person":{"id":"ed27bbb0-cb5a-499a-a50b-f5a211ae3647","fullname":"Siobhán Clarke","key":"siobhnclarke","url":"http://researchr.org/profile/siobhnclarke"},"alias":{"id":"a3306b32-66ba-486a-b518-c8019b0e80a0","name":"Siobh{\\'a}n Clarke","key":"siobh{\\'a}n-clarke","url":"http://researchr.org/alias/siobh%7B%5Eb%27a%7Dn-clarke"}},{"alias":{"id":"503be362-fe58-475e-81c6-7763a1803fb6","name":"Martin C. Rinard","key":"martin-c.-rinard","url":"http://researchr.org/alias/martin-c.-rinard"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsV10","firstpage":444,"publisher":"ACM","id":"e48132a2-6bc1-416b-a568-dcf0f13a89e4","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"The Spoofax language workbench: rules for declarative specification of languages and IDEs","organization":"","address":"Reno/Tahoe, Nevada","month":"","volume":"","year":"2010","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1869459.1869497","key":"KatsV10"},{"abstract":"Name analysis for Java is challenging with its complex visibility rules involving nested scopes, inheritance, qualified access, and syntactic ambiguities. We show how Java name analysis including ambiguities related to names of variables, fields, and packages, can be implemented in a declarative and modular manner using the JastAdd compiler construction system.\r\nDeclarative attributes and context-dependent rewrites enable the implementation to be modularized in the same way as the informal Java language specification. The individual rules in the specification transfer directly to equations in the implementation. Rewrites are used to define new concepts in terms of existing concepts in an iterative manner in the same way as the informal language specification. This enables equations to use both context-free and context-dependent concepts and leads to improved separation of concerns. A full Java 1.4 compiler has been implemented to validate the technique.","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":436,"booktitle":"Generative and Transformational Techniques in Software Engineering, International Summer School, GTTSE 2005, Braga, Portugal, July 4-8, 2005. Revised Papers","number":"","editors":[{"person":{"id":"1605f420-86fe-4521-9126-c8999c59b3ed","fullname":"Ralf Lämmel","key":"ralflaemmel","url":"http://researchr.org/profile/ralflaemmel"},"alias":{"id":"1cd5b8f9-4e0d-4121-a444-1a1c3466e59c","name":"Ralf Lämmel","key":"ralf-lämmel","url":"http://researchr.org/alias/ralf-l%C3%A4mmel"}},{"person":{"id":"5c5d9adc-5293-437a-80e2-bf1044dc8837","fullname":"João Saraiva","key":"joosaraiva","url":"http://researchr.org/profile/joosaraiva"},"alias":{"id":"55af31cd-7a9b-4070-894f-8497836f6610","name":"João Saraiva","key":"joão-saraiva","url":"http://researchr.org/alias/jo%C3%A3o-saraiva"}},{"person":{"id":"96380068-84b9-436b-ab9b-40d90a566d94","fullname":"Joost Visser","key":"joostvisser","url":"http://researchr.org/profile/joostvisser"},"alias":{"id":"a2685a71-4f48-405f-8d9b-0c4757bcef35","name":"Joost Visser","key":"joost-visser","url":"http://researchr.org/alias/joost-visser"}}],"type":"inproceedings","url":"http://researchr.org/publication/EkmanH06","firstpage":422,"publisher":"Springer","id":"e6217a39-be4c-45be-a6a5-6749eaadc1a1","authors":[{"person":{"id":"182d076f-1981-401a-ade6-e441c37c1448","fullname":"Torbjörn Ekman","key":"torbjrnekman","url":"http://researchr.org/profile/torbjrnekman"},"alias":{"id":"b925f0fd-d511-4b6b-bc3f-322dc88a7e59","name":"Torbjörn Ekman","key":"torbjörn-ekman","url":"http://researchr.org/alias/torbj%C3%B6rn-ekman"}},{"person":{"id":"5d7d5fd9-c563-43af-a011-42970a398b45","fullname":"Görel Hedin","key":"grelhedin","url":"http://researchr.org/profile/grelhedin"},"alias":{"id":"da20f253-5a98-47ab-9955-f9dcf209d5b4","name":"Görel Hedin","key":"görel-hedin","url":"http://researchr.org/alias/g%C3%B6rel-hedin"}}],"title":"Modular Name Analysis for Java Using JastAdd","organization":"","address":"","month":"","volume":"4143","year":"2006","conference":"gttse","note":"","doi":"http://dx.doi.org/10.1007/11877028_18","key":"EkmanH06"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":65,"booktitle":"Compiler Construction, 4th International Conference on Compiler Construction, CC 92, Paderborn, Germany, October 5-7, 1992, Proceedings","number":"","editors":[{"alias":{"id":"908f6144-84ad-40f1-b519-5b5d115b59b6","name":"Uwe Kastens","key":"uwe-kastens","url":"http://researchr.org/alias/uwe-kastens"}},{"alias":{"id":"4e80a551-2241-49e2-9dec-160c14a0cb15","name":"Peter Pfahler","key":"peter-pfahler","url":"http://researchr.org/alias/peter-pfahler"}}],"type":"inproceedings","url":"http://researchr.org/publication/Poetzsch-Heffter92","firstpage":59,"publisher":"Springer","id":"e982650f-0dbc-469d-92d3-76c93e95ae47","authors":[{"alias":{"id":"778804b3-d25a-4744-838b-53bf93d2815b","name":"Arnd Poetzsch-Heffter","key":"arnd-poetzsch-heffter","url":"http://researchr.org/alias/arnd-poetzsch-heffter"}}],"title":"Implementing High-Level Identification Specifications","organization":"","address":"","month":"","volume":"641","year":"1992","conference":"cc","note":"","doi":"","key":"Poetzsch-Heffter92"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":232,"booktitle":"Entertainment Computing - ICEC 2006, 5th International Conference, Cambridge, UK, September 20-22, 2006, Proceedings","number":"","editors":[{"alias":{"id":"16ae7994-d08e-472d-bbc3-85893a0de0b5","name":"Richard H. R. Harper","key":"richard-h.-r.-harper","url":"http://researchr.org/alias/richard-h.-r.-harper"}},{"alias":{"id":"5312327d-a7e1-4f8b-8bea-e38c708f31b1","name":"Matthias Rauterberg","key":"matthias-rauterberg","url":"http://researchr.org/alias/matthias-rauterberg"}},{"alias":{"id":"c814160b-80a1-47d5-99b9-2a03a27db12b","name":"Marco Combetto","key":"marco-combetto","url":"http://researchr.org/alias/marco-combetto"}}],"type":"inproceedings","url":"http://researchr.org/publication/Gomez-MartinGG06","firstpage":229,"publisher":"Springer","id":"e9bf0e7d-a42f-4c1b-bb4a-daeca7b7dfba","authors":[{"alias":{"id":"75a21587-0914-4588-8da7-89108b2c4285","name":"Marco Antonio Gómez-Martín","key":"marco-antonio-gómez-martín","url":"http://researchr.org/alias/marco-antonio-g%C3%B3mez-mart%C3%ADn"}},{"alias":{"id":"56f99963-8a99-4d1a-bb04-b95cc49a3cd9","name":"Pedro Pablo Gómez-Martín","key":"pedro-pablo-gómez-martín","url":"http://researchr.org/alias/pedro-pablo-g%C3%B3mez-mart%C3%ADn"}},{"alias":{"id":"ad00630c-62e7-4816-bad9-1f29a48d3d63","name":"Pedro A. González-Calero","key":"pedro-a.-gonzález-calero","url":"http://researchr.org/alias/pedro-a.-gonz%C3%A1lez-calero"}}],"title":"Dynamic Binding Is the Name of the Game","organization":"","address":"","month":"","volume":"4161","year":"2006","conference":"iwec","note":"","doi":"http://dx.doi.org/10.1007/11872320_27","key":"Gomez-MartinGG06"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":74,"booktitle":"Trustworthy Global Computing, International Symposium, TGC 2005, Edinburgh, UK, April 7-9, 2005, Revised Selected Papers","number":"","editors":[{"alias":{"id":"0ed16c45-fb72-42e4-bcd4-1b0737cd0c1d","name":"Rocco De Nicola","key":"rocco-de-nicola","url":"http://researchr.org/alias/rocco-de-nicola"}},{"alias":{"id":"787a83fd-6dc6-4c2a-a734-7c37e4437242","name":"Davide Sangiorgi","key":"davide-sangiorgi","url":"http://researchr.org/alias/davide-sangiorgi"}}],"type":"inproceedings","url":"http://researchr.org/publication/BorealeBM05","firstpage":61,"publisher":"Springer","id":"ec7b1a6e-583d-43a0-8650-6304ab66ffb1","authors":[{"alias":{"id":"4d71be17-9e7a-4334-90d5-336618b321ce","name":"Michele Boreale","key":"michele-boreale","url":"http://researchr.org/alias/michele-boreale"}},{"alias":{"id":"8ad117f9-1832-4962-b150-e59b00ebe24e","name":"Maria Grazia Buscemi","key":"maria-grazia-buscemi","url":"http://researchr.org/alias/maria-grazia-buscemi"}},{"alias":{"id":"dba3ef54-968c-4b37-b5e4-59b3cb582ef4","name":"Ugo Montanari","key":"ugo-montanari","url":"http://researchr.org/alias/ugo-montanari"}}],"title":"A General Name Binding Mechanism","organization":"","address":"","month":"","volume":"3705","year":"2005","conference":"tgc","note":"","doi":"http://dx.doi.org/10.1007/11580850_5","key":"BorealeBM05"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":978,"booktitle":"Automata, Languages and Programming, 28th International Colloquium, ICALP 2001, Crete, Greece, July 8-12, 2001, Proceedings","number":"","editors":[{"alias":{"id":"717e694f-9ef0-407d-9659-52dc0f8b20be","name":"Fernando Orejas","key":"fernando-orejas","url":"http://researchr.org/alias/fernando-orejas"}},{"alias":{"id":"40ce548a-a43d-48ae-a796-4664324c1e98","name":"Paul G. Spirakis","key":"paul-g.-spirakis","url":"http://researchr.org/alias/paul-g.-spirakis"}},{"alias":{"id":"bfbd62d1-3c30-4aae-9c45-846994ae9fd0","name":"Jan van Leeuwen","key":"jan-van-leeuwen","url":"http://researchr.org/alias/jan-van-leeuwen"}}],"type":"inproceedings","url":"http://researchr.org/publication/HonsellMS01%3A1","firstpage":963,"publisher":"Springer","id":"ed0cebb2-48f8-4f0d-8892-5530e0ba1c5d","authors":[{"alias":{"id":"367cae48-7100-4c97-857a-ce08c08b44f2","name":"Furio Honsell","key":"furio-honsell","url":"http://researchr.org/alias/furio-honsell"}},{"alias":{"id":"56daec1c-c113-4a7d-b5a3-90c4bceab029","name":"Marino Miculan","key":"marino-miculan","url":"http://researchr.org/alias/marino-miculan"}},{"alias":{"id":"0ae1c29d-3cbc-458c-b2ee-ab50fcc01aa7","name":"Ivan Scagnetto","key":"ivan-scagnetto","url":"http://researchr.org/alias/ivan-scagnetto"}}],"title":"An Axiomatic Approach to Metareasoning on Nominal Algebras in HOAS","organization":"","address":"","month":"","volume":"2076","year":"2001","conference":"icalp","note":"","doi":"http://link.springer.de/link/service/series/0558/bibs/2076/20760963.htm","key":"HonsellMS01:1"},{"abstract":"Machine-checked proofs of properties of programming languages have become a critical need, both for increased confidence in large and complex designs and as a foundation for technologies such as proof-carrying code. However, constructing these proofs remains a black art, involving many choices in the formulation of definitions and theorems that make a huge cumulative difference in the difficulty of carrying out large formal developments. The representation and manipulation of terms with variable binding is a key issue.\r\n\r\nWe propose a novel style for formalizing metatheory, combining locally nameless representation of terms and cofinite quantification of free variable names in inductive definitions of relations on terms (typing, reduction, ...). The key technical insight is that our use of cofinite quantification obviates the need for reasoning about equivariance (the fact that free names can be renamed in derivations); in particular, the structural induction principles of relations defined using cofinite quantification are strong enough for metatheoretic reasoning, and need not be explicitly strengthened. Strong inversion principles follow (automatically, in Coq) from the induction principles. Although many of the underlying ingredients of our technique have been used before, their combination here yields a significant improvement over existing methodology, leading to developments that are faithful to informal practice, yet require no external tool support and little infrastructure within the proof assistant.\r\n\r\nWe have carried out several large developments in this style using the Coq proof assistant and have made them publicly available. Our developments include type soundness for and ML (with references, exceptions, datatypes, recursion and patterns) and subject reduction for the Calculus of Constructions. Not only do these developments demonstrate the comprehensiveness of our approach; they have also been optimized for clarity and robustness, making them good templates for future extension. ","conferenceYear":"","series":"","lastpage":15,"booktitle":"Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2008, San Francisco, California, USA, January 7-12, 2008","number":"","editors":[{"alias":{"id":"2da25350-563b-4744-98ee-8efc773494f8","name":"George C. Necula","key":"george-c.-necula","url":"http://researchr.org/alias/george-c.-necula"}},{"person":{"id":"682828ae-306b-49ea-b847-6eda8680b7d9","fullname":"Philip Wadler","key":"philipwadler","url":"http://researchr.org/profile/philipwadler"},"alias":{"id":"f8c4f726-caec-4bcf-889d-86917caa1ede","name":"Philip Wadler","key":"philip-wadler","url":"http://researchr.org/alias/philip-wadler"}}],"type":"inproceedings","url":"http://researchr.org/publication/AydemirCPPW08","firstpage":3,"publisher":"ACM","id":"f0d148d4-2cac-4c42-91fd-0c09c3b30085","authors":[{"alias":{"id":"d1f13632-e86e-4d21-8c3f-4fdb472ee26a","name":"Brian E. Aydemir","key":"brian-e.-aydemir","url":"http://researchr.org/alias/brian-e.-aydemir"}},{"alias":{"id":"a1ea6944-8d63-4729-8c6b-40458d10055d","name":"Arthur Charguéraud","key":"arthur-charguéraud","url":"http://researchr.org/alias/arthur-chargu%C3%A9raud"}},{"person":{"id":"f83b031e-03b1-4c4f-8e76-b0f63c37357e","fullname":"Benjamin C. Pierce","key":"benjamincpierce","url":"http://researchr.org/profile/benjamincpierce"},"alias":{"id":"5d9887b3-bd50-4862-87ce-efd6bb07fbd8","name":"Benjamin C. Pierce","key":"benjamin-c.-pierce","url":"http://researchr.org/alias/benjamin-c.-pierce"}},{"alias":{"id":"49b4990c-288e-40d2-8e94-30e5ceef31ce","name":"Randy Pollack","key":"randy-pollack","url":"http://researchr.org/alias/randy-pollack"}},{"person":{"id":"4299e170-4fa6-42fe-bcd6-d7723d6d5f30","fullname":"Stephanie Weirich","key":"stephanieweirich","url":"http://researchr.org/profile/stephanieweirich"},"alias":{"id":"6e5f4081-0f75-4178-a2ec-9822fdb2e8eb","name":"Stephanie Weirich","key":"stephanie-weirich","url":"http://researchr.org/alias/stephanie-weirich"}}],"title":"Engineering formal metatheory","organization":"","address":"","month":"","volume":"","year":"2008","conference":"popl","note":"","doi":"http://doi.acm.org/10.1145/1328438.1328443","key":"AydemirCPPW08"},{"abstract":"Compiler symbol processing has become complex as programming languages have evolved . In this paper we describe a comprehensive model of symbol processing, and a system that uses this model to generate the symbol processing portions of a compiler from simple specification. The model supports a variety of entities with different types of names. It includes a detailed view of scoping. It provides a simple picture of the complex mapping from a source token to a specific entity. The model is illustrated with examples from Ada. The system is divided into two parts. The first takes a nonprocedural description of the semantics of symbol in the language and produces a symbol table module for a compiler for that language. The second supports a simple symbol processing language that allows the easy connection of syntax and semantic processing to the symbol module.\r\n","lastpage":163,"type":"article","url":"http://researchr.org/publication/Reiss83","firstpage":127,"issuenumber":"2","journal":"ACM Trans. Program. Lang. Syst.","id":"f187f96e-84e0-462e-8ad1-e5c8ec23ed23","authors":[{"alias":{"id":"b801156b-1264-4fe0-856c-50df40a273d2","name":"Steven P. Reiss","key":"steven-p.-reiss","url":"http://researchr.org/alias/steven-p.-reiss"}}],"title":"Generation of Compiler Symbol Processing Mechanisms","month":"","volumenumber":"5","year":"1983","note":"","key":"Reiss83","doi":"http://doi.acm.org/10.1145/69624.69625"},{"abstract":"","lastpage":38,"type":"article","url":"http://researchr.org/publication/AkessonEH10","firstpage":21,"issuenumber":"1-2","journal":"Sci. Comput. Program.","id":"f18b17b8-8c52-44de-b2de-21e64e26322d","authors":[{"alias":{"id":"da1cb03a-5eb9-4cdf-a8ee-6af4df70ea13","name":"Johan Åkesson","key":"johan-åkesson","url":"http://researchr.org/alias/johan-%C3%A5kesson"}},{"person":{"id":"182d076f-1981-401a-ade6-e441c37c1448","fullname":"Torbjörn Ekman","key":"torbjrnekman","url":"http://researchr.org/profile/torbjrnekman"},"alias":{"id":"b925f0fd-d511-4b6b-bc3f-322dc88a7e59","name":"Torbjörn Ekman","key":"torbjörn-ekman","url":"http://researchr.org/alias/torbj%C3%B6rn-ekman"}},{"person":{"id":"5d7d5fd9-c563-43af-a011-42970a398b45","fullname":"Görel Hedin","key":"grelhedin","url":"http://researchr.org/profile/grelhedin"},"alias":{"id":"da20f253-5a98-47ab-9955-f9dcf209d5b4","name":"Görel Hedin","key":"görel-hedin","url":"http://researchr.org/alias/g%C3%B6rel-hedin"}}],"title":"Implementation of a Modelica compiler using JastAdd attribute grammars","month":"","volumenumber":"75","year":"2010","note":"","key":"AkessonEH10","doi":"http://dx.doi.org/10.1016/j.scico.2009.07.003"},{"abstract":"","lastpage":67,"type":"article","url":"http://researchr.org/publication/VirgilioF82","firstpage":61,"issuenumber":"2","journal":"Comput. Lang.","id":"f29dabf4-c013-48d1-9b34-6b6dc7ca2a18","authors":[{"alias":{"id":"c0b98789-4af1-4511-8a9d-65332ebe9d93","name":"Thomas R. Virgilio","key":"thomas-r.-virgilio","url":"http://researchr.org/alias/thomas-r.-virgilio"}},{"alias":{"id":"67e98f69-daa1-487a-8560-c4473c5a6ee1","name":"Raphael A. Finkel","key":"raphael-a.-finkel","url":"http://researchr.org/alias/raphael-a.-finkel"}}],"title":"Binding Strategies and Scope Rules Are Independent","month":"","volumenumber":"7","year":"1982","note":"","key":"VirgilioF82","doi":""},{"abstract":"The implementation of refactorings for new languages requires considerable effort from the language developer.  We aim at reducing that effort by using language generic techniques.  This paper focuses on behavior preservation, in particular the preservation of name bindings.  Given an existing name analysis, we implement a language generic technique to detect name binding violations.  Some languages offer the possibility to access global variables using qualified names.  As a refinement to violation detection, we show that name analysis can be defined as a reusable traversal strategy  that can be applied to restore name bindings by creating qualified names. \r\nThese techniques offer an efficient and reliable solution;  the semantics of the language is implemented only once, with the compiler being the single source of truth.  We evaluate our approach by implementing a language generic rename refactoring,  which we apply to different languages.","conferenceYear":"","series":"","lastpage":0,"booktitle":"Workshop on Language Descriptions, Tools, and Applications, Proceedings","number":"","editors":[{"alias":{"id":"5384fbbe-a129-4b4a-8b46-1a54bb9c56fd","name":"Suzana Andova","key":"suzana-andova","url":"http://researchr.org/alias/suzana-andova"}},{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"a037cb7f-a2e6-4ee9-ad8a-8eff3c869696","name":"Tony Sloane","key":"tony-sloane","url":"http://researchr.org/alias/tony-sloane"}}],"type":"inproceedings","url":"http://researchr.org/publication/DeJongeVisser2012-LDTA","firstpage":0,"publisher":"","id":"f3c188c8-d971-429c-b543-9b8c87eec58a","authors":[{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"A Language Generic Solution for Name Binding Preservation in Refactorings","organization":"","address":"","month":"","volume":"","year":"2012","conference":"LDTA","note":"","doi":"http://dx.doi.org/10.1145/2427048.2427050","key":"DeJongeVisser2012-LDTA"},{"abstract":"","lastpage":52,"type":"article","url":"http://researchr.org/publication/Pottier06","firstpage":27,"issuenumber":"2","journal":"Electr. Notes Theor. Comput. Sci.","id":"f52e6337-0392-4796-99ce-63777e84e3cc","authors":[{"alias":{"id":"4873b8c4-dea7-4856-9a7e-64f7e404443b","name":"François Pottier","key":"françois-pottier","url":"http://researchr.org/alias/fran%C3%A7ois-pottier"}}],"title":"An Overview of C::::alpha::::ml","month":"","volumenumber":"148","year":"2006","note":"","key":"Pottier06","doi":"http://dx.doi.org/10.1016/j.entcs.2005.11.039"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":31,"booktitle":"Compiler Construction, 8th International Conference, CC 99, Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS 99, Amsterdam, The Netherlands, 22-28 March, 1999, Proceedings","number":"","editors":[{"alias":{"id":"a6228da4-451e-4e6a-8020-fba57b063c30","name":"Stefan Jähnichen","key":"stefan-jähnichen","url":"http://researchr.org/alias/stefan-j%C3%A4hnichen"}}],"type":"inproceedings","url":"http://researchr.org/publication/Sloane99","firstpage":17,"publisher":"Springer","id":"f68abc26-ad48-4bce-9f03-b0ffdc9edeec","authors":[{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"4cebde5d-1a0c-46b4-abdc-cd51b77b3c88","name":"Anthony M. Sloane","key":"anthony-m.-sloane","url":"http://researchr.org/alias/anthony-m.-sloane"}}],"title":"Debugging Eli-Generated Compilers With Noosa","organization":"","address":"","month":"","volume":"1575","year":"1999","conference":"cc","note":"","doi":"","key":"Sloane99"},{"abstract":"","id":"f6da4c74-9d0f-4074-af42-035822070d06","authors":[{"alias":{"id":"d0d34c15-e0c5-4135-933a-f2549ce95244","name":"Scott A. Vorthmann","key":"scott-a.-vorthmann","url":"http://researchr.org/alias/scott-a.-vorthmann"}}],"title":"Modelling and Specifying Name Visibility and Binding Semantics","month":"","year":"1993","url":"http://researchr.org/publication/Vor93","note":"","doi":"","key":"Vor93"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":301,"booktitle":"Compiler Construction, An Advanced Course, 2nd ed","number":"","editors":[{"alias":{"id":"2697b51a-575d-49e7-a68d-4132e36da277","name":"Friedrich L. Bauer","key":"friedrich-l.-bauer","url":"http://researchr.org/alias/friedrich-l.-bauer"}},{"alias":{"id":"2e296cf5-bb13-4dc0-aff1-0e021a5fbf60","name":"Jürgen Eickel","key":"jürgen-eickel","url":"http://researchr.org/alias/j%C3%BCrgen-eickel"}}],"type":"inproceedings","url":"http://researchr.org/publication/McKeeman76a","firstpage":253,"publisher":"Springer","id":"f970ab39-f2e8-458f-9343-2542d7edb1da","authors":[{"alias":{"id":"f10b234c-8967-436d-8493-606eaa1ea9be","name":"William M. McKeeman","key":"william-m.-mckeeman","url":"http://researchr.org/alias/william-m.-mckeeman"}}],"title":"Symbol Table Access","organization":"","address":"","month":"","volume":"21","year":"1976","conference":"ac","note":"","doi":"","key":"McKeeman76a"},{"abstract":"","lastpage":194,"type":"article","url":"http://researchr.org/publication/SloaneW05","firstpage":189,"issuenumber":"4","journal":"Electr. Notes Theor. Comput. Sci.","id":"fb381c75-f64f-4c69-a42e-ff27debe2e9f","authors":[{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"4cebde5d-1a0c-46b4-abdc-cd51b77b3c88","name":"Anthony M. Sloane","key":"anthony-m.-sloane","url":"http://researchr.org/alias/anthony-m.-sloane"}},{"alias":{"id":"332ae189-be38-47a9-916e-6bc8cb8d6599","name":"William M. Waite","key":"william-m.-waite","url":"http://researchr.org/alias/william-m.-waite"}}],"title":"Eclipse Support for Using Eli and Teaching Programming Languages","month":"","volumenumber":"141","year":"2005","note":"","key":"SloaneW05","doi":"http://dx.doi.org/10.1016/j.entcs.2005.02.058"},{"abstract":"","lastpage":864,"type":"article","url":"http://researchr.org/publication/KastensW09","firstpage":833,"issuenumber":"9","journal":"Softw., Pract. Exper.","id":"fc3e83e9-43e5-4ac8-972b-5e17b7b1bf7e","authors":[{"alias":{"id":"908f6144-84ad-40f1-b519-5b5d115b59b6","name":"Uwe Kastens","key":"uwe-kastens","url":"http://researchr.org/alias/uwe-kastens"}},{"alias":{"id":"332ae189-be38-47a9-916e-6bc8cb8d6599","name":"William M. Waite","key":"william-m.-waite","url":"http://researchr.org/alias/william-m.-waite"}}],"title":"Reusable specification modules for type analysis","month":"","volumenumber":"39","year":"2009","note":"","key":"KastensW09","doi":"http://dx.doi.org/10.1002/spe.917"},{"abstract":"Attribute grammars are a powerful specification formalism for tree-based computation, particularly for software language processing. Various extensions have been proposed to abstract over common patterns in attribute grammar specifications. These include various forms of copy rules to support non-local dependencies, collection attributes, and expressing dependencies that are evaluated to a fixed point. Rather than implementing extensions natively in an attribute evaluator, we propose attribute decorators that describe an abstract evaluation mechanism for attributes, making it possible to provide such extensions as part of a library of decorators. Inspired by strategic programming, decorators are specified using generic traversal operators. To demonstrate their effectiveness, we describe how to employ decorators in name, type, and flow analysis. ","conferenceYear":"2009","series":"Lecture Notes in Computer Science","lastpage":157,"booktitle":"Compiler Construction, 18th International Conference, CC 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, York, UK, March 22-29, 2009. Proceedings","number":"","editors":[{"person":{"id":"5991e76d-b9a7-4b37-b08a-c72d4c05db58","fullname":"Oege de Moor","key":"oegedemoor","url":"http://researchr.org/profile/oegedemoor"},"alias":{"id":"23153e23-c6bd-434a-9197-e5b6c0d878fa","name":"Oege de Moor","key":"oege-de-moor","url":"http://researchr.org/alias/oege-de-moor"}},{"person":{"id":"506c63b4-7861-4301-8905-29b7620b6473","fullname":"Michael I. Schwartzbach","key":"michaelischwartzbach","url":"http://researchr.org/profile/michaelischwartzbach"},"alias":{"id":"55b2c00c-f58d-4303-b161-0f5fbede2eb8","name":"Michael I. Schwartzbach","key":"michael-i.-schwartzbach","url":"http://researchr.org/alias/michael-i.-schwartzbach"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsSV09","firstpage":142,"publisher":"Springer","id":"fc5d00ce-4f71-4d82-ac2e-56221181deae","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"4cebde5d-1a0c-46b4-abdc-cd51b77b3c88","name":"Anthony M. Sloane","key":"anthony-m.-sloane","url":"http://researchr.org/alias/anthony-m.-sloane"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Decorated Attribute Grammars: Attribute Evaluation Meets Strategic Programming","organization":"","address":"","month":"","volume":"5501","year":"2009","conference":"cc","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-00722-4_11","key":"KatsSV09"},{"abstract":"An integrated development environment (IDE) monitors all the changes that a user makes to source code modules and responds accordingly by flagging errors, by reparsing, by rechecking, or by recompiling modules and by adjusting visualizations or other information derived from a module. A module manager is the central component of the IDE that is responsible for this behavior. Although the overall functionality of a module manager in a given IDE is fixed, its actual behavior strongly depends on the programming languages it has to support. What is a module? How do modules depend on each other? What is the effect of a change to a module?\r\n\r\nWe propose a concise design for a language parametric module manager: a module manager that is parameterized with the module behavior of a specific language. We describe the design of our module manager and discuss some of its properties. We also report on the application of the module manager in the construction of IDEs for the specification language Asf+Sdf as well as for Java.\r\n\r\nOur overall goal is the rapid development (generation) of IDEs for programming languages and domain specific languages. The module manager presented here represents a next step in the creation of such generic language workbenches.","lastpage":19,"type":"article","url":"http://researchr.org/publication/KlintKV08","firstpage":3,"issuenumber":"2","journal":"Electr. Notes Theor. Comput. Sci.","id":"feeea5fb-64b9-4420-b3ae-34fd669754d9","authors":[{"person":{"id":"37c2b529-fbd6-4ebd-9ca5-6dbe5dcdeeba","fullname":"Paul  Klint","key":"paulklint","url":"http://researchr.org/profile/paulklint"},"alias":{"id":"1fd9f1b5-3b9a-492a-b6c7-44525de23507","name":"Paul Klint","key":"paul-klint","url":"http://researchr.org/alias/paul-klint"}},{"person":{"id":"b27927a3-6f11-449c-be70-036477b152a5","fullname":"Taeke Kooiker","key":"ataekekooiker","url":"http://researchr.org/profile/ataekekooiker"},"alias":{"id":"5608c7a1-bcc0-4f9e-8e6e-66a8a9b1a2a4","name":"Taeke Kooiker","key":"taeke-kooiker","url":"http://researchr.org/alias/taeke-kooiker"}},{"person":{"id":"8ed1149d-5533-4120-8079-88085c44c8ef","fullname":"Jurgen J.  Vinju","key":"jurgenjvinju","url":"http://researchr.org/profile/jurgenjvinju"},"alias":{"id":"61686a94-9539-4a0b-99de-42c7c3d2acae","name":"Jurgen J. Vinju","key":"jurgen-j.-vinju","url":"http://researchr.org/alias/jurgen-j.-vinju"}}],"title":"Language Parametric Module Management for IDEs","month":"","volumenumber":"203","year":"2008","note":"","key":"KlintKV08","doi":"http://dx.doi.org/10.1016/j.entcs.2008.03.041"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":1281,"booktitle":"High-Performance Computing and Networking, 7th International Conference, HPCN Europe 1999, Amsterdam, The Netherlands, April 12-14, 1999, Proceedings","number":"","editors":[{"alias":{"id":"2617af25-0364-4a7f-ab68-86794f1f80ba","name":"Peter M. A. Sloot","key":"peter-m.-a.-sloot","url":"http://researchr.org/alias/peter-m.-a.-sloot"}},{"alias":{"id":"986b9803-c2ad-4b6c-940c-19f1417802b8","name":"Marian Bubak","key":"marian-bubak","url":"http://researchr.org/alias/marian-bubak"}},{"alias":{"id":"bb6a7bd6-15fd-4e54-8f2e-429ed9e5a88d","name":"Alfons G. Hoekstra","key":"alfons-g.-hoekstra","url":"http://researchr.org/alias/alfons-g.-hoekstra"}},{"alias":{"id":"b860fb6c-5a8c-43e1-bb2a-356a1616a2e5","name":"Louis O. Hertzberger","key":"louis-o.-hertzberger","url":"http://researchr.org/alias/louis-o.-hertzberger"}}],"type":"inproceedings","url":"http://researchr.org/publication/BubakFMSW99","firstpage":1278,"publisher":"Springer","id":"ffa3f284-7843-4f95-8d88-a34f30881953","authors":[{"alias":{"id":"986b9803-c2ad-4b6c-940c-19f1417802b8","name":"Marian Bubak","key":"marian-bubak","url":"http://researchr.org/alias/marian-bubak"}},{"alias":{"id":"a691c288-feb7-49bc-932a-afda65c9a551","name":"Wlodzimierz Funika","key":"wlodzimierz-funika","url":"http://researchr.org/alias/wlodzimierz-funika"}},{"alias":{"id":"267f12f7-2bec-47a3-aa76-9c3ea935b274","name":"Grzegorz Mlynarczyk","key":"grzegorz-mlynarczyk","url":"http://researchr.org/alias/grzegorz-mlynarczyk"}},{"alias":{"id":"6df968a0-b1d2-431f-ba51-0124c06022c7","name":"Krzysztof Sowa","key":"krzysztof-sowa","url":"http://researchr.org/alias/krzysztof-sowa"}},{"alias":{"id":"12478cd6-2669-48a5-a1ac-2f6c7aaed275","name":"Roland Wismüller","key":"roland-wismüller","url":"http://researchr.org/alias/roland-wism%C3%BCller"}}],"title":"Symbol Table Management in an HPF Debugger","organization":"","address":"","month":"","volume":"1593","year":"1999","conference":"hpcn","note":"","doi":"","key":"BubakFMSW99"}],"name":"modse-name-binding"}