{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,24]],"date-time":"2026-06-24T16:37:56Z","timestamp":1782319076441,"version":"3.54.5"},"publisher-location":"Cham","reference-count":66,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030587673","type":"print"},{"value":"9783030587680","type":"electronic"}],"license":[{"start":{"date-parts":[[2020,1,1]],"date-time":"2020-01-01T00:00:00Z","timestamp":1577836800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2020,9,8]],"date-time":"2020-09-08T00:00:00Z","timestamp":1599523200000},"content-version":"vor","delay-in-days":251,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2020]]},"abstract":"<jats:title>Abstract<\/jats:title>\n<jats:p>SDF3 is a syntax definition formalism that extends plain context-free grammars with features such as constructor declarations, declarative disambiguation rules, character-level grammars, permissive syntax, layout constraints, formatting templates, placeholder syntax, and modular composition. These features support the multi-purpose interpretation of syntax definitions, including derivation of type schemas for abstract syntax tree representations, scannerless generalized parsing of the full class of context-free grammars, error recovery, layout-sensitive parsing, parenthesization and formatting, and syntactic completion. This paper gives a high level overview of SDF3 by means of examples and provides a guide to the literature for further details.<\/jats:p>","DOI":"10.1007\/978-3-030-58768-0_1","type":"book-chapter","created":{"date-parts":[[2020,9,11]],"date-time":"2020-09-11T12:02:48Z","timestamp":1599825768000},"page":"1-23","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":16,"title":["Multi-purpose Syntax Definition with SDF3"],"prefix":"10.1007","author":[{"given":"Lu\u00eds Eduardo","family":"de Souza Amorim","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Eelco","family":"Visser","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2020,9,8]]},"reference":[{"key":"1_CR1","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"137","DOI":"10.1007\/978-3-319-02654-1_8","volume-title":"Software Language Engineering","author":"A Afroozeh","year":"2013","unstructured":"Afroozeh, A., van den Brand, M., Johnstone, A., Scott, E., Vinju, J.: Safe specification of operator precedence rules. In: Erwig, M., Paige, R.F., Van Wyk, E. (eds.) SLE 2013. LNCS, vol. 8225, pp. 137\u2013156. Springer, Cham (2013). \nhttps:\/\/doi.org\/10.1007\/978-3-319-02654-1_8"},{"key":"1_CR2","doi-asserted-by":"publisher","unstructured":"van Antwerpen, H., N\u00e9ron, P., Tolmach, A.P., Visser, E., Wachsmuth, G.: A constraint language for static semantic analysis based on scope graphs. In: Erwig, M., Rompf, T. (eds.) Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2016, St. Petersburg, FL, USA, January 20\u201322, 2016, pp. 49\u201360. ACM (2016). \nhttps:\/\/doi.org\/10.1145\/2847538.2847543","DOI":"10.1145\/2847538.2847543"},{"issue":"OOPSLA","key":"1_CR3","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/3276484","volume":"2","author":"H van Antwerpen","year":"2018","unstructured":"van Antwerpen, H., Poulsen, C.B., Rouvoet, A., Visser, E.: Scopes as types. Proc. ACM Program. Lang. 2(OOPSLA), 1\u201330 (2018). \nhttps:\/\/doi.org\/10.1145\/3276484","journal-title":"Proc. ACM Program. Lang."},{"key":"1_CR4","unstructured":"Backus, J.W.: The syntax and semantics of the proposed international algebraic language of the Zurich ACM-GAMM conference. In: IFIP Congress. pp. 125\u2013131 (1959)"},{"key":"1_CR5","doi-asserted-by":"publisher","unstructured":"van den Brand, M.G.J., et al.: The ASF+SDF meta-environment: a component-based language development environment. In: Wilhelm, R. (ed.) Compiler Construction, 10th International Conference, CC 2001 Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2001 Genova, Italy, April 2\u20136, 2001, Proceedings. Lecture Notes in Computer Science, vol. 2027, pp. 365\u2013370. Springer (2001). \nhttps:\/\/doi.org\/10.1016\/S1571-0661(04)80917-4","DOI":"10.1016\/S1571-0661(04)80917-4"},{"issue":"3","key":"1_CR6","first-page":"259","volume":"30","author":"MGJ van den Brand","year":"2000","unstructured":"van den Brand, M.G.J., de Jong, H.A., Klint, P., Olivier, P.A.: Efficient annotated terms. Softw.: Pract. Exp. 30(3), 259\u2013291 (2000)","journal-title":"Softw.: Pract. Exp."},{"key":"1_CR7","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"143","DOI":"10.1007\/3-540-45937-5_12","volume-title":"Compiler Construction","author":"MGJ van den Brand","year":"2002","unstructured":"van den Brand, M.G.J., Scheerder, J., Vinju, J.J., Visser, E.: Disambiguation filters for scannerless generalized LR parsers. In: Horspool, R.N. (ed.) CC 2002. LNCS, vol. 2304, pp. 143\u2013158. Springer, Heidelberg (2002). \nhttps:\/\/doi.org\/10.1007\/3-540-45937-5_12"},{"issue":"1","key":"1_CR8","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/226155.226156","volume":"5","author":"MGJ van den Brand","year":"1996","unstructured":"van den Brand, M.G.J., Visser, E.: Generation of formatters for context-free languages. ACM Trans. Softw. Eng. Methodol. 5(1), 1\u201341 (1996). \nhttps:\/\/doi.org\/10.1145\/226155.226156","journal-title":"ACM Trans. Softw. Eng. Methodol."},{"issue":"7","key":"1_CR9","doi-asserted-by":"publisher","first-page":"473","DOI":"10.1016\/j.scico.2009.05.004","volume":"75","author":"M Bravenboer","year":"2010","unstructured":"Bravenboer, M., Dolstra, E., Visser, E.: Preventing injection attacks with syntax embeddings. Sci. Comput. Program. 75(7), 473\u2013495 (2010). \nhttps:\/\/doi.org\/10.1016\/j.scico.2009.05.004","journal-title":"Sci. Comput. Program."},{"issue":"12","key":"1_CR10","doi-asserted-by":"publisher","first-page":"52","DOI":"10.1016\/j.scico.2007.11.003","volume":"72","author":"M Bravenboer","year":"2008","unstructured":"Bravenboer, M., Kalleberg, K.T., Vermaas, R., Visser, E.: Stratego\/XT 0.17. A language and toolset for program transformation. Sci. Comput. Program. 72(12), 52\u201370 (2008). \nhttps:\/\/doi.org\/10.1016\/j.scico.2007.11.003","journal-title":"Sci. Comput. Program."},{"key":"1_CR11","doi-asserted-by":"publisher","unstructured":"Bravenboer, M., Tanter, \u00c9., Visser, E.: Declarative, formal, and extensible syntax definition for AspectJ. In: Tarr, P.L., Cook, W.R. (eds.) Proceedings of the 21th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2006, pp. 209\u2013228. ACM (2006). \nhttps:\/\/doi.org\/10.1145\/1167473.1167491","DOI":"10.1145\/1167473.1167491"},{"key":"1_CR12","doi-asserted-by":"publisher","unstructured":"Bravenboer, M., Visser, E.: Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions. In: Vlissides, J.M., Schmidt, D.C. (eds.) Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2004, pp. 365\u2013383. ACM, Vancouver (2004). \nhttps:\/\/doi.org\/10.1145\/1028976.1029007","DOI":"10.1145\/1028976.1029007"},{"key":"1_CR13","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"74","DOI":"10.1007\/978-3-642-00434-6_6","volume-title":"Software Language Engineering","author":"M Bravenboer","year":"2009","unstructured":"Bravenboer, M., Visser, E.: Parse table composition. In: Ga\u0161evi\u0107, D., L\u00e4mmel, R., Van Wyk, E. (eds.) SLE 2008. LNCS, vol. 5452, pp. 74\u201394. Springer, Heidelberg (2009). \nhttps:\/\/doi.org\/10.1007\/978-3-642-00434-6_6"},{"issue":"3","key":"1_CR14","doi-asserted-by":"publisher","first-page":"113","DOI":"10.1109\/TIT.1956.1056813","volume":"2","author":"N Chomsky","year":"1956","unstructured":"Chomsky, N.: Three models for the description of language. IRE Trans. Inf. Theory 2(3), 113\u2013124 (1956). \nhttps:\/\/doi.org\/10.1109\/TIT.1956.1056813","journal-title":"IRE Trans. Inf. Theory"},{"key":"1_CR15","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"82","DOI":"10.1007\/978-3-319-11245-9_5","volume-title":"Software Language Engineering","author":"L Diekmann","year":"2014","unstructured":"Diekmann, L., Tratt, L.: Eco: a language composition editor. In: Combemale, B., Pearce, D.J., Barais, O., Vinju, J.J. (eds.) SLE 2014. LNCS, vol. 8706, pp. 82\u2013101. Springer, Cham (2014). \nhttps:\/\/doi.org\/10.1007\/978-3-319-11245-9_5"},{"key":"1_CR16","doi-asserted-by":"publisher","unstructured":"Erdweg, S., Rendel, T., K\u00e4stner, C., Ostermann, K.: Sugarj: library-based syntactic language extensibility. In: Lopes, C.V., Fisher, K. (eds.) Proceedings of the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2011, Portland, OR, USA, October 22\u201327, 2011, pp. 391\u2013406. ACM (2011). \nhttps:\/\/doi.org\/10.1145\/2048066.2048099","DOI":"10.1145\/2048066.2048099"},{"key":"1_CR17","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"244","DOI":"10.1007\/978-3-642-36089-3_14","volume-title":"Software Language Engineering","author":"S Erdweg","year":"2013","unstructured":"Erdweg, S., Rendel, T., K\u00e4stner, C., Ostermann, K.: Layout-sensitive generalized parsing. In: Czarnecki, K., Hedin, G. (eds.) SLE 2012. LNCS, vol. 7745, pp. 244\u2013263. Springer, Heidelberg (2013). \nhttps:\/\/doi.org\/10.1007\/978-3-642-36089-3_14"},{"key":"1_CR18","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"197","DOI":"10.1007\/978-3-319-02654-1_11","volume-title":"Software Language Engineering","author":"S Erdweg","year":"2013","unstructured":"Erdweg, S., et al.: The state of the art in language workbenches. In: Erwig, M., Paige, R.F., Van Wyk, E. (eds.) SLE 2013. LNCS, vol. 8225, pp. 197\u2013217. Springer, Cham (2013). \nhttps:\/\/doi.org\/10.1007\/978-3-319-02654-1_11"},{"key":"1_CR19","doi-asserted-by":"publisher","first-page":"24","DOI":"10.1016\/j.cl.2015.08.007","volume":"44","author":"S Erdweg","year":"2015","unstructured":"Erdweg, S., et al.: Evaluating and comparing language workbenches: existing results and benchmarks for the future. Comput. Lang. Syst. Struct. 44, 24\u201347 (2015). \nhttps:\/\/doi.org\/10.1016\/j.cl.2015.08.007","journal-title":"Comput. Lang. Syst. Struct."},{"key":"1_CR20","doi-asserted-by":"publisher","unstructured":"Harkes, D., Groenewegen, D.M., Visser, E.: IceDust: incremental and eventual computation of derived values in persistent object graphs. In: Krishnamurthi, S., Lerner, B.S. (eds.) 30th European Conference on Object-Oriented Programming, ECOOP 2016, July 18\u201322, 2016, Rome, Italy. LIPIcs, vol. 56. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik (2016). \nhttps:\/\/doi.org\/10.4230\/LIPIcs.ECOOP.2016.11","DOI":"10.4230\/LIPIcs.ECOOP.2016.11"},{"key":"1_CR21","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"241","DOI":"10.1007\/978-3-319-11245-9_14","volume-title":"Software Language Engineering","author":"D Harkes","year":"2014","unstructured":"Harkes, D., Visser, E.: Unifying and generalizing relations in role-based data modeling and navigation. In: Combemale, B., Pearce, D.J., Barais, O., Vinju, J.J. (eds.) SLE 2014. LNCS, vol. 8706, pp. 241\u2013260. Springer, Cham (2014). \nhttps:\/\/doi.org\/10.1007\/978-3-319-11245-9_14"},{"key":"1_CR22","doi-asserted-by":"publisher","unstructured":"Harkes, D., Visser, E.: IceDust 2: derived bidirectional relations and calculation strategy composition. In: M\u00fcller, P. (ed.) 31st European Conference on Object-Oriented Programming, ECOOP 2017, June 19\u201323, 2017, Barcelona, Spain. LIPIcs, vol. 74. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik (2017). \nhttps:\/\/doi.org\/10.4230\/LIPIcs.ECOOP.2017.14","DOI":"10.4230\/LIPIcs.ECOOP.2017.14"},{"issue":"11","key":"1_CR23","doi-asserted-by":"publisher","first-page":"43","DOI":"10.1145\/71605.71607","volume":"24","author":"J Heering","year":"1989","unstructured":"Heering, J., Hendriks, P.R.H., Klint, P., Rekers, J.: The syntax definition formalism SDF - reference manual. SIGPLAN Not. 24(11), 43\u201375 (1989). \nhttps:\/\/doi.org\/10.1145\/71605.71607","journal-title":"SIGPLAN Not."},{"issue":"12","key":"1_CR24","doi-asserted-by":"publisher","first-page":"1344","DOI":"10.1109\/32.62443","volume":"16","author":"J Heering","year":"1990","unstructured":"Heering, J., Klint, P., Rekers, J.: Incremental generation of parsers. IEEE Trans. Softw. Eng. 16(12), 1344\u20131351 (1990)","journal-title":"IEEE Trans. Softw. Eng."},{"issue":"4","key":"1_CR25","doi-asserted-by":"publisher","first-page":"490","DOI":"10.1145\/133233.133240","volume":"14","author":"J Heering","year":"1992","unstructured":"Heering, J., Klint, P., Rekers, J.: Incremental generation of lexical scanners. ACM Trans. Program. Lang. Syst. 14(4), 490\u2013520 (1992). \nhttps:\/\/doi.org\/10.1145\/133233.133240","journal-title":"ACM Trans. Program. Lang. Syst."},{"issue":"3","key":"1_CR26","doi-asserted-by":"publisher","first-page":"1010","DOI":"10.1145\/177492.177750","volume":"16","author":"J Heering","year":"1994","unstructured":"Heering, J., Klint, P., Rekers, J.: Lazy and incremental program generation. ACM Trans. Program. Lang. Syst. 16(3), 1010\u20131023 (1994). \nhttps:\/\/doi.org\/10.1145\/177492.177750","journal-title":"ACM Trans. Program. Lang. Syst."},{"issue":"2","key":"1_CR27","doi-asserted-by":"publisher","first-page":"150","DOI":"10.1016\/j.jsc.2010.08.006","volume":"46","author":"Z Hemel","year":"2011","unstructured":"Hemel, Z., Groenewegen, D.M., Kats, L.C.L., Visser, E.: Static consistency checking of web applications with WebDSL. J. Symb. Comput. 46(2), 150\u2013182 (2011). \nhttps:\/\/doi.org\/10.1016\/j.jsc.2010.08.006","journal-title":"J. Symb. Comput."},{"key":"1_CR28","volume-title":"Introduction to Automata Theory, Languages, and Computation","author":"JE Hopcroft","year":"2006","unstructured":"Hopcroft, J.E., Motwani, R., Ullman, J.D.: Introduction to Automata Theory, Languages, and Computation, 3rd edn. Addison-Wesley, Boston (2006)","edition":"3"},{"key":"1_CR29","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"53","DOI":"10.1007\/3-540-59451-5_3","volume-title":"Advanced Functional Programming","author":"J Hughes","year":"1995","unstructured":"Hughes, J.: The design of a pretty-printing library. In: Jeuring, J., Meijer, E. (eds.) AFP 1995. LNCS, vol. 925, pp. 53\u201396. Springer, Heidelberg (1995). \nhttps:\/\/doi.org\/10.1007\/3-540-59451-5_3"},{"issue":"4","key":"1_CR30","doi-asserted-by":"publisher","first-page":"15","DOI":"10.1145\/2400676.2400678","volume":"34","author":"M de Jonge","year":"2012","unstructured":"de Jonge, M., Kats, L.C.L., Visser, E., S\u00f6derberg, E.: Natural and flexible error recovery for generated modular language environments. ACM Trans. Program. Lang. Syst. 34(4), 15 (2012). \nhttps:\/\/doi.org\/10.1145\/2400676.2400678","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"1_CR31","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"204","DOI":"10.1007\/978-3-642-12107-4_16","volume-title":"Software Language Engineering","author":"M de Jonge","year":"2010","unstructured":"de Jonge, M., Nilsson-Nyman, E., Kats, L.C.L., Visser, E.: Natural and flexible error recovery for generated parsers. In: van den Brand, M., Ga\u0161evi\u0107, D., Gray, J. (eds.) SLE 2009. LNCS, vol. 5969, pp. 204\u2013223. Springer, Heidelberg (2010). \nhttps:\/\/doi.org\/10.1007\/978-3-642-12107-4_16"},{"key":"1_CR32","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"40","DOI":"10.1007\/978-3-642-28830-2_3","volume-title":"Software Language Engineering","author":"M de Jonge","year":"2012","unstructured":"de Jonge, M., Visser, E.: An algorithm for layout preservation in refactoring transformations. In: Sloane, A., A\u00dfmann, U. (eds.) SLE 2011. LNCS, vol. 6940, pp. 40\u201359. Springer, Heidelberg (2012). \nhttps:\/\/doi.org\/10.1007\/978-3-642-28830-2_3"},{"key":"1_CR33","doi-asserted-by":"publisher","unstructured":"de Jonge, M., Visser, E.: Automated evaluation of syntax error recovery. In: Goedicke, M., Menzies, T., Saeki, M. (eds.) IEEE\/ACM International Conference on Automated Software Engineering, ASE 2012, Essen, Germany, September 3\u20137, 2012, pp. 322\u2013325. ACM (2012). \nhttps:\/\/doi.org\/10.1145\/2351676.2351736","DOI":"10.1145\/2351676.2351736"},{"key":"1_CR34","unstructured":"de Jonge, M.: A pretty-printer for every occasion. In: The International Symposium on Constructing Software Engineering Tools (CoSET2000). University of Wollongong, Australia (2000)"},{"key":"1_CR35","unstructured":"de Jonge, M.: Pretty-printing for software reengineering. In: 18th International Conference on Software Maintenance (ICSM 2002), Maintaining Distributed Heterogeneous Systems, 3\u20136 October, 2002, Montreal, Quebec, Canada, pp. 550\u2013559. IEEE Computer Society (2002)"},{"key":"1_CR36","doi-asserted-by":"publisher","unstructured":"Kats, L.C.L., de Jonge, M., Nilsson-Nyman, E., Visser, E.: Providing rapid feedback in generated modular language environments: adding error recovery to scannerless generalized-LR parsing. In: Arora, S., Leavens, G.T. (eds.) Proceedings of the 24th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2009, pp. 445\u2013464. ACM (2009). \nhttps:\/\/doi.org\/10.1145\/1640089.1640122","DOI":"10.1145\/1640089.1640122"},{"key":"1_CR37","doi-asserted-by":"publisher","unstructured":"Kats, L.C.L., Vermaas, R., Visser, E.: Integrated language definition testing: enabling test-driven language development. In: Lopes, C.V., Fisher, K. (eds.) Proceedings of the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, Part of SPLASH 2011, Portland, OR, USA, October 22\u201327, 2011, pp. 139\u2013154. ACM (2011). \nhttps:\/\/doi.org\/10.1145\/2048066.2048080","DOI":"10.1145\/2048066.2048080"},{"key":"1_CR38","doi-asserted-by":"publisher","unstructured":"Kats, L.C.L., Visser, E.: The Spoofax language workbench: rules for declarative specification of languages and IDEs. In: Cook, W.R., Clarke, S., Rinard, M.C. (eds.) Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, pp. 444\u2013463. ACM, Reno\/Tahoe (2010). \nhttps:\/\/doi.org\/10.1145\/1869459.1869497","DOI":"10.1145\/1869459.1869497"},{"key":"1_CR39","doi-asserted-by":"publisher","unstructured":"Kats, L.C.L., Visser, E., Wachsmuth, G.: Pure and declarative syntax definition: paradise lost and regained. In: Cook, W.R., Clarke, S., Rinard, M.C. (eds.) Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, pp. 918\u2013932. ACM, Reno\/Tahoe (2010). \nhttps:\/\/doi.org\/10.1145\/1869459.1869535","DOI":"10.1145\/1869459.1869535"},{"issue":"2","key":"1_CR40","doi-asserted-by":"publisher","first-page":"176","DOI":"10.1145\/151257.151260","volume":"2","author":"P Klint","year":"1993","unstructured":"Klint, P.: A meta-environment for generating programming environments. ACM Trans. Softw. Eng. Methodol. 2(2), 176\u2013201 (1993). \nhttps:\/\/doi.org\/10.1145\/151257.151260","journal-title":"ACM Trans. Softw. Eng. Methodol."},{"key":"1_CR41","doi-asserted-by":"publisher","unstructured":"Klint, P., van der Storm, T., Vinju, J.J.: RASCAL: a domain specific language for source code analysis and manipulation. In: Ninth IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2009, Edmonton, Alberta, Canada, September 20\u201321, 2009, pp. 168\u2013177. IEEE Computer Society (2009). \nhttps:\/\/doi.org\/10.1109\/SCAM.2009.28","DOI":"10.1109\/SCAM.2009.28"},{"key":"1_CR42","unstructured":"Leroy, X., Doligez, D., Frisch, A., Garrigue, J., R\u00e9my, D., Vouillon, J.: The OCaml system release 4.10 (2020)"},{"key":"1_CR43","unstructured":"Lesk, M.E.: Lex\u2013a lexical analyzer generator. Tech. rep. CS-39. AT&T Bell Laboratories, Murray Hill, N.J. (1975)"},{"key":"1_CR44","unstructured":"Rekers, J.: Parser generation for interactive environments. Ph.D. thesis, University of Amsterdam, Amsterdam, The Netherlands (January 1992)"},{"key":"1_CR45","doi-asserted-by":"crossref","unstructured":"Salomon, D.J., Cormack, G.V.: Scannerless NSLR(1) parsing of programming languages. In: PLDI, pp. 170\u2013178 (1989)","DOI":"10.1145\/74818.74833"},{"key":"1_CR46","doi-asserted-by":"publisher","unstructured":"Schwerdfeger, A., Wyk, E.V.: Verifiable composition of deterministic grammars. In: Hind, M., Diwan, A. (eds.) Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2009, Dublin, Ireland, June 15\u201321, 2009, pp. 199\u2013210. ACM (2009). \nhttps:\/\/doi.org\/10.1145\/1542476.1542499","DOI":"10.1145\/1542476.1542499"},{"key":"1_CR47","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"184","DOI":"10.1007\/978-3-642-12107-4_15","volume-title":"Software Language Engineering","author":"A Schwerdfeger","year":"2010","unstructured":"Schwerdfeger, A., Van Wyk, E.: Verifiable parse table composition for deterministic parsing. In: van den Brand, M., Ga\u0161evi\u0107, D., Gray, J. (eds.) SLE 2009. LNCS, vol. 5969, pp. 184\u2013203. Springer, Heidelberg (2010). \nhttps:\/\/doi.org\/10.1007\/978-3-642-12107-4_15"},{"issue":"7","key":"1_CR48","doi-asserted-by":"publisher","first-page":"177","DOI":"10.1016\/j.entcs.2010.08.041","volume":"253","author":"E Scott","year":"2010","unstructured":"Scott, E., Johnstone, A.: GLL parsing. Electron. Notes Theor. Comput. Sci. 253(7), 177\u2013189 (2010). \nhttps:\/\/doi.org\/10.1016\/j.entcs.2010.08.041","journal-title":"Electron. Notes Theor. Comput. Sci."},{"key":"1_CR49","doi-asserted-by":"publisher","unstructured":"Sijm, M.P.: Incremental scannerless generalized LR parsing. In: Smaragdakis, Y. (ed.) Proceedings Companion of the 2019 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity, SPLASH 2019, Athens, Greece, October 20\u201325, 2019, pp. 54\u201356. ACM (2019). \nhttps:\/\/doi.org\/10.1145\/3359061.3361085","DOI":"10.1145\/3359061.3361085"},{"key":"1_CR50","doi-asserted-by":"publisher","unstructured":"Smits, J., Visser, E.: FlowSpec: declarative dataflow analysis specification. In: Combemale, B., Mernik, M., Rumpe, B. (eds.) Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2017, Vancouver, BC, Canada, October 23\u201324, 2017, pp. 221\u2013231. ACM (2017). \nhttps:\/\/doi.org\/10.1145\/3136014.3136029","DOI":"10.1145\/3136014.3136029"},{"key":"1_CR51","doi-asserted-by":"publisher","unstructured":"de Souza Amorim, L.E., Erdweg, S., Wachsmuth, G., Visser, E.: Principled syntactic code completion using placeholders. In: van der Storm, T., Balland, E., Varr\u00f3, D. (eds.) Proceedings of the 2016 ACM SIGPLAN International Conference on Software Language Engineering, Amsterdam, The Netherlands, October 31\u2013November 1, 2016, pp. 163\u2013175. ACM (2016). \nhttps:\/\/doi.org\/10.1145\/2997364.2997374","DOI":"10.1145\/2997364.2997374"},{"key":"1_CR52","doi-asserted-by":"publisher","unstructured":"de Souza Amorim, L.E., Steindorfer, M.J., Visser, E.: Deep priority conflicts in the wild: a pilot study. In: Combemale, B., Mernik, M., Rumpe, B. (eds.) Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2017, Vancouver, BC, Canada, October 23\u201324, 2017, pp. 55\u201366. ACM (2017). \nhttps:\/\/doi.org\/10.1145\/3136014.3136020","DOI":"10.1145\/3136014.3136020"},{"key":"1_CR53","unstructured":"de Souza Amorim, L.E., Visser, E.: A direct semantics of declarative disambiguation rules. In: ACM TOPLAS (2020). under revision"},{"key":"1_CR54","doi-asserted-by":"publisher","unstructured":"de Souza Amorim, L.E., Steindorfer, M.J., Erdweg, S., Visser, E.: Declarative specification of indentation rules: a tooling perspective on parsing and pretty-printing layout-sensitive languages. In: 0005, D.P., Mayerhofer, T., Steimann, F. (eds.) Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2018, Boston, MA, USA, November 05\u201306, 2018, pp. 3\u201315. ACM (2018). \nhttps:\/\/doi.org\/10.1145\/3276604.3276607","DOI":"10.1145\/3276604.3276607"},{"issue":"3","key":"1_CR55","doi-asserted-by":"publisher","first-page":"13","DOI":"10.22152\/programming-journal.org\/2018\/2\/13","volume":"2","author":"LE de Souza Amorim","year":"2018","unstructured":"de Souza Amorim, L.E., Steindorfer, M.J., Visser, E.: Towards zero-overhead disambiguation of deep priority conflicts. Programming Journal 2(3), 13 (2018). \nhttps:\/\/doi.org\/10.22152\/programming-journal.org\/2018\/2\/13","journal-title":"Programming Journal"},{"key":"1_CR56","unstructured":"Tomita, M.: An efficient context-free parsing algorithm for natural languages. In: IJCAI, pp. 756\u2013764 (1985)"},{"key":"1_CR57","doi-asserted-by":"publisher","unstructured":"Vergu, V.A., N\u00e9ron, P., Visser, E.: DynSem: a DSL for dynamic semantics specification. In: Fern\u00e1ndez, M. (ed.) 26th International Conference on Rewriting Techniques and Applications, RTA 2015, June 29 to July 1, 2015, Warsaw, Poland. LIPIcs, vol. 36, pp. 365\u2013378. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik (2015). \nhttps:\/\/doi.org\/10.4230\/LIPIcs.RTA.2015.365","DOI":"10.4230\/LIPIcs.RTA.2015.365"},{"key":"1_CR58","unstructured":"Visser, E.: A family of syntax definition formalisms. In: van den Brand, M.G.J., Estrela, V.V. (eds.) ASF+SDF 1995. A Workshop on Generating Tools from Algebraic Specifications. Technical report P9504, Programming Research Group, University of Amsterdam (May 1995)"},{"key":"1_CR59","unstructured":"Visser, E.: A case study in optimizing parsing schemata by disambiguation filters. In: International Workshop on Parsing Technology (IWPT 1997), pp. 210\u2013224. Massachusetts Institute of Technology, Boston (September 1997)"},{"key":"1_CR60","unstructured":"Visser, E.: Scannerless generalized-LR parsing. Tech. rep. P9707, Programming Research Group, University of Amsterdam (July 1997)"},{"key":"1_CR61","unstructured":"Visser, E.: Syntax definition for language prototyping. Ph.D. thesis, University of Amsterdam (September 1997)"},{"key":"1_CR62","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"291","DOI":"10.1007\/978-3-540-88643-3_7","volume-title":"Generative and Transformational Techniques in Software Engineering II","author":"E Visser","year":"2008","unstructured":"Visser, E.: WebDSL: a case study in domain-specific language engineering. In: L\u00e4mmel, R., Visser, J., Saraiva, J. (eds.) GTTSE 2007. LNCS, vol. 5235, pp. 291\u2013373. Springer, Heidelberg (2008). \nhttps:\/\/doi.org\/10.1007\/978-3-540-88643-3_7"},{"key":"1_CR63","doi-asserted-by":"publisher","unstructured":"Vollebregt, T., Kats, L.C.L., Visser, E.: Declarative specification of template-based textual editors. In: Sloane, A., Andova, S. (eds.) International Workshop on Language Descriptions, Tools, and Applications, LDTA 2012, Tallinn, Estonia, March 31\u2013April 1, 2012, pp. 1\u20137. ACM (2012). \nhttps:\/\/doi.org\/10.1145\/2427048.2427056","DOI":"10.1145\/2427048.2427056"},{"issue":"5","key":"1_CR64","doi-asserted-by":"publisher","first-page":"35","DOI":"10.1109\/MS.2014.100","volume":"31","author":"G Wachsmuth","year":"2014","unstructured":"Wachsmuth, G., Konat, G., Visser, E.: Language design with the Spoofax language workbench. IEEE Softw. 31(5), 35\u201343 (2014). \nhttps:\/\/doi.org\/10.1109\/MS.2014.100","journal-title":"IEEE Softw."},{"issue":"5","key":"1_CR65","doi-asserted-by":"publisher","first-page":"980","DOI":"10.1145\/293677.293678","volume":"20","author":"TA Wagner","year":"1998","unstructured":"Wagner, T.A., Graham, S.L.: Efficient and flexible incremental parsing. ACM Trans. Program. Lang. Syst. 20(5), 980\u20131013 (1998). \nhttps:\/\/doi.org\/10.1145\/293677.293678","journal-title":"ACM Trans. Program. Lang. Syst."},{"issue":"1\u20132","key":"1_CR66","doi-asserted-by":"publisher","first-page":"39","DOI":"10.1016\/j.scico.2009.07.004","volume":"75","author":"EV Wyk","year":"2010","unstructured":"Wyk, E.V., Bodin, D., Gao, J., Krishnan, L.: Silver: an extensible attribute grammar system. Sci. Comput. Program. 75(1\u20132), 39\u201354 (2010). \nhttps:\/\/doi.org\/10.1016\/j.scico.2009.07.004","journal-title":"Sci. Comput. Program."}],"container-title":["Lecture Notes in Computer Science","Software Engineering and Formal Methods"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-58768-0_1","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,9,11]],"date-time":"2020-09-11T12:05:13Z","timestamp":1599825913000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-58768-0_1"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020]]},"ISBN":["9783030587673","9783030587680"],"references-count":66,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-58768-0_1","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020]]},"assertion":[{"value":"8 September 2020","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"SEFM","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Software Engineering and Formal Methods","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Amsterdam","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"The Netherlands","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2020","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"14 September 2020","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"18 September 2020","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"18","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"sefm2020","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/event.cwi.nl\/sefm2020\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}