{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,18]],"date-time":"2025-11-18T09:23:31Z","timestamp":1763457811021},"reference-count":79,"publisher":"Walter de Gruyter GmbH","issue":"1","license":[{"start":{"date-parts":[[2019,1,1]],"date-time":"2019-01-01T00:00:00Z","timestamp":1546300800000},"content-version":"unspecified","delay-in-days":0,"URL":"http:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2019,1,1]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Providing IDE support for a programming language or a DSL (Domain Specific Language) helps the users of the language to be more productive and to have an immediate feedback on possible errors in a program. Static types can drive IDE mechanisms such as the content assist to propose sensible completions in a given program context. Types can also be used to enrich other typical IDE parts such as the Outline and theHovering pop-ups. In this paper, we focus on statically typed imperative languages, adopting some form of type inference. We present a few general patterns for implementing efficient type systems, focusing on type error recovery. This way, the type system is able to type as many parts of the program as possible, keeping a good IDE experience. Type error messages will be placed on the important parts of the program, avoiding cascading errors that can confuse the user. We show two case studies:we apply the presented patterns to implement the type system of two statically typed DSLs, a simple expression language and a reduced Java-like language, with OOP features. We use Xtext as the language workbench for implementing the compiler and the IDE support andXsemantics, a DSL for implementing type systems using a syntax that mimics formal systems. The patterns shown in the paper can be reused also for implementing languages with other language frameworks.<\/jats:p>","DOI":"10.1515\/comp-2019-0003","type":"journal-article","created":{"date-parts":[[2019,3,27]],"date-time":"2019-03-27T20:20:07Z","timestamp":1553718007000},"page":"52-79","source":"Crossref","is-referenced-by-count":3,"title":["Type errors for the IDE with Xtext and Xsemantics"],"prefix":"10.1515","volume":"9","author":[{"given":"Lorenzo","family":"Bettini","sequence":"first","affiliation":[{"name":"Dipartimento di Statistica, Informatica, Applicazioni , Universit\u00e0 di Firenze , Italy Firenze"}]}],"member":"374","published-online":{"date-parts":[[2019,3,26]]},"reference":[{"key":"2022042707443485364_j_comp-2019-0003_ref_001_w2aab3b7b2b1b6b1ab1ab1Aa","unstructured":"[1] Fowler M., Language Workbenches: The killer-app for domain specific languages?, 2005, https:\/\/www.martinfowler.com\/articles\/languageWorkbench.html"},{"key":"2022042707443485364_j_comp-2019-0003_ref_002_w2aab3b7b2b1b6b1ab1ab2Aa","unstructured":"[2] Bettini L., Implementing domain-specific languages with Xtext and Xtend, Packt Publishing, 2nd ed., 2016"},{"key":"2022042707443485364_j_comp-2019-0003_ref_003_w2aab3b7b2b1b6b1ab1ab3Aa","doi-asserted-by":"crossref","unstructured":"[3] Igarashi A., Pierce B., Wadler P., Featherweight Java: a minimal core calculus for Java and GJ, ACM TOPLAS, 2001, 23(3), 396\u201345010.1145\/503502.503505","DOI":"10.1145\/503502.503505"},{"key":"2022042707443485364_j_comp-2019-0003_ref_004_w2aab3b7b2b1b6b1ab1ab4Aa","doi-asserted-by":"crossref","unstructured":"[4] Bettini L., Implementing type systems for the IDE with Xsemantics, Journal of Logical and Algebraic Methods in Programming, 2016, 85(5, Part 1), 655\u201368010.1016\/j.jlamp.2015.11.005","DOI":"10.1016\/j.jlamp.2015.11.005"},{"key":"2022042707443485364_j_comp-2019-0003_ref_005_w2aab3b7b2b1b6b1ab1ab5Aa","unstructured":"[5] Aho A. V., Lam M. S., Sethi R., Ullman J. D. (Eds.), Compilers: principles, techniques, and tools, Addison Wesley, 2nd ed., 2007"},{"key":"2022042707443485364_j_comp-2019-0003_ref_006_w2aab3b7b2b1b6b1ab1ab6Aa","unstructured":"[6] Haase A., V\u00f6lter M., Efftinge S., Kolb B., Introduction to open Architecture Ware 4.1.2, In: MDD Tool Implementers Forum, 2007"},{"key":"2022042707443485364_j_comp-2019-0003_ref_007_w2aab3b7b2b1b6b1ab1ab7Aa","doi-asserted-by":"crossref","unstructured":"[7] Kats L. C. L., Visser E., The Spoofax language workbench, Rules for declarative specification of languages and IDEs, In: OOPSLA, ACM, 2010, 444\u201346310.1145\/1932682.1869497","DOI":"10.1145\/1932682.1869497"},{"key":"2022042707443485364_j_comp-2019-0003_ref_008_w2aab3b7b2b1b6b1ab1ab8Aa","doi-asserted-by":"crossref","unstructured":"[8] Hemel Z., Groenewegen D. M., Kats L. C. L., Visser E., Static consistency checking of Web applications with WebDSL, Journal of Symbolic Computation, 2011, 46(2), 150\u201318210.1016\/j.jsc.2010.08.006","DOI":"10.1016\/j.jsc.2010.08.006"},{"key":"2022042707443485364_j_comp-2019-0003_ref_009_w2aab3b7b2b1b6b1ab1ab9Aa","unstructured":"[9] Steinberg D., Budinsky F., Paternostro M., Merks E., EMF: Eclipse Modeling Framework, Addison-Wesley, 2nd ed., 2008"},{"key":"2022042707443485364_j_comp-2019-0003_ref_010_w2aab3b7b2b1b6b1ab1ac10Aa","unstructured":"[10] Prasanna D. R., Dependency Injection: Design patterns using Spring and Guice, Manning, 1st ed., 2009"},{"key":"2022042707443485364_j_comp-2019-0003_ref_011_w2aab3b7b2b1b6b1ab1ac11Aa","doi-asserted-by":"crossref","unstructured":"[11] Reps T., Teitelbaum T., The synthesizer generator, In: Software Engineering Symposiumon Practical Software Development Environments, ACM, 1984, 42\u20134810.1145\/390010.808247","DOI":"10.1145\/390010.808247"},{"key":"2022042707443485364_j_comp-2019-0003_ref_012_w2aab3b7b2b1b6b1ab1ac12Aa","doi-asserted-by":"crossref","unstructured":"[12] Sewell P., Nardelli F. Z., Owens S., Peskine G., Ridge T., Sarkar S., Strnisa R., Ott: Effective tool support for the working semanticist, Journal of Functional Programming, 2010, 20(1), 71\u201312210.1017\/S0956796809990293","DOI":"10.1017\/S0956796809990293"},{"key":"2022042707443485364_j_comp-2019-0003_ref_013_w2aab3b7b2b1b6b1ab1ac13Aa","doi-asserted-by":"crossref","unstructured":"[13] Ekman T., Hedin G., The JastAdd system \u2013 modular extensible compiler construction, Science of Computer Programming, 2007, 69(1-3), 14\u20132610.1016\/j.scico.2007.02.003","DOI":"10.1016\/j.scico.2007.02.003"},{"key":"2022042707443485364_j_comp-2019-0003_ref_014_w2aab3b7b2b1b6b1ab1ac14Aa","unstructured":"[14] Konat G., Kats L., Wachsmuth G., Visser E., Declarative name binding and scope rules, In: SLE, LNCS, Springer, 2012, 7745, 311\u201333110.1007\/978-3-642-36089-3_18"},{"key":"2022042707443485364_j_comp-2019-0003_ref_015_w2aab3b7b2b1b6b1ab1ac15Aa","unstructured":"[15] Pierce B. C., Types and Programming Languages, Cambridge, MA: The MIT Press, 2002"},{"key":"2022042707443485364_j_comp-2019-0003_ref_016_w2aab3b7b2b1b6b1ab1ac16Aa","doi-asserted-by":"crossref","unstructured":"[16] Cardelli L., Type systems, ACM Computing Surveys, 1996, 28(1), 263\u201326410.1145\/234313.234418","DOI":"10.1145\/234313.234418"},{"key":"2022042707443485364_j_comp-2019-0003_ref_017_w2aab3b7b2b1b6b1ab1ac17Aa","unstructured":"[17] Hindley J. R., Basic Simple Type Theory, Cambridge University Press, 1987"},{"key":"2022042707443485364_j_comp-2019-0003_ref_018_w2aab3b7b2b1b6b1ab1ac18Aa","doi-asserted-by":"crossref","unstructured":"[18] Visser E., Wachsmuth G., Tolmach A. P., Neron P., Vergu V. A., Passalaqua A., Konat G., A language designer\u2019s workbench: a one-stop-shop for implementation and verification of language designs, In: Onward!, ACM, 2014, 95\u201311110.1145\/2661136.2661149","DOI":"10.1145\/2661136.2661149"},{"key":"2022042707443485364_j_comp-2019-0003_ref_019_w2aab3b7b2b1b6b1ab1ac19Aa","unstructured":"[19] Vergu V. A., Neron P., Visser E., DynSem: A DSL for dynamic semantics specification, In: RTA, LIPIcs, Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2015, 3, 365\u2013378"},{"key":"2022042707443485364_j_comp-2019-0003_ref_020_w2aab3b7b2b1b6b1ab1ac20Aa","doi-asserted-by":"crossref","unstructured":"[20] Efftinge S., Eysholdt M., K\u00f6hnlein J., Zarnekow S., Hasselbring W., von Massow R., Xbase: implementing domain-specific languages for Java, In: GPCE, ACM, 2012, 112\u201312110.1145\/2480361.2371419","DOI":"10.1145\/2480361.2371419"},{"key":"2022042707443485364_j_comp-2019-0003_ref_021_w2aab3b7b2b1b6b1ab1ac21Aa","unstructured":"[21] Gosling J., Joy B., Steele G., Bracha G., Buckley A., The Java language specification, Java SE 7 Edition, Addison-Wesley, 2013"},{"key":"2022042707443485364_j_comp-2019-0003_ref_022_w2aab3b7b2b1b6b1ab1ac22Aa","unstructured":"[22] Bettini L., von Pilgrim J., Reiser M.-O., Implementing a typed Java script and its IDE: a case-study with Xsemantics, International Journal on Advances in Software, 2016, 9(3-4), 283\u2013303"},{"key":"2022042707443485364_j_comp-2019-0003_ref_023_w2aab3b7b2b1b6b1ab1ac23Aa","unstructured":"[23] Johnson G. F. , Walz J. A., A maximum-flow approach to anomaly isolation in unification-based incremental type inference, In: POPL, ACM, 1986, 44\u20135710.1145\/512644.512649"},{"key":"2022042707443485364_j_comp-2019-0003_ref_024_w2aab3b7b2b1b6b1ab1ac24Aa","unstructured":"[24] Wand M., Finding the source of type errors, In: POPL, ACM, 1986, 38\u20134310.1145\/512644.512648"},{"key":"2022042707443485364_j_comp-2019-0003_ref_025_w2aab3b7b2b1b6b1ab1ac25Aa","unstructured":"[25] Heeren B., Top Quality Type Error Messages, PhD thesis, Utrecht University, Netherlands, 2005"},{"key":"2022042707443485364_j_comp-2019-0003_ref_026_w2aab3b7b2b1b6b1ab1ac26Aa","doi-asserted-by":"crossref","unstructured":"[26] Lerner B. S., Flower M., Grossman D., Chambers C., Searching for type-error messages, In: PLDI, ACM, 2007, 425\u201343410.1145\/1273442.1250783","DOI":"10.1145\/1273442.1250783"},{"key":"2022042707443485364_j_comp-2019-0003_ref_027_w2aab3b7b2b1b6b1ab1ac27Aa","unstructured":"[27] Chambers C., Chen S., Le D., Scaffidi C., The function, and dysfunction, of information sources in learning functional programming, Journal of Computing Sciences in Colleges, 2012, 28(1), 220\u2013226"},{"key":"2022042707443485364_j_comp-2019-0003_ref_028_w2aab3b7b2b1b6b1ab1ac28Aa","doi-asserted-by":"crossref","unstructured":"[28] Tirronen V., Uusi-M\u00e4kel\u00e4 S., Isom\u00f6tt\u00f6nen V., Understanding beginners\u2019 mistakes with Haskell, Journal of Functional Programming, 2015, 2510.1017\/S0956796815000179","DOI":"10.1017\/S0956796815000179"},{"key":"2022042707443485364_j_comp-2019-0003_ref_029_w2aab3b7b2b1b6b1ab1ac29Aa","doi-asserted-by":"crossref","unstructured":"[29] Hudak P., Building domain-specific embedded languages, ACM Computing Surveys, 1996, 28(4es), 19610.1145\/242224.242477","DOI":"10.1145\/242224.242477"},{"key":"2022042707443485364_j_comp-2019-0003_ref_030_w2aab3b7b2b1b6b1ab1ac30Aa","unstructured":"[30] Hage J., DOMain Specific Type Error Diagnosis (DOMSTED), Tech. Rep. UU-CS-2014-019, Department of Information and Computing Sciences, Utrecht University, 2014"},{"key":"2022042707443485364_j_comp-2019-0003_ref_031_w2aab3b7b2b1b6b1ab1ac31Aa","doi-asserted-by":"crossref","unstructured":"[31] Heeren B., Hage J., Swierstra S. D., Scripting the type inference process, In: ICFP, ACM, 2003, 3\u20131310.1145\/944746.944707","DOI":"10.1145\/944746.944707"},{"key":"2022042707443485364_j_comp-2019-0003_ref_032_w2aab3b7b2b1b6b1ab1ac32Aa","doi-asserted-by":"crossref","unstructured":"[32] Stuckey P. J., Sulzmann M., Wazny J., Improving type error diagnosis, In: SIGPLAN Workshop on Haskell, ACM, 2004, 80\u20139110.1145\/1017472.1017486","DOI":"10.1145\/1017472.1017486"},{"key":"2022042707443485364_j_comp-2019-0003_ref_033_w2aab3b7b2b1b6b1ab1ac33Aa","unstructured":"[33] Wazny J., Type inference and type error diagnosis for Hindley\/Milner with extensions, PhD thesis, University of Melbourne, Australia, 2006"},{"key":"2022042707443485364_j_comp-2019-0003_ref_034_w2aab3b7b2b1b6b1ab1ac34Aa","unstructured":"[34] Plociniczak H., Miller H., Odersky M., Improving humancompiler interaction through customizable type feedback, Tech. Rep. 197948, EPFL, 2014"},{"key":"2022042707443485364_j_comp-2019-0003_ref_035_w2aab3b7b2b1b6b1ab1ac35Aa","doi-asserted-by":"crossref","unstructured":"[35] Chargu\u00e9raud A., Improving type error messages in OCaml, In: ML\/OCaml, EPTCS, 2014, 198, 80\u20139710.4204\/EPTCS.198.4","DOI":"10.4204\/EPTCS.198.4"},{"key":"2022042707443485364_j_comp-2019-0003_ref_036_w2aab3b7b2b1b6b1ab1ac36Aa","unstructured":"[36] Serrano A., Hage J., Type error diagnosis for embedded DSLs by two-stage specialized type rules, In: ESOP, LNCS, Springer, 2016, 9632, 672\u201369810.1007\/978-3-662-49498-1_26"},{"key":"2022042707443485364_j_comp-2019-0003_ref_037_w2aab3b7b2b1b6b1ab1ac37Aa","unstructured":"[37] Serrano A., Hage J., Type error customization in GHC: Controlling expression-level type errors by type-level programming, In: IFL, ACM, 2017, 2:1\u20132:1510.1145\/3205368.3205370"},{"key":"2022042707443485364_j_comp-2019-0003_ref_038_w2aab3b7b2b1b6b1ab1ac38Aa","doi-asserted-by":"crossref","unstructured":"[38] Wu B., Chen S., How type errors were fixed and what students did?, In: OOPSLA, ACM, 2017, 1, 105:1\u2013105:2710.1145\/3133929","DOI":"10.1145\/3133929"},{"key":"2022042707443485364_j_comp-2019-0003_ref_039_w2aab3b7b2b1b6b1ab1ac39Aa","unstructured":"[39] Chen S., Erwig M., Early detection of type errors in C++ templates, In: PEPM, ACM, 2014, 133\u201314410.1145\/2543728.2543731"},{"key":"2022042707443485364_j_comp-2019-0003_ref_040_w2aab3b7b2b1b6b1ab1ac40Aa","doi-asserted-by":"crossref","unstructured":"[40] el Boustani N., Hage J., Improving type error messages for generic Java, Higher-Order and Symbolic Computation, 2011, 24(1), 3\u20133910.1007\/s10990-011-9070-3","DOI":"10.1007\/s10990-011-9070-3"},{"key":"2022042707443485364_j_comp-2019-0003_ref_041_w2aab3b7b2b1b6b1ab1ac41Aa","unstructured":"[41] Damas L., Milner R., Principal type schemes for functional programs, In: POPL, ACM, 1982, 207\u201321210.1145\/582153.582176"},{"key":"2022042707443485364_j_comp-2019-0003_ref_042_w2aab3b7b2b1b6b1ab1ac42Aa","doi-asserted-by":"crossref","unstructured":"[42] Stuckey P. J., Sulzmann M., Wazny J., Interactive type debugging in Haskell, In: SIGPLAN Workshop on Haskell, ACM, 2003, 72\u20138310.1145\/871895.871903","DOI":"10.1145\/871895.871903"},{"key":"2022042707443485364_j_comp-2019-0003_ref_043_w2aab3b7b2b1b6b1ab1ac43Aa","doi-asserted-by":"crossref","unstructured":"[43] Haack C., Wells J., Type error slicing in implicitly typed higherorder languages, Science of Computer Programming, 2004, 50(1), 189\u201322410.1016\/j.scico.2004.01.004","DOI":"10.1016\/j.scico.2004.01.004"},{"key":"2022042707443485364_j_comp-2019-0003_ref_044_w2aab3b7b2b1b6b1ab1ac44Aa","unstructured":"[44] Hage J., Heeren B., Heuristics for type error discovery and recovery, In: IFL, LNCS, Springer, 2007, 4449, 199\u201321610.1007\/978-3-540-74130-5_12"},{"key":"2022042707443485364_j_comp-2019-0003_ref_045_w2aab3b7b2b1b6b1ab1ac45Aa","doi-asserted-by":"crossref","unstructured":"[45] el Boustani N., Hage J., Corrective hints for type incorrect generic Java programs, In: PEPM, ACM, 2010, 5\u20131410.1145\/1706356.1706360","DOI":"10.1145\/1706356.1706360"},{"key":"2022042707443485364_j_comp-2019-0003_ref_046_w2aab3b7b2b1b6b1ab1ac46Aa","doi-asserted-by":"crossref","unstructured":"[46] Chen S., Erwig M., Counter-factual typing for debugging type errors, In: POPL, ACM, 2014, 583\u201359410.1145\/2578855.2535863","DOI":"10.1145\/2578855.2535863"},{"key":"2022042707443485364_j_comp-2019-0003_ref_047_w2aab3b7b2b1b6b1ab1ac47Aa","doi-asserted-by":"crossref","unstructured":"[47] Zhang D., Myers A. C., Vytiniotis D., Jones S. L. P., Diagnosing type errors with class, In: PLDI, ACM, 2015, 12\u20132110.1145\/2813885.2738009","DOI":"10.1145\/2813885.2738009"},{"key":"2022042707443485364_j_comp-2019-0003_ref_048_w2aab3b7b2b1b6b1ab1ac48Aa","doi-asserted-by":"crossref","unstructured":"[48] Wu B., Campora III J. P., Chen S., Learning user friendly typeerror messages, In: OOPSLA, ACM, 2017, 1, 106:1\u2013106:2910.1145\/3133930","DOI":"10.1145\/3133930"},{"key":"2022042707443485364_j_comp-2019-0003_ref_049_w2aab3b7b2b1b6b1ab1ac49Aa","doi-asserted-by":"crossref","unstructured":"[49] Bruch M., Monperrus M., Mezini M., Learning from examples to improve code completion systems, In: ESEC\/SIGSOFT FSE, ACM, 2009, 213\u201322210.1145\/1595696.1595728","DOI":"10.1145\/1595696.1595728"},{"key":"2022042707443485364_j_comp-2019-0003_ref_050_w2aab3b7b2b1b6b1ab1ac50Aa","doi-asserted-by":"crossref","unstructured":"[50] Parr T., Vinju J. J., Towards a universal code formatter through machine learning, In: SLE, ACM, 2016, 137\u201315110.1145\/2997364.2997383","DOI":"10.1145\/2997364.2997383"},{"key":"2022042707443485364_j_comp-2019-0003_ref_051_w2aab3b7b2b1b6b1ab1ac51Aa","unstructured":"[51] Voelter M., Benz S., Dietrich C., Engelmann B., Helander M., Kats L. C. L., Visser E.,Wachsmuth G., DSL Engineering-Designing, Implementing and Using Domain-Specific Languages, 2013"},{"key":"2022042707443485364_j_comp-2019-0003_ref_052_w2aab3b7b2b1b6b1ab1ac52Aa","unstructured":"[52] Pfeiffer M., Pichler J., A comparison of tool support for textual domain-specific languages, In: OOPSLA Workshop on Domain Specific Modeling, 2008, 1\u20137"},{"key":"2022042707443485364_j_comp-2019-0003_ref_053_w2aab3b7b2b1b6b1ab1ac53Aa","doi-asserted-by":"crossref","unstructured":"[53] Erdweg S., van der Storm T., V\u00f6lter M., Tratt L., Bosman R., Cook W. R., et al., Evaluating and comparing language workbenches: Existing results and benchmarks for the future, Computer Languages, Systems & Structures, 2015, 44(A)10.1016\/j.cl.2015.08.007","DOI":"10.1016\/j.cl.2015.08.007"},{"key":"2022042707443485364_j_comp-2019-0003_ref_054_w2aab3b7b2b1b6b1ab1ac54Aa","doi-asserted-by":"crossref","unstructured":"[54] Charles P., Fuhrer R., Sutton Jr. S., Duesterwald E., Vinju J., Accelerating the creation of customized, language-Specific IDEs in Eclipse, In: OOPSLA, ACM, 2009, 191\u201320610.1145\/1639949.1640104","DOI":"10.1145\/1639949.1640104"},{"key":"2022042707443485364_j_comp-2019-0003_ref_055_w2aab3b7b2b1b6b1ab1ac55Aa","doi-asserted-by":"crossref","unstructured":"[55] Jouault F., B\u00e9zivin J., Kurtev I., TCS: a DSL for the specification of textual concrete syntaxes in model engineering, In: GPCE, ACM, 2006, 249\u201325410.1145\/1173706.1173744","DOI":"10.1145\/1173706.1173744"},{"key":"2022042707443485364_j_comp-2019-0003_ref_056_w2aab3b7b2b1b6b1ab1ac56Aa","unstructured":"[56] Heidenreich F., Johannes J., Karol S., Seifert M., Wende C., Derivation and Refinement of Textual Syntax for Models, In: ECMDA-FA, LNCS, Springer, 2009, 5562, 114\u201312910.1007\/978-3-642-02674-4_9"},{"key":"2022042707443485364_j_comp-2019-0003_ref_057_w2aab3b7b2b1b6b1ab1ac57Aa","unstructured":"[57] Voelter M., Language and IDE modularization and composition with MPS, In: GTTSE, LNCS, Springer, 2011, 7680, 383\u201343010.1007\/978-3-642-35992-7_11"},{"key":"2022042707443485364_j_comp-2019-0003_ref_058_w2aab3b7b2b1b6b1ab1ac58Aa","doi-asserted-by":"crossref","unstructured":"[58] Bravenboer M., Kalleberg K. T., Vermaas R., Visser E., Stratego\/XT 0.17. A language and toolset for program transformation, Science of Computer Programming, 2008, 72(1-2), 52\u20137010.1016\/j.scico.2007.11.003","DOI":"10.1016\/j.scico.2007.11.003"},{"key":"2022042707443485364_j_comp-2019-0003_ref_059_w2aab3b7b2b1b6b1ab1ac59Aa","doi-asserted-by":"crossref","unstructured":"[59] Van Antwerpen H., N\u00e9ron P., Tolmach A., Visser E., Wachsmuth G., A constraint language for static semantic analysis based on scope graphs, In: PEPM, ACM, 2016, 49\u20136010.1145\/2847538.2847543","DOI":"10.1145\/2847538.2847543"},{"key":"2022042707443485364_j_comp-2019-0003_ref_060_w2aab3b7b2b1b6b1ab1ac60Aa","doi-asserted-by":"crossref","unstructured":"[60] Van Antwerpen H., Bach Poulsen C., Rouvoet A., Visser E., Scopes as types, In: Proceedings of the ACM on Programming Languages, 2018, 2(OOPSLA), 114:1\u2013114:3010.1145\/3276484","DOI":"10.1145\/3276484"},{"key":"2022042707443485364_j_comp-2019-0003_ref_061_w2aab3b7b2b1b6b1ab1ac61Aa","doi-asserted-by":"crossref","unstructured":"[61] Vacchi E., Cazzola W., Neverlang: A Framework for Feature-Oriented Language Development, Computer Languages, Systems & Structures, 2015, 43(3), 1\u20134010.1016\/j.cl.2015.02.001","DOI":"10.1016\/j.cl.2015.02.001"},{"key":"2022042707443485364_j_comp-2019-0003_ref_062_w2aab3b7b2b1b6b1ab1ac62Aa","unstructured":"[62] V\u00f6lter M., Xtext\/TS - a type system framework for Xtext, 2011, http:\/\/code.google.com\/a\/eclipselabs.org\/p\/xtexttypesystem\/"},{"key":"2022042707443485364_j_comp-2019-0003_ref_063_w2aab3b7b2b1b6b1ab1ac63Aa","doi-asserted-by":"crossref","unstructured":"[63] Wyk E. V., Bodin D., Gao J., Krishnan L., Silver: an extensible attribute grammar system, Science of Computer Programming, 2010, 75(1), 39\u20135410.1016\/j.scico.2009.07.004","DOI":"10.1016\/j.scico.2009.07.004"},{"key":"2022042707443485364_j_comp-2019-0003_ref_064_w2aab3b7b2b1b6b1ab1ac64Aa","unstructured":"[64] B\u00fcrger C., Karol S., Wende C., A\u00dfmann U., Reference attribute grammars for metamodel semantics, In: SLE, LNCS, Springer, 2011, 6563, 22\u20134110.1007\/978-3-642-19440-5_3"},{"key":"2022042707443485364_j_comp-2019-0003_ref_065_w2aab3b7b2b1b6b1ab1ac65Aa","doi-asserted-by":"crossref","unstructured":"[65] Mernik M., Lenic M., Avdicausevic E., Zumer V., LISA: an interactive environment for programming language development, In: Compiler Construction, LNCS, Springer, 2002, 2304, 1\u20134","DOI":"10.1007\/3-540-45937-5_1"},{"key":"2022042707443485364_j_comp-2019-0003_ref_066_w2aab3b7b2b1b6b1ab1ac66Aa","doi-asserted-by":"crossref","unstructured":"[66] Knuth D. E., Semantics of context-free languages,Mathematical Systems Theory, 1968, 2(2), 127\u201314510.1007\/BF01692511","DOI":"10.1007\/BF01692511"},{"key":"2022042707443485364_j_comp-2019-0003_ref_067_w2aab3b7b2b1b6b1ab1ac67Aa","doi-asserted-by":"crossref","unstructured":"[67] Borras P., Clement D., Despeyroux T., Incerpi J., Kahn G., Lang B., Pascual V., CENTAUR: the system, In: Software Engineering Symposium on Practical Software Development Environments, SIGPLAN, ACM, 1988, 24, 14\u20132410.1145\/64140.65005","DOI":"10.1145\/64137.65005"},{"key":"2022042707443485364_j_comp-2019-0003_ref_068_w2aab3b7b2b1b6b1ab1ac68Aa","doi-asserted-by":"crossref","unstructured":"[68] Van den Brand M., Heering J., Klint P., Olivier P. A., Compiling language definitions: the ASF+SDF compiler, ACM TOPLAS, 2002, 24(4), 334\u201336810.1145\/567097.567099","DOI":"10.1145\/567097.567099"},{"key":"2022042707443485364_j_comp-2019-0003_ref_069_w2aab3b7b2b1b6b1ab1ac69Aa","doi-asserted-by":"crossref","unstructured":"[69] Dijkstra A., Swierstra S. D., Ruler: programming type rules, In: FLOPS, LNCS, Springer, 2006, 3945, 30\u20134610.1007\/11737414_4","DOI":"10.1007\/11737414_4"},{"key":"2022042707443485364_j_comp-2019-0003_ref_070_w2aab3b7b2b1b6b1ab1ac70Aa","unstructured":"[70] Felleisen M., Findler R. B., Flatt M., Semantics Engineering with PLT Redex, Cambridge, Mass.: The MIT Press, 2009"},{"key":"2022042707443485364_j_comp-2019-0003_ref_071_w2aab3b7b2b1b6b1ab1ac71Aa","unstructured":"[71] Xu H., EriLex: An Embedded Domain Specific Language Generator, In: TOOLS, LNCS, Springer, 2010, 6141, 192\u201321210.1007\/978-3-642-13953-6_11"},{"key":"2022042707443485364_j_comp-2019-0003_ref_072_w2aab3b7b2b1b6b1ab1ac72Aa","unstructured":"[72] Bettini L., A DSL for writing type systems for Xtext languages, In: PPPJ, ACM, 2011, 31\u20134010.1145\/2093157.2093163"},{"key":"2022042707443485364_j_comp-2019-0003_ref_073_w2aab3b7b2b1b6b1ab1ac73Aa","unstructured":"[73] Bettini L., Stoll D., V\u00f6lter M., Colameo S., Approaches and tools for implementing type systems in Xtext, In: SLE, LNCS, Springer, 2012, 7745, 392\u201341210.1007\/978-3-642-36089-3_22"},{"key":"2022042707443485364_j_comp-2019-0003_ref_074_w2aab3b7b2b1b6b1ab1ac74Aa","doi-asserted-by":"crossref","unstructured":"[74] Bettini L., Implementing Java-like languages in Xtext with Xsemantics, In: OOPS (SAC), ACM, 2013, 1559\u2013156410.1145\/2480362.2480654","DOI":"10.1145\/2480362.2480654"},{"key":"2022042707443485364_j_comp-2019-0003_ref_075_w2aab3b7b2b1b6b1ab1ac75Aa","unstructured":"[75] Heiduk A., Skatulla S., From Spaghetti to Xsemantics - Practical experiences migrating type systems for 12 languages, XtextCon, 2015"},{"key":"2022042707443485364_j_comp-2019-0003_ref_076_w2aab3b7b2b1b6b1ab1ac76Aa","unstructured":"[76] Bettini L., von Pilgrim J., Reiser M.-O., Implementing the Type System for a Typed Javascript and its IDE, In: COMPUTATION TOOLS, IARIA, 2016, 6\u201311"},{"key":"2022042707443485364_j_comp-2019-0003_ref_077_w2aab3b7b2b1b6b1ab1ac77Aa","doi-asserted-by":"crossref","unstructured":"[77] Igarashi A., Nagira H., Union types for object-oriented programming, Journal of Object Technology, 2007, 6(2), 31\u20134510.5381\/jot.2007.6.2.a3","DOI":"10.5381\/jot.2007.6.2.a3"},{"key":"2022042707443485364_j_comp-2019-0003_ref_078_w2aab3b7b2b1b6b1ab1ac78Aa","unstructured":"[78] Cameron N., Ernst E., Drossopoulou S., Towards an Existential Types Model for Java Wildcards, In: Formal Techniques for Javalike Programs (FTfJP), 2007"},{"key":"2022042707443485364_j_comp-2019-0003_ref_079_w2aab3b7b2b1b6b1ab1ac79Aa","unstructured":"[79] Yang J., Michaelson G., Trinder P., Wells J. B., Improved Type Error Reporting, In: Workshop on Implementation of Functional Languages, Aachner Informatik-Berichte, 2000, 71\u201386"}],"container-title":["Open Computer Science"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.degruyter.com\/view\/journals\/comp\/9\/1\/article-p52.xml","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/www.degruyter.com\/document\/doi\/10.1515\/comp-2019-0003\/xml","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/www.degruyter.com\/document\/doi\/10.1515\/comp-2019-0003\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,9,14]],"date-time":"2023-09-14T22:57:52Z","timestamp":1694732272000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.degruyter.com\/document\/doi\/10.1515\/comp-2019-0003\/html"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,1,1]]},"references-count":79,"journal-issue":{"issue":"1","published-online":{"date-parts":[[2019,9,26]]},"published-print":{"date-parts":[[2019,1,1]]}},"alternative-id":["10.1515\/comp-2019-0003"],"URL":"https:\/\/doi.org\/10.1515\/comp-2019-0003","relation":{},"ISSN":["2299-1093"],"issn-type":[{"value":"2299-1093","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,1,1]]}}}