% BibTeX bibliography file @Proceedings{ASF+SDF95, title = {Generating Tools from Algebraic Specifications (ASF+SDF'95)}, editor = {van den Brand, M. G. J. and van Deursen, A. and Dinesh, T. B. and Kamperman, J. F. Th. and Visser, E.}, year = {1995}, month = {May}, publisher = {Technical Report P9504, Programming Research Group, University of Amsterdam}, note = {\ifelectronic[\href{http://www.science.uva.nl/pub/programming-research/repo% rts/1995/P9504/}{html}]\fi}, URL = {http://ftp.wins.uva.nl/pub/programming-research/reports/1995/P9504/} } @InProceedings{BHV00, author = {Bagge, Otto Skrove and Haveraaen, Magne and Visser, Eelco}, title = {A {C++} Transformation Framework (Extended Abstract)}, booktitle = {Proceedings of the Nordic Workshop on Programming Theory (NWPT'00)}, year = {2000}, month = {October}, address = {Bergen, Norway} } @TechReport{BHV01, author = {Bagge, Otto Skrove and Haveraaen, Magne and Visser, Eelco}, title = {{CodeBoost}: {A} Framework for the Transformation of {C++} Programs}, year = {2001}, number = {UU-CS-2001-32}, institution = {Institute of Information and Computing Sciences, Utrecht University}, note = {\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/BHV00.ps.gz}{ps.% gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/BHV00.ps.zip}{ps.zip}}] \fi} } @TechReport{BSVV01, author = {{\sortunder{Brand}}van den Brand, Mark and Jeroen Scheerder and Jurgen Vinju and Visser, Eelco}, title = {Disambiguation Filters for Scannerless Generalized {LR} Parsers}, year = {2001}, month = {October}, number = {UU-CS-2001-39}, institution = {Institute of Information and Computing Sciences, Utrecht University}, note = {{\ifelectronic[\href{http://www.cs.uu.nl/people/visser/ftp/BSVV01.pdf}{pdf}] \fi}} } @InProceedings{BSVV02, author = {{\sortunder{Brand}}van den Brand, Mark and Jeroen Scheerder and Jurgen Vinju and Visser, Eelco}, title = {Disambiguation Filters for Scannerless Generalized {LR} Parsers}, booktitle = {Compiler Construction (CC'02)}, editor = {N. Horspool}, year = {2002}, month = {April}, series = {Lecture Notes in Computer Science}, volume = {2304}, pages = {143--158}, publisher = {Springer-Verlag}, address = {Grenoble, France}, note = {{\ifelectronic[\href{http://www.cs.uu.nl/people/visser/ftp/BSVV02.pdf}{pdf}, \href{http://www.cs.uu.nl/people/visser/ftp/BSVV02.ps.gz}{ps.gz}, \href{http://www.cs.uu.nl/people/visser/ftp/BSVV02.ps.zip}{ps.zip}] \fi}} } @TechReport{BV01, author = {Bravenboer, Martin and Visser, Eelco}, title = {Guiding Visitors: Separating Navigation from Computation}, year = {2001}, number = {UU-CS-2001-42}, institution = {Institute of Information and Computing Sciences, Utrecht University}, note = {{\ifelectronic[\href{http://www.cs.uu.nl/people/visser/ftp/BV01.pdf}{pdf}] \fi}} } @InProceedings{BV02, author = {Bravenboer, Martin and Visser, Eelco}, title = {Rewriting Strategies for Instruction Selection}, booktitle = {Rewriting Techniques and Applications (RTA'02)}, editor = {S. Tison}, year = {2002}, month = {July}, series = {Lecture Notes in Computer Science}, volume = {2378}, pages = {237-251}, publisher = {Springer-Verlag}, address = {Copenhagen, Denmark}, note = {{\ifelectronic[\href{http://www.cs.uu.nl/people/visser/ftp/BV02.pdf}{pdf}] \fi}} } @TechReport{BV94, author = {{\sortunder{Brand}}van den Brand, Mark and Visser, Eelco}, title = {From {Box} to {\TeX}: {An} algebraic approach to the generation of documentation tools}, year = {1994}, month = {July}, number = {P9420}, institution = {Programming Research Group, University of Amsterdam}, note = {\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9420.ps.gz}{ps.% gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9420.ps.zip}{ps.zip}}] \fi}, URL = {ftp://ftp.wins.uva.nl/pub/programming-research/reports/1994/P9420.ps.Z}, abstract = {We define a translation from an intermediate box language for pretty printing to \TeX. This translation can be used as a back-end for pretty printers in documentation tools for programming languages. The translation is formulated in an executable algebraic specification formalism. An important aspect of the translation is the transformation of boxes according to a set of equations. These equations preserve the text formatting semantics of boxes which is also defined algebraically. New in this approach is that algebraic transformations of box terms are used to circumvent the limitations of the typesetter.\par The \TeX\ generator, which translates the box language to \TeX\ code, is a component of documentation tools generated for the programming environments developed with the ASF+SDF meta-environment, but can also be used as a separate tool. As a case study, the construction of a typesetter for the process specification formalism PSF is shown.} } @InProceedings{BV95.tapsoft, author = {{\sortunder{Brand}}van den Brand, Mark G. J. and Visser, Eelco}, title = {The {ASF+SDF} {M}eta-environment: Documentation Tools for Free!}, booktitle = {Theory and Practice of Software Development (TAPSOFT'95)}, editor = {P. D. Mosses and M. Nielsen and M. I. Schwartzbach}, year = {1995}, month = {May}, series = {Lecture Notes in Computer Science}, volume = {915}, pages = {803--804}, publisher = {Springer-Verlag}, address = {Aarhus, Denmark}, note = {Tool demonstration \ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/BV95.ps.gz}{ps.gz% }}, {\href{http://www.cs.uu.nl/people/visser/ftp/BV95.ps.zip}{ps.zip}}]\fi}, URL = {http://www.brics.aau.dk/tapsoft/PP/brand.html} } @Article{BV96, author = {{\sortunder{Brand}}van den Brand, Mark G. J. and Visser, Eelco}, title = {Generation of Formatters for Context-free Languages}, journal = {ACM Transactions on Software Engineering and Methodology}, year = {1996}, month = {January}, volume = {5}, number = {1}, pages = {1--41}, note = {\ifelectronic[ {\href{http://www.cs.uu.nl/people/visser/ftp/BV96.ps.gz}{ps.gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/BV96.ps.zip}{ps.zip}}, {\href{http://www.acm.org/pubs/toc/TOC/1049-331X/Vol5.html}{ACM DL}}]\fi}, URL = {http://www.acm.org/pubs/toc/TOC/1049-331X/Vol5.html} } @TechReport{DV01, author = {Dolstra, Eelco and Visser, Eelco}, title = {First-class Rules and Generic Traversal}, year = {2001}, number = {UU-CS-2001-38}, institution = {Institute of Information and Computing Sciences, Utrecht University}, address = {Utrecht, The Netherlands}, note = {{\ifelectronic[\href{http://www.cs.uu.nl/people/visser/ftp/DV01.pdf}{pdf}] \fi}} } @InProceedings{DV02, author = {Dolstra, Eelco and Visser, Eelco}, title = {Building Interpreters with Rewriting Strategies}, booktitle = {Workshop on Language Descriptions, Tools and Applications (LDTA'02)}, editor = {{\sortunder{Brand}}van den Brand, Mark and {Laemmel}, Ralf}, year = {2002}, month = {April}, series = {Electronic Notes in Theoretical Computer Science}, volume = {65/3}, publisher = {Elsevier Science Publishers}, address = {Grenoble, France}, note = {{\ifelectronic[\href{http://www.cs.uu.nl/people/visser/ftp/DV02.pdf}{pdf}] \fi}} } @InProceedings{DV02-csmr, author = {{\sortunder{Deursen}van Deursen}, Arie and Visser, Eelco}, title = {The Reengineering Wiki}, booktitle = {Proceedings 6th European Conference on Software Maintenance and Reengineering (CSMR).}, year = {2002}, pages = {217--220}, publisher = {IEEE Computer Society}, note = {{\ifelectronic[\href{http://www.cs.uu.nl/people/visser/ftp/DV02-csmr.pdf}{p% df}, \href{http://www.program-transformation.org/Transform/ReengineeringWikiPaper }{wiki}] \fi}}, URL = {http://www.program-transformation.org/re/} } @Article{JV00, author = {Johann, Patricia and Visser, Eelco}, title = {Warm Fusion in {Stratego}: {A} Case Study in the Generation of Program Transformation Systems}, journal = {Annals of Mathematics and Artificial Intelligence}, year = {2000}, volume = {29}, number = {1--4}, pages = {1--34}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/JV2000-TR.ps.gz% }{ps.gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/JV2000-TR.ps.zip}{ps.zip}}] \fi}} } @TechReport{JV00.tr, author = {Johann, Patricia and Visser, Eelco}, title = {Warm Fusion in {Stratego}: {A} Case Study in the Generation of Program Transformation Systems}, year = {2000}, number = {UU-CS-2000-43}, institution = {Institute of Information and Computing Sciences, Utrecht University}, address = {Utrecht, The Netherlands}, note = {Extended version of article in \emph{Annals of Mathematics and Artificial Intelligence}, 29(1--4):1--34,2000, {\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/JV2000-TR.ps.gz}% {ps.gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/JV2000-TR.ps.zip}{ps.zip}}] \fi}} } @InProceedings{JV01, author = {Johann, Patricia and Visser, Eelco}, title = {Fusing Logic and Control with Local Transformations: An Example Optimization}, booktitle = {Workshop on Reduction Strategies in Rewriting and Programming (WRS'01)}, editor = {B. Gramlich and S. Lucas}, year = {2001}, month = {May}, series = {Electronic Notes in Theoretical Computer Science}, volume = {57}, publisher = {Elsevier Science Publishers}, address = {Utrecht, The Netherlands}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/JV01.ps.gz}{ps.% gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/JV01.ps.zip}{ps.zip}},\href{htt% p://www.cs.uu.nl/people/visser/ftp/JV01.pdf}{pdf}, \href{http://www.cs.uu.nl/people/visser/ftp/JV01.dvi}{dvi}, \href{http://www.cs.uu.nl/people/visser/ftp/JV01.bib}{bibtex}] \fi}} } @InProceedings{JVV01, author = {de Jonge, Merijn and Visser, Eelco and Visser, Joost}, title = {{XT}: {A} Bundle of Program Transformation Tools}, booktitle = {Workshop on Language Descriptions, Tools and Applications (LDTA'01)}, editor = {M. G. J. van den Brand and D. Perigot}, year = {2001}, month = {April}, series = {Electronic Notes in Theoretical Computer Science}, volume = {44}, number = {2}, publisher = {Elsevier Science Publishers}, note = {{\ifelectronic[ {\href{http://www.cs.uu.nl/people/visser/ftp/JVV01.ps.gz}{ps.gz}}, \href{http://www.cs.uu.nl/people/visser/ftp/JVV01.ps.zip}{ps.zip}} ]\fi} } @TechReport{JVV01-CSD, author = {de Jonge, Merijn and Visser, Eelco and Visser, Joost}, title = {Collaborative Software Development}, year = {2001}, number = {SEN-R0113}, institution = {CWI}, address = {Amsterdam, The Netherlands}, note = {{\ifelectronic[ {\href{http://www.cs.uu.nl/people/visser/ftp/JVV01-CSD.ps.gz}{ps.gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/JVV01-CSD.ps.zip}{ps.zip}}] \fi}} } @InProceedings{KV94, author = {Klint, Paul and Visser, Eelco}, title = {Using Filters for the Disambiguation of Context-free Grammars}, booktitle = {Proc. {ASMICS} Workshop on Parsing Theory}, editor = {Pighizzini, G. and {San Pietro}, P.}, year = {1994}, month = {October}, pages = {1--20}, publisher = {Tech. Rep. 126--1994, Dipartimento di Scienze dell'Informazione, Universit\`a di Milano}, address = {Milano, Italy}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9426.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9426.ps.zip}{ps.zip}}]\fi}}, URL = {ftp://ftp.wins.uva.nl/pub/programming-research/reports/1994/P9426.ps.Z}, abstract = {An ambiguous context-free grammar defines a language in which some sentences have multiple interpretations. For conciseness, ambiguous context-free grammars are frequently used to define even completely unambiguous languages and numerous disambiguation methods exist for specifying which interpretation is the intended one for each sentence. The existing methods can be divided in `parser specific' methods that describe how some parsing technique deals with ambiguous sentences and `logical' methods that describe the intended interpretation without reference to a specific parsing technique. We propose a framework of {\em filters\/} to describe and compare a wide range of disambiguation problems in a parser-independent way. A filter is a function that selects from a set of parse trees (the canonical representation of the interpretations of a sentence) the intended trees. The framework enables us to define several general properties of disambiguation methods. The expressive power of filters is illustrated by several case studies. Finally, a start is made with the study of efficient implementation techniques for filters by exploiting the commutativity of parsing steps and filter steps for certain classes of filters.} } @InProceedings{LV97, author = {Luttik, Bas and Visser, Eelco}, title = {Specification of Rewriting Strategies}, booktitle = {2nd International Workshop on the Theory and Practice of Algebraic Specifications (ASF+SDF'97)}, editor = {M. P. A. Sellink}, year = {1997}, month = {November}, series = {Electronic Workshops in Computing}, publisher = {Springer-Verlag}, address = {Berlin}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/LV97.ps.gz}{ps.% gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/LV97.ps.zip}{ps.zip}}] \fi}}, URL = {http://www.springer.co.uk/ewic/workshops/ASFSDF97/} } @InProceedings{MetaEnv01, author = {{\sortunder{Brand}}van den Brand, M. G. J. and J. Heering and H.A. de Jong and M. de Jonge and T. Kuipers and P. Klint and L. Moonen and P.A. Olivier and J.S. Scheerder and J.J. Vinju and E. Visser and J. Visser}, title = {The {Asf+Sdf} {Meta-Environment}: a component-based language laboratory}, booktitle = {Compiler Construction (CC'01)}, editor = {R. Wilhelm}, year = {2001}, month = {April}, series = {Lecture Notes in Computer Science}, volume = {2027}, pages = {365--368}, publisher = {Springer-Verlag}, address = {Genova, Italy}, note = {{\ifelectronic[ {\href{http://www.cs.uu.nl/people/visser/ftp/ASFSDF01.ps.gz}{ps.gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/ASFSDF01.ps.zip}{ps.zip}}, {\href{http://www.cs.uu.nl/people/visser/ftp/ASFSDF01.pdf}{pdf}}, {\href{http://www.cs.uu.nl/people/visser/ftp/ASFSDF01.bib}{bib}}]\fi}} } @InProceedings{OV02, author = {Karina Olmos and Visser, Eelco}, title = {Strategies for Source-to-Source Constant Propagation}, booktitle = {Workshop on Reduction Strategies (WRS'02)}, editor = {B. Gramlich and S. Lucas}, year = {2002}, series = {Electronic Notes in Theoretical Computer Science}, publisher = {Elsevier Science Publishers}, address = {Copenhagen, Denmark}, note = {(To appear)} } @Proceedings{SUD01, title = {Proceedings of the Second Stratego Users Day (SUD'01)}, editor = {Visser, Eelco}, year = {2001}, month = {February}, publisher = {Institute for Information and Computing Sciences, Utrecht University}, address = {Utrecht, The Netherlands}, note = {\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/SUD01.ps.gz}{ps.% gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/SUD01.ps.zip}{ps.zip}, {\href{http://www.cs.uu.nl/people/visser/ftp/SUD01.pdf}{pdf}}]\fi}} } @Manual{StrategoCompiler, author = {Visser, Eelco}, title = {The {Stratego} Compiler}, edition = {0.5}, year = {2000}, organization = {Institute of Information and Computing Sciences, Utrecht University}, note = {Technical Documentation. Latest version available at www.stratego-language.org {\ifelectronic[{\href{http://www.stratego-language.org/doc}{html}}] \fi}} } @Manual{StrategoLibrary, author = {Visser, Eelco}, title = {The {Stratego} Library}, edition = {0.5}, year = {2000}, organization = {Institute of Information and Computing Sciences, Utrecht University}, note = {Technical Documentation. {\ifelectronic[{\href{http://www.stratego-language.org/doc/library/html/inde% x.html}{html}}] \else Latest version available at www.stratego-language.org\fi}} } @Manual{StrategoRefMan, author = {Visser, Eelco}, title = {The {Stratego} Reference Manual}, edition = {0.5}, year = {2000}, organization = {Institute of Information and Computing Sciences, Utrecht University}, note = {Technical Documentation. {\ifelectronic[{\href{http://www.stratego-language.org/doc/reference/html/in% dex.html}{html}}] \else Latest version available at www.stratego-language.org\fi}} } @Manual{StrategoTutorial, author = {Visser, Eelco}, title = {The {Stratego} Tutorial}, edition = {0.5}, year = {2000}, organization = {Institute of Information and Computing Sciences, Utrecht University}, note = {Technical Documentation. {\ifelectronic[{\href{http://www.stratego-language.org/doc/tutorial/html/ind% ex.html}{html}}] \else Latest version available at www.stratego-language.org\fi}} } @Manual{TigerCompiler, author = {Visser, Eelco}, title = {Tiger in {Stratego}: An Exercise in Compilation by Transformation}, year = {2001}, organization = {Institute of Information and Computing Sciences, Utrecht University}, note = {Technical Documentation. {\ifelectronic[{\href{http://www.stratego-language.org/tiger/index.html}{htm% l}}] \else Latest version available at www.stratego-language.org\fi}} } @InProceedings{VB98, author = {Visser, Eelco and Benaissa, Zine-el-Abidine}, title = {A Core Language for Rewriting}, booktitle = {Second International Workshop on Rewriting Logic and its Applications (WRLA'98)}, editor = {C.~Kirchner and H.~Kirchner}, year = {1998}, month = {September}, series = {Electronic Notes in Theoretical Computer Science}, volume = {15}, publisher = {Elsevier Science Publishers}, address = {Pont-{\`a}-Mousson, France}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/VB98.ps.gz}{ps.% gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/VB98.ps.zip}{ps.zip}}]\fi}} } @InProceedings{VBT98, author = {Visser, Eelco and Benaissa, Zine-el-Abidine and Tolmach, Andrew}, title = {Building Program Optimizers with Rewriting Strategies}, booktitle = {Proceedings of the third ACM SIGPLAN International Conference on Functional Programming (ICFP'98)}, year = {1998}, month = {September}, pages = {13--26}, publisher = {ACM Press}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/~visser/ftp/VBT98.ps.gz}{ps.gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/VBT98.ps.zip}{ps.zip}}]\fi}} } @InProceedings{Vis00, author = {Eelco Visser}, title = {Language Independent Traversals for Program Transformation}, booktitle = {Workshop on Generic Programming (WGP'00)}, editor = {Johan Jeuring}, year = {2000}, month = {July}, publisher = {Technical Report UU-CS-2000-19, Department of Information and Computing Sciences, Universiteit Utrecht}, address = {Ponte de Lima, Portugal}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/Vis00.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis00.ps.zip}{ps.zip}}] \fi}} } @InProceedings{Vis01.rta, author = {Eelco Visser}, title = {Stratego: {A} Language for Program Transformation based on Rewriting Strategies. {S}ystem Description of {Stratego} 0.5}, booktitle = {Rewriting Techniques and Applications (RTA'01)}, editor = {A. Middeldorp}, year = {2001}, month = {May}, series = {Lecture Notes in Computer Science}, volume = {2051}, pages = {357--361}, publisher = {Springer-Verlag}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/Vis01.pdf}{pdf}% }, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis01.ps.gz}{ps.gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis01.ps.zip}{ps.zip}}, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis01.bib}{bib}}}] \fi} } @InProceedings{Vis01.rule, author = {Visser, Eelco}, title = {Scoped Dynamic Rewrite Rules}, booktitle = {Rule Based Programming (RULE'01)}, editor = {Mark van den Brand and Rakesh Verma}, year = {2001}, month = {September}, series = {Electronic Notes in Theoretical Computer Science}, volume = {59/4}, publisher = {Elsevier Science Publishers}, note = {{\ifelectronic[\href{http://www.cs.uu.nl/people/visser/ftp/Vis01-rule.ps.gz% }{ps.gz}, \href{http://www.cs.uu.nl/people/visser/ftp/Vis01-rule.ps.zip}{ps.zip}, \href{http://www.cs.uu.nl/people/visser/ftp/Vis01-rule.pdf}{pdf}]\fi}} } @InProceedings{Vis01.wrs, author = {Visser, Eelco}, title = {A Survey of Rewriting Strategies in Program Transformation Systems}, booktitle = {Workshop on Reduction Strategies in Rewriting and Programming (WRS'01)}, editor = {B. Gramlich and S. Lucas}, year = {2001}, month = {May}, series = {Electronic Notes in Theoretical Computer Science}, volume = {57}, publisher = {Elsevier Science Publishers}, address = {Utrecht, The Netherlands}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/Vis01-WRS.ps.gz% }{ps.gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis01-WRS.ps.zip}{ps.zip}}, \href{http://www.cs.uu.nl/people/visser/ftp/Vis01-WRS.pdf}{pdf}, \href{http://www.cs.uu.nl/people/visser/ftp/Vis01-WRS.dvi}{dvi}, \href{http://www.cs.uu.nl/people/visser/ftp/Vis01-WRS.bib}{bibtex}] \fi}} } @InProceedings{Vis02.gpce, author = {Eelco Visser}, title = {Meta-Programming with Concrete Object Syntax}, booktitle = {Generative Programming and Component Engineering (GPCE'02)}, editor = {D. Batory and Ch. Consel}, year = {2002}, month = {October}, series = {Lecture Notes in Computer Science}, publisher = {Springer-Verlag}, note = {To appear} } @MastersThesis{Vis93, author = {Visser, Eelco}, title = {Combinatory Algebraic Specification \& Compilation of List Matching}, year = {1993}, month = {June}, school = {Department of Computer Science, University of Amsterdam}, address = {Amsterdam}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/Vis93.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis93.ps.zip}{ps.zip}}] \fi}}, URL = {http://www.wins.uva.nl/pub/programming-research/MasterTheses/visser.ps.Z}, abstract = {During the development of the ASF+SDF compiler it became clear that a simplification of the back-end could be achieved by eliminating associative lists and conditional equations in an early phase of compilation. In this thesis the transformation of conditional equational term rewrite systems with {\em associative lists} to term rewrite systems without lists is described by means of an algebraic specification. To make as much of the specification reusable the specification is written in a style called {\em Combinatory Algebraic Specification}. In this style it is possible to define polymorphic higher-order functions (or combinators) and use these as arguments to functions and as results of computations. Using this style a vast library of general purpose combinators is developed. The specification of the combinatory language, the library of combinators and the specification of the transformation are written in a {\em Literate Specification} style, meaning that the specification and the text explaining it are integrated.} } @InProceedings{Vis95.acc, author = {Visser, Eelco}, title = {A Case Study in Optimizing Parsing Schemata by Disambiguation Filters}, booktitle = {Proceedings Accolade95}, editor = {S. Fischer and M. Trautwein}, year = {1995}, month = {September}, pages = {153--167}, organization = {The Dutch Graduate School in Logic}, address = {Amsterdam}, URL = {http://ftp.wins.uva.nl/pub/programming-research/reports/1995/P9507.ps.Z}, abstract = {Disambiguation methods for context-free grammars enable concise specification of programming languages by ambiguous grammars. A disambiguation filter is a function that selects a subset from a set of parse trees---the possible parse trees for an ambiguous sentence. The framework of filters provides a declarative description of disambiguation methods independent of parsing. Although filters can be implemented straightforwardly as functions that prune the parse forest produced by some generalized parser, this can be too inefficient for practical applications. In this paper the optimization of parsing schemata, a framework for high-level description of parsing algorithms, by disambiguation filters is considered in order to find efficient parsing algorithms for declaratively specified disambiguation methods. As a case study the optimization of the parsing schema of Earley's parsing algorithm by two filters is investigated. The main result is a technique for generation of efficient LR-like parsers for ambiguous grammars modulo priorities.} } @InProceedings{Vis95.psd, author = {Visser, Eelco}, title = {Polymorphic Syntax Definition (Extended Abstract)}, booktitle = {Algebraic Methods in Language Processing (AMILP'95)}, editor = {A. {Nij\-holt} and G. Scollo and R. Steetskamp}, year = {1995}, month = {December}, series = {Twente Workshops in Language Technology}, volume = {10}, pages = {43--54}, publisher = {Twente University of Technology}, address = {Enschede, The Netherlands}, note = {\ifelectronic[{\href{http://www.cs.uu.nl/~visser/ftp/Vis95-AMILP.ps.gz}{ps.% gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis95-AMILP.ps.zip}{ps.zip}}] \fi}, URL = {http://adam.wins.uva.nl/~visser/syntax/papers/psd/}, abstract = {Context-free grammars are used in several algebraic specification formalisms instead of first-order signatures for the definition of the structure of algebras, because grammars provide better notation than signatures. The rigidity of these first-order structures enforces a choice between strongly typed structures with little genericity or generic operations over untyped structures. In two-level signatures the second level defines the algebra of types used at the first level. Two-level grammars are the grammatical counterpart of two-level signatures. This paper discusses the correspondence between context-free grammars and first-order signatures, the extension of these to two-level grammars and signatures and shows how two-level grammars can be used for polymorphic syntax definition and the problems there are for the usage of two-level grammars as signatures in algebraic specification formalisms.} } @InProceedings{Vis95.sdf, author = {Eelco Visser}, title = {A Family of Syntax Definition Formalisms}, booktitle = {{ASF+SDF'95}. A Workshop on Generating Tools from Algebraic Specifications}, editor = {{\sortunder{Brand}}van den Brand, M. G. J. and others}, year = {1995}, month = {May}, pages = {89--126}, publisher = {Technical Report P9504, Programming Research Group, University of Amsterdam}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9504.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9504.ps.zip}{ps.zip}}] \fi}}, URL = {http://ftp.wins.uva.nl/pub/programming-research/reports/1995/P9504/7.html}, abstract = {In this paper we design a syntax definition formalism as a family of formalisms. Starting with a small kernel, several features for syntax definition are designed orthogonally to each other. This provides a framework for constructing new formalisms by adapting and extending old ones. The formalism is developed with the algebraic specification formalism ASF+SDF. It provides the following features: lexical and context-free syntax, variables, disambiguation by priorities, regular expressions, character classes and modular definitions. New are the uniform treatment of lexical syntax, context-free syntax and variables, the treatment of regular expressions by normalization yielding abstract syntax without auxiliary sorts, regular expressions as result of productions and modules with hidden imports and renamings.} } @InCollection{Vis96.mls, author = {Visser, Eelco}, title = {Multi-Level Specifications}, booktitle = {Language Prototyping. An Algebraic Specification Approach}, editor = {A. van Deursen and J. Heering and P. Klint}, year = {1996}, month = {September}, series = {AMAST Series in Computing}, volume = {5}, pages = {105--196}, publisher = {World Scientific}, address = {Singapore}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9604.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9604.zip}{ps.zip}}] \fi}}, URL = {http://adam.wins.uva.nl/~visser/types/mls/}, abstract = {This chapter introduces a modular, applicative, multi-level equational specification formalism that supports algebraic specification with user-definable type constructors, polymorphic functions and higher-order functions. Specifications consist of one or more levels numbered $0$ to $n$. Level~0 defines the object level terms. Level~1 defines the types used in the signature of level~0. In general, the terms used as types in level~$n$ are defined in level~$n+1$. This setup makes the algebra of types and the algebra of types of types, etc., user-definable. The applicative term structure makes functions first-class citizens and facilitates higher-order functions. The use of variables in terms used as types provides polymorphism (including higher-order polymorphism, i.e., abstraction over type constructors). Functions and variables can be overloaded. Specifications can be divided into modules. Modules can be imported at several levels by means of a specification lifting operation. Equations define the semantics of terms over a signature. The formalism also allows equations over types, by means of which many type systems can be described. The typechecker presented in this chapter does not take into account type equations. \par The specification, in {\sc Asf+Sdf}, of the syntax, type system and semantics of the formalism is presented in three stages: (1) untyped equational specifications (2) applicative one-level specifications (3) modular multi-level specifications. The definition of a typechecker for stages (2) and (3) is divided into four parts: (a) well-formedness judgements verifying type correctness of fully annotated terms and specifications, (b) non well-formedness rules giving descriptive error messages for the cases not covered under (a), (c) a type assignment function annotating the terms in a plain specification with types, and (d) a typechecking function which checks well-formedness after applying type assignment. These functions are defined uniformly for all levels of a specification. \par Aside of defining a new specification formalism, this chapter illustrates the use of {\sc Asf+Sdf} for the design and prototyping of sophisticated specification formalisms.} } @TechReport{Vis96.ste, author = {Visser, Eelco}, title = {Solving Type Equations in Multi-Level Specifications (preliminary version)}, year = {1996}, month = {May}, number = {P9606}, institution = {Programming Research Group, University of Amsterdam}, address = {Amsterdam}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9606.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9606.ps.zip}{ps.zip}}] \fi}}, URL = {http://ftp.wins.uva.nl/pub/programming-research/reports/1996/P9606.ps.Z}, abstract = {In first-order algebraic specification functions have types of the form $s_1\times\cdots\times{}s_n\to{}s_0$, where the $s_i$ are type constants. Such types exclude higher-order and polymorphic functions. In multi-level algebraic specification the structure of types used in function declarations is specified as an algebraic data type. If only free constructors are used in the types used in function declarations, type assignment is an extension of the Hindley/Milner algorithm to multiple levels of types. By means of equations over types, sophisticated type systems can be modeled in a simple and uniform language. The type assignment for arbitrary multi-level specifications requires $E$-unification. Although this is undecidable in general, it is decidable for restricted sets of equations.\par In an earlier paper, the modular applicative multi-level equational specification formalism MLS is defined. The typechecker supports only free type constructors.\par In this paper we introduce multi-level specification by means of a series of MLS examples and discuss the extension with an $E$-unification procedure instead of syntactic unification of the type assignment function for MLS such that it supports type definitions, defined type operators and recursive types.} } @TechReport{Vis97.cc, author = {Visser, Eelco}, title = {Character Classes}, year = {1997}, month = {August}, number = {P9708}, institution = {Programming Research Group, University of Amsterdam}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9708.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9708.ps.zip}{ps.zip}}] \fi}}, URL = {http://adam.wins.uva.nl/~visser/syntax/sdf/charclasses/} } @InCollection{Vis97.ccg, author = {Visser, Eelco}, title = {From Context-free Grammars with Priorities to Character Class Grammars}, booktitle = {Liber Amicorum Paul Klint}, year = {1997}, month = {November}, publisher = {CWI}, address = {Amsterdam}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9717.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9717.ps.zip}{ps.zip}}] \fi}} } @InProceedings{Vis97.opt, author = {Visser, Eelco}, title = {A Case Study in Optimizing Parsing Schemata by Disambiguation Filters}, booktitle = {International Workshop on Parsing Technology (IWPT'97)}, year = {1997}, month = {September}, pages = {210--224}, organization = {Massachusetts Institute of Technology}, address = {Boston, USA}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9507.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9507.ps.zip}{ps.zip}}] \fi}} } @TechReport{Vis97.sdf, author = {Visser, Eelco}, title = {A Family of Syntax Definition Formalisms}, year = {1997}, month = {July}, number = {P9706}, institution = {Programming Research Group, University of Amsterdam}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9706.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9706.ps.zip}{ps.zip}}] \fi}}, URL = {http://www.wins.uva.nl/pub/programming-research/reports/1997/P9706.ps.gz} } @TechReport{Vis97.sglr, author = {Visser, Eelco}, title = {Scannerless Generalized-{LR} Parsing}, year = {1997}, month = {July}, number = {P9707}, institution = {Programming Research Group, University of Amsterdam}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/P9707.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/P9707.ps.zip}{ps.zip}}] \fi}}, URL = {http://www.wins.uva.nl/pub/programming-research/reports/1997/P9707.ps.gz} } @PhdThesis{Vis97.thesis, author = {Visser, Eelco}, title = {Syntax Definition for Language Prototyping}, year = {1997}, month = {September}, school = {University of Amsterdam}, note = {{\ifelectronic[ {\href{http://www.cs.uu.nl/people/visser/ftp/Vis97.ps.gz}{ps.gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis97.ps.zip}{ps.zip}}] \fi}}, URL = {http://adam.wins.uva.nl/~visser/thesis/} } @Article{Vis98.psd, author = {Visser, Eelco}, title = {Polymorphic Syntax Definition}, journal = {Theoretical Computer Science}, year = {1998}, volume = {199}, pages = {57--86}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/Vis98.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis98.ps.zip}{ps.zip}}] \fi}} } @InProceedings{Vis99, author = {Visser, Eelco}, title = {Strategic Pattern Matching}, booktitle = {Rewriting Techniques and Applications (RTA'99)}, editor = {P. Narendran and M. Rusinowitch}, year = {1999}, month = {July}, series = {Lecture Notes in Computer Science}, volume = {1631}, pages = {30--44}, publisher = {Springer-Verlag}, address = {Trento, Italy}, note = {{\ifelectronic[{\href{http://www.cs.uu.nl/people/visser/ftp/Vis99.ps.gz}{ps% .gz}}, {\href{http://www.cs.uu.nl/people/visser/ftp/Vis99.ps.zip}{ps.zip}}] \fi}} } @InProceedings{Vis99.boot, author = {Visser, Eelco}, title = {A Bootstrapped Compiler for Strategies (Extended Abstract)}, booktitle = {Strategies in Automated Deduction (STRATEGIES'99)}, editor = {B. Gramlich and H. Kirchner and F. Pfenning}, year = {1999}, month = {July 5}, pages = {73--83}, address = {Trento, Italy}, abstract = {Stratego is a language for the specification of program transformation based on rewriting strategies. The Stratego compiler is based on program transformation; it transforms a high-level Stratego specification via several intermediate representations to C. Several optimizations are performed on the intermediate representations. The compiler is bootstrapped, i.e., it is specified in Stratego itself. In this paper we give an overview of the Stratego compiler: architecture; issues in the compilation of strategies; some high-lights of the specification; and experience with using strategies for writing program transformations.} } @Misc{WWW-PTO, title = {\href{http://www.program-transformation.org}{www.program-transformation.org% }} } @Misc{WWW-Stratego, title = {\href{http://www.stratego-language.org}{www.stratego-language.org}} }