{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T09:04:35Z","timestamp":1770282275748,"version":"3.49.0"},"publisher-location":"New York, NY, USA","reference-count":57,"publisher":"ACM","license":[{"start":{"date-parts":[[2019,6,8]],"date-time":"2019-06-08T00:00:00Z","timestamp":1559952000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["CCF-1750116,CCF-1563797"],"award-info":[{"award-number":["CCF-1750116,CCF-1563797"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2019,6,8]]},"DOI":"10.1145\/3314221.3314589","type":"proceedings-article","created":{"date-parts":[[2019,6,7]],"date-time":"2019-06-07T21:02:18Z","timestamp":1559941338000},"page":"363-378","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":22,"title":["Lightweight multi-language syntax transformation with parser parser combinators"],"prefix":"10.1145","author":[{"given":"Rijnard","family":"van Tonder","sequence":"first","affiliation":[{"name":"Carnegie Mellon University, USA"}]},{"given":"Claire","family":"Le Goues","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA"}]}],"member":"320","published-online":{"date-parts":[[2019,6,8]]},"reference":[{"key":"e_1_3_2_2_1_1","volume-title":"Clang's refactoring engine. https:\/\/clang.llvm.org\/docs\/RefactoringEngine.html. Accessed","year":"2019","unstructured":"Online. Clang's refactoring engine. https:\/\/clang.llvm.org\/docs\/RefactoringEngine.html. Accessed 16 April 2019 . Online. Clang's refactoring engine. https:\/\/clang.llvm.org\/docs\/RefactoringEngine.html. Accessed 16 April 2019."},{"key":"e_1_3_2_2_2_1","volume-title":"decaffeinate. https:\/\/github.com\/decaffeinate\/decaffeinate. Accessed","year":"2019","unstructured":"Online. decaffeinate. https:\/\/github.com\/decaffeinate\/decaffeinate. Accessed 16 April 2019 . Online. decaffeinate. https:\/\/github.com\/decaffeinate\/decaffeinate. Accessed 16 April 2019."},{"key":"e_1_3_2_2_3_1","volume-title":"Facebook's Codemod for large-scale codebase refactors. https:\/\/github.com\/facebook\/codemod. Accessed","year":"2019","unstructured":"Online. Facebook's Codemod for large-scale codebase refactors. https:\/\/github.com\/facebook\/codemod. Accessed 16 April 2019 . Online. Facebook's Codemod for large-scale codebase refactors. https:\/\/github.com\/facebook\/codemod. Accessed 16 April 2019."},{"key":"e_1_3_2_2_4_1","volume-title":"gofmt Go code formatter. https:\/\/golang.org\/cmd\/gofmt. Accessed","year":"2019","unstructured":"Online. gofmt Go code formatter. https:\/\/golang.org\/cmd\/gofmt. Accessed 16 April 2019 . Online. gofmt Go code formatter. https:\/\/golang.org\/cmd\/gofmt. Accessed 16 April 2019."},{"key":"e_1_3_2_2_5_1","volume-title":"https:\/\/github.com\/Engelberg\/instaparse. Accessed","year":"2019","unstructured":"Online. Instaparse. https:\/\/github.com\/Engelberg\/instaparse. Accessed 16 April 2019 . Online. Instaparse. https:\/\/github.com\/Engelberg\/instaparse. Accessed 16 April 2019."},{"key":"e_1_3_2_2_6_1","volume-title":"Pylint: a Python linter. https:\/\/media.readthedocs.org\/pdf\/pylint\/latest\/pylint.pdf. Accessed","year":"2019","unstructured":"Online. Pylint: a Python linter. https:\/\/media.readthedocs.org\/pdf\/pylint\/latest\/pylint.pdf. Accessed 16 April 2019 . Online. Pylint: a Python linter. https:\/\/media.readthedocs.org\/pdf\/pylint\/latest\/pylint.pdf. Accessed 16 April 2019."},{"key":"e_1_3_2_2_7_1","unstructured":"Online. Refal: REcursive Functions Algorithmic Language. http:\/\/www.refal.net\/~arklimov\/refal6\/. Accessed 16 April 2019.  Online. Refal: REcursive Functions Algorithmic Language. http:\/\/www.refal.net\/~arklimov\/refal6\/. Accessed 16 April 2019."},{"key":"e_1_3_2_2_8_1","volume-title":"Rewrite Transforms in Facebook's Hack. https:\/\/github.com\/facebook\/hhvm\/blob\/4abea3\/hphp\/hack\/src\/parser\/coroutine\/coroutine_state_machine_generator.ml#L411-L431. Accessed","year":"2019","unstructured":"Online. Rewrite Transforms in Facebook's Hack. https:\/\/github.com\/facebook\/hhvm\/blob\/4abea3\/hphp\/hack\/src\/parser\/coroutine\/coroutine_state_machine_generator.ml#L411-L431. Accessed 16 April 2019 . Online. Rewrite Transforms in Facebook's Hack. https:\/\/github.com\/facebook\/hhvm\/blob\/4abea3\/hphp\/hack\/src\/parser\/coroutine\/coroutine_state_machine_generator.ml#L411-L431. Accessed 16 April 2019."},{"key":"e_1_3_2_2_9_1","volume-title":"Rosie Pattern Language. https:\/\/developer.ibm.com\/code\/open\/projects\/rosie-pattern-language\/. Accessed","year":"2019","unstructured":"Online. Rosie Pattern Language. https:\/\/developer.ibm.com\/code\/open\/projects\/rosie-pattern-language\/. Accessed 16 April 2019 . Online. Rosie Pattern Language. https:\/\/developer.ibm.com\/code\/open\/projects\/rosie-pattern-language\/. Accessed 16 April 2019."},{"key":"e_1_3_2_2_10_1","unstructured":"Online. staticcheck for Go. http:\/\/staticcheck.io\/docs\/#overview. Accessed 16 April 2019.  Online. staticcheck for Go. http:\/\/staticcheck.io\/docs\/#overview. Accessed 16 April 2019."},{"key":"e_1_3_2_2_11_1","volume-title":"The Effective Dart style guide. https:\/\/www.dartlang.org\/guides\/language\/effective-dart\/style. Accessed","year":"2019","unstructured":"Online. The Effective Dart style guide. https:\/\/www.dartlang.org\/guides\/language\/effective-dart\/style. Accessed 16 April 2019 . Online. The Effective Dart style guide. https:\/\/www.dartlang.org\/guides\/language\/effective-dart\/style. Accessed 16 April 2019."},{"key":"e_1_3_2_2_12_1","volume-title":"TSLint: a linter for TypeScript. https:\/\/palantir.github.io\/tslint\/rules\/. Accessed","year":"2019","unstructured":"Online. TSLint: a linter for TypeScript. https:\/\/palantir.github.io\/tslint\/rules\/. Accessed 16 April 2019 . Online. TSLint: a linter for TypeScript. https:\/\/palantir.github.io\/tslint\/rules\/. Accessed 16 April 2019."},{"key":"e_1_3_2_2_13_1","volume-title":"Symposium on Theory of Computing. 202-211","author":"Alur Rajeev","unstructured":"Rajeev Alur and P. Madhusudan . 2004. Visibly pushdown languages . In Symposium on Theory of Computing. 202-211 . Rajeev Alur and P. Madhusudan. 2004. Visibly pushdown languages. In Symposium on Theory of Computing. 202-211."},{"key":"e_1_3_2_2_14_1","volume-title":"D-expressions: Lisp power, Dylan style.","author":"Bachrach Jonathan","year":"1999","unstructured":"Jonathan Bachrach and Keith Playford . 1999 . D-expressions: Lisp power, Dylan style. (1999). Jonathan Bachrach and Keith Playford. 1999. D-expressions: Lisp power, Dylan style. (1999)."},{"key":"e_1_3_2_2_15_1","first-page":"31","volume-title":"Languages and Applications (OOPSLA '01)","author":"Bachrach Jonathan","year":"2001","unstructured":"Jonathan Bachrach and Keith Playford . 2001 . The Java Syntactic Extender. In Object-Oriented Programming Systems , Languages and Applications (OOPSLA '01) . 31 - 42 . Jonathan Bachrach and Keith Playford. 2001. The Java Syntactic Extender. In Object-Oriented Programming Systems, Languages and Applications (OOPSLA '01). 31-42."},{"key":"e_1_3_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.5555\/766807.766809"},{"key":"e_1_3_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2007.11.003"},{"key":"e_1_3_2_2_18_1","volume-title":"Engler","author":"Brown Fraser","year":"2016","unstructured":"Fraser Brown , Andres Notzli , and Dawson R . Engler . 2016 . How to Build Static Checking Systems Using Orders of Magnitude Less Code. In Architectural Support for Programming Languages and Operating Systems (ASPLOS '16). 143-157. Fraser Brown, Andres Notzli, and Dawson R. Engler. 2016. How to Build Static Checking Systems Using Orders of Magnitude Less Code. In Architectural Support for Programming Languages and Operating Systems (ASPLOS '16). 143-157."},{"key":"e_1_3_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-74621-8_17"},{"key":"e_1_3_2_2_20_1","volume-title":"Instrumenting C Programs with Nested Word Monitors. In International SPIN Symposium on Model Checking of Software. 279-283","author":"Chaudhuri Swarat","year":"2007","unstructured":"Swarat Chaudhuri and Rajeev Alur . 2007 . Instrumenting C Programs with Nested Word Monitors. In International SPIN Symposium on Model Checking of Software. 279-283 . Swarat Chaudhuri and Rajeev Alur. 2007. Instrumenting C Programs with Nested Word Monitors. In International SPIN Symposium on Model Checking of Software. 279-283."},{"key":"e_1_3_2_2_21_1","first-page":"173","volume-title":"International Working Conference on Source Code Analysis and Manipulation (SCAM '11)","author":"Collard Michael L.","unstructured":"Michael L. Collard , Michael John Decker , and Jonathan I. Maletic . 2011. Lightweight Transformation and Fact Extraction with the srcML Toolkit . In International Working Conference on Source Code Analysis and Manipulation (SCAM '11) . 173 - 184 . Michael L. Collard, Michael John Decker, and Jonathan I. Maletic. 2011. Lightweight Transformation and Fact Extraction with the srcML Toolkit. In International Working Conference on Source Code Analysis and Manipulation (SCAM '11). 173-184."},{"key":"e_1_3_2_2_22_1","volume-title":"International Conference on Software Maintenance and Evolution (ICSME '16)","author":"Michael","unstructured":"Michael L. Collard and Jonathan I. Maletic. 2016. srcML 1.0: Explore, Analyze, and Manipulate Source Code . In International Conference on Software Maintenance and Evolution (ICSME '16) . 649. Michael L. Collard and Jonathan I. Maletic. 2016. srcML 1.0: Explore, Analyze, and Manipulate Source Code. In International Conference on Software Maintenance and Evolution (ICSME '16). 649."},{"key":"e_1_3_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2006.04.002"},{"key":"e_1_3_2_2_24_1","volume-title":"The economic value of rapid response time. IBM Report","author":"Doherty Walter J","year":"1982","unstructured":"Walter J Doherty and Arvind J Thadhani . 1982. The economic value of rapid response time. IBM Report ( 1982 ). Walter J Doherty and Arvind J Thadhani. 1982. The economic value of rapid response time. IBM Report (1982)."},{"key":"e_1_3_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01806308"},{"key":"e_1_3_2_2_26_1","doi-asserted-by":"crossref","unstructured":"Sebastian Erdweg Tijs van der Storm Markus V\u00f6lter Meinte Boersma Remi Bosman William R. Cook Albert Gerritsen Angelo Hulshout Steven Kelly Alex Loh Gabri\u00ebl D. P. Konat Pedro J. Molina Martin Palatnik Risto Pohjonen Eugen Schindler Klemens Schindler Riccardo Solmi Vlad A. Vergu Eelco Visser Kevin van der Vlist Guido Wachsmuth and Jimi van der Woning. 2013. The State of the Art in Language Workbenches - Conclusions from the Language Workbench Challenge. In Software Language Engineering (SLE '13). 197-217.  Sebastian Erdweg Tijs van der Storm Markus V\u00f6lter Meinte Boersma Remi Bosman William R. Cook Albert Gerritsen Angelo Hulshout Steven Kelly Alex Loh Gabri\u00ebl D. P. Konat Pedro J. Molina Martin Palatnik Risto Pohjonen Eugen Schindler Klemens Schindler Riccardo Solmi Vlad A. Vergu Eelco Visser Kevin van der Vlist Guido Wachsmuth and Jimi van der Woning. 2013. The State of the Art in Language Workbenches - Conclusions from the Language Workbench Challenge. In Software Language Engineering (SLE '13) . 197-217.","DOI":"10.1007\/978-3-319-02654-1_11"},{"key":"e_1_3_2_2_27_1","first-page":"1529","volume-title":"Symposium on Discrete Algorithms (SODA '18)","author":"Fischer Eldar","unstructured":"Eldar Fischer , Fr\u00e9d\u00e9ric Magniez , and Tatiana A. Starikovskaya . 2018. Improved bounds for testing Dyck languages . In Symposium on Discrete Algorithms (SODA '18) . 1529 - 1544 . Eldar Fischer, Fr\u00e9d\u00e9ric Magniez, and Tatiana A. Starikovskaya. 2018. Improved bounds for testing Dyck languages. In Symposium on Discrete Algorithms (SODA '18). 1529-1544."},{"key":"e_1_3_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/964001.964011"},{"key":"e_1_3_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0022-0000(67)80003-5"},{"key":"e_1_3_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133981.1133987"},{"key":"e_1_3_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/322290.322295"},{"key":"e_1_3_2_2_32_1","first-page":"35","article-title":"Cobra: a light-weight tool for static and dynamic program analysis","volume":"13","author":"Holzmann Gerard J.","year":"2017","unstructured":"Gerard J. Holzmann . 2017 . Cobra: a light-weight tool for static and dynamic program analysis . ISSE 13 , 1 (2017), 35 - 49 . Gerard J. Holzmann. 2017. Cobra: a light-weight tool for static and dynamic program analysis. ISSE 13, 1 (2017), 35-49.","journal-title":"ISSE"},{"key":"e_1_3_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/3092282.3092313"},{"key":"e_1_3_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800000411"},{"key":"e_1_3_2_2_35_1","unstructured":"Graham Hutton and Erik Meijer. 1996. Monadic Parser Combinators.  Graham Hutton and Erik Meijer. 1996. Monadic Parser Combinators."},{"key":"e_1_3_2_2_36_1","first-page":"327","article-title":"Interactive Disambiguation of Meta Programs with Concrete Object Syntax","author":"Kats Lennart C. L.","year":"2010","unstructured":"Lennart C. L. Kats , Karl Trygve Kalleberg , and Eelco Visser . 2010 . Interactive Disambiguation of Meta Programs with Concrete Object Syntax . In Software Language Engineering. 327 - 336 . Lennart C. L. Kats, Karl Trygve Kalleberg, and Eelco Visser. 2010. Interactive Disambiguation of Meta Programs with Concrete Object Syntax. In Software Language Engineering. 327-336.","journal-title":"Software Language Engineering."},{"key":"e_1_3_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486893"},{"key":"e_1_3_2_2_38_1","first-page":"168","volume-title":"RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation. In International Working Conference on Source Code Analysis and Manipulation (SCAM '09)","author":"Klint Paul","unstructured":"Paul Klint , Tijs van der Storm, and Jurgen J. Vinju. 2009 . RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation. In International Working Conference on Source Code Analysis and Manipulation (SCAM '09) . 168 - 177 . Paul Klint, Tijs van der Storm, and Jurgen J. Vinju. 2009. RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation. In International Working Conference on Source Code Analysis and Manipulation (SCAM '09). 168-177."},{"key":"e_1_3_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276492"},{"key":"e_1_3_2_2_40_1","volume-title":"Coccinelle: 10 Years of Automated Evolution in the Linux Kernel. In USENIX Annual Technical Conference. 601-614","author":"Lawall Julia","year":"2018","unstructured":"Julia Lawall and Gilles Muller . 2018 . Coccinelle: 10 Years of Automated Evolution in the Linux Kernel. In USENIX Annual Technical Conference. 601-614 . Julia Lawall and Gilles Muller. 2018. Coccinelle: 10 Years of Automated Evolution in the Linux Kernel. In USENIX Annual Technical Conference. 601-614."},{"key":"e_1_3_2_2_41_1","volume-title":"Parsec: Direct style monadic parser combinators for the real world. Technical Report. Technical Report UU-CS-2001-27, Department of Computer Science, Universiteit Utrecht.","author":"Leijen Daan","year":"2001","unstructured":"Daan Leijen and Erik Meijer . 2001 . Parsec: Direct style monadic parser combinators for the real world. Technical Report. Technical Report UU-CS-2001-27, Department of Computer Science, Universiteit Utrecht. Daan Leijen and Erik Meijer. 2001. Parsec: Direct style monadic parser combinators for the real world. Technical Report. Technical Report UU-CS-2001-27, Department of Computer Science, Universiteit Utrecht."},{"key":"e_1_3_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/2854146"},{"key":"e_1_3_2_2_43_1","doi-asserted-by":"crossref","unstructured":"Fan Long and Martin Rinard. 2016. Automatic Patch Generation by Learning Correct Code. In Principles of Programming Languages (POPL'16). 298-31.   Fan Long and Martin Rinard. 2016. Automatic Patch Generation by Learning Correct Code. In Principles of Programming Languages (POPL'16) . 298-31.","DOI":"10.1145\/2914770.2837617"},{"key":"e_1_3_2_2_44_1","first-page":"951","volume-title":"International Conference on Software Engineering (ICSE '15)","author":"Jonathan","unstructured":"Jonathan I. Maletic and Michael L. Collard. 2015. Exploration, Analysis, and Manipulation of Source Code Using srcML . In International Conference on Software Engineering (ICSE '15) . 951 - 952 . Jonathan I. Maletic and Michael L. Collard. 2015. Exploration, Analysis, and Manipulation of Source Code Using srcML. In International Conference on Software Engineering (ICSE '15). 951-952."},{"key":"e_1_3_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2017.2688333"},{"key":"e_1_3_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.120313"},{"key":"e_1_3_2_2_47_1","volume-title":"Usability engineering","author":"Nielsen Jakob","unstructured":"Jakob Nielsen . 1994. Usability engineering . Elsevier . Jakob Nielsen. 1994. Usability engineering. Elsevier."},{"key":"e_1_3_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796898003001"},{"key":"e_1_3_2_2_49_1","first-page":"131","volume-title":"International Conference on Generative Programming: Concepts and Experiences (GPCE '17)","author":"Parreaux Lionel","unstructured":"Lionel Parreaux , Amir Shaikhha , and Christoph E. Koch . 2017. Quoted staged rewriting: a practical approach to library-defined optimizations . In International Conference on Generative Programming: Concepts and Experiences (GPCE '17) . 131 - 145 . Lionel Parreaux, Amir Shaikhha, and Christoph E. Koch. 2017. Quoted staged rewriting: a practical approach to library-defined optimizations. In International Conference on Generative Programming: Concepts and Experiences (GPCE '17). 131-145."},{"key":"e_1_3_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.2380"},{"key":"e_1_3_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/1599410.1599414"},{"key":"e_1_3_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/2901739.2903495"},{"key":"e_1_3_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/5956.5957"},{"key":"e_1_3_2_2_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180250"},{"key":"e_1_3_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45821-2_19"},{"key":"e_1_3_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/2541348.2541355"},{"key":"e_1_3_2_2_57_1","volume-title":"Crew","author":"Weise Daniel","year":"1993","unstructured":"Daniel Weise and Roger F . Crew . 1993 . Programmable Syntax Macros. In Programming Language Design and Implementation (PLDI '93). 156-165. Daniel Weise and Roger F. Crew. 1993. Programmable Syntax Macros. In Programming Language Design and Implementation (PLDI '93). 156-165."}],"event":{"name":"PLDI '19: 40th ACM SIGPLAN Conference on Programming Language Design and Implementation","location":"Phoenix AZ USA","acronym":"PLDI '19","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages"]},"container-title":["Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3314221.3314589","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3314221.3314589","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3314221.3314589","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T23:53:22Z","timestamp":1750204402000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3314221.3314589"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,6,8]]},"references-count":57,"alternative-id":["10.1145\/3314221.3314589","10.1145\/3314221"],"URL":"https:\/\/doi.org\/10.1145\/3314221.3314589","relation":{},"subject":[],"published":{"date-parts":[[2019,6,8]]},"assertion":[{"value":"2019-06-08","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}