Block-based programming systems employ a jigsaw metaphor to write programs. They are popular in the domain of programming education (e.g., Scratch), but also used as a programming interface for end-users in other disciplines, such as arts, robotics, and configuration management. In particular, block-based environments promise a convenient interface for Domain-Specific Languages (DSLs) for domain experts who might lack a traditional programming education. However, building a block-based environment for a DSL from scratch requires significant effort. This paper presents an approach to engineer block-based language interfaces by reusing existing language artifacts. We present Kogi, a tool for deriving block-based environments from context-free grammars. We identify and define the abstract structure for describing block-based environments. Kogi transforms a context-free grammar into this structure, which then generates a block-based environment based on Google Blockly. The approach is illustrated with four case studies, a DSL for state machines, Sonification Blocks (a DSL for sound synthesis), Pico (a simple programming language), and QL (a DSL for questionnaires). The results show that usable block-based environments can be derived from context-free grammars, and with an order of magnitude reduction in effort.
{"title":"Block-based syntax from context-free grammars","authors":"M. V. Merino, T. Storm","doi":"10.1145/3426425.3426948","DOIUrl":"https://doi.org/10.1145/3426425.3426948","url":null,"abstract":"Block-based programming systems employ a jigsaw metaphor to write programs. They are popular in the domain of programming education (e.g., Scratch), but also used as a programming interface for end-users in other disciplines, such as arts, robotics, and configuration management. In particular, block-based environments promise a convenient interface for Domain-Specific Languages (DSLs) for domain experts who might lack a traditional programming education. However, building a block-based environment for a DSL from scratch requires significant effort. This paper presents an approach to engineer block-based language interfaces by reusing existing language artifacts. We present Kogi, a tool for deriving block-based environments from context-free grammars. We identify and define the abstract structure for describing block-based environments. Kogi transforms a context-free grammar into this structure, which then generates a block-based environment based on Google Blockly. The approach is illustrated with four case studies, a DSL for state machines, Sonification Blocks (a DSL for sound synthesis), Pico (a simple programming language), and QL (a DSL for questionnaires). The results show that usable block-based environments can be derived from context-free grammars, and with an order of magnitude reduction in effort.","PeriodicalId":310467,"journal":{"name":"Software Language Engineering","volume":"106 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-11-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124098948","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-09-15DOI: 10.1007/978-3-319-11245-9_18
M. Hills
{"title":"Streamlining Control Flow Graph Construction with DCFlow","authors":"M. Hills","doi":"10.1007/978-3-319-11245-9_18","DOIUrl":"https://doi.org/10.1007/978-3-319-11245-9_18","url":null,"abstract":"","PeriodicalId":310467,"journal":{"name":"Software Language Engineering","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128130102","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-09-15DOI: 10.1007/978-3-319-11245-9_6
Andrei Chis, Tudor Gîrba, Oscar Nierstrasz
{"title":"The Moldable Debugger: A Framework for Developing Domain-Specific Debuggers","authors":"Andrei Chis, Tudor Gîrba, Oscar Nierstrasz","doi":"10.1007/978-3-319-11245-9_6","DOIUrl":"https://doi.org/10.1007/978-3-319-11245-9_6","url":null,"abstract":"","PeriodicalId":310467,"journal":{"name":"Software Language Engineering","volume":"20 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134551868","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-09-15DOI: 10.1007/978-3-319-11245-9_1
B. Meyers, R. Deshayes, L. Lucio, Eugene Syriani, H. Vangheluwe, M. Wimmer
{"title":"ProMoBox: A Framework for Generating Domain-Specific Property Languages","authors":"B. Meyers, R. Deshayes, L. Lucio, Eugene Syriani, H. Vangheluwe, M. Wimmer","doi":"10.1007/978-3-319-11245-9_1","DOIUrl":"https://doi.org/10.1007/978-3-319-11245-9_1","url":null,"abstract":"","PeriodicalId":310467,"journal":{"name":"Software Language Engineering","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114940959","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-09-15DOI: 10.1007/978-3-319-11245-9_7
Aleksandar Jaksic, R. France, P. Collet, Sudipto Ghosh
{"title":"Evaluating the Usability of a Visual Feature Modeling Notation","authors":"Aleksandar Jaksic, R. France, P. Collet, Sudipto Ghosh","doi":"10.1007/978-3-319-11245-9_7","DOIUrl":"https://doi.org/10.1007/978-3-319-11245-9_7","url":null,"abstract":"","PeriodicalId":310467,"journal":{"name":"Software Language Engineering","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125000041","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-09-15DOI: 10.1007/978-3-319-11245-9_3
M. Völter, J. Siegmund, T. Berger, Bernd Kolb
{"title":"Towards User-Friendly Projectional Editors","authors":"M. Völter, J. Siegmund, T. Berger, Bernd Kolb","doi":"10.1007/978-3-319-11245-9_3","DOIUrl":"https://doi.org/10.1007/978-3-319-11245-9_3","url":null,"abstract":"","PeriodicalId":310467,"journal":{"name":"Software Language Engineering","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125047538","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-09-15DOI: 10.1007/978-3-319-11245-9_13
Robert Bill, Sebastian Gabmeyer, Petra Kaufmann, M. Seidl
{"title":"Model Checking of CTL-Extended OCL Specifications","authors":"Robert Bill, Sebastian Gabmeyer, Petra Kaufmann, M. Seidl","doi":"10.1007/978-3-319-11245-9_13","DOIUrl":"https://doi.org/10.1007/978-3-319-11245-9_13","url":null,"abstract":"","PeriodicalId":310467,"journal":{"name":"Software Language Engineering","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131833649","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-09-15DOI: 10.1007/978-3-319-11245-9_17
Maris Jukss, Clark Verbrugge, Dániel Varró, H. Vangheluwe
{"title":"Dynamic Scope Discovery for Model Transformations","authors":"Maris Jukss, Clark Verbrugge, Dániel Varró, H. Vangheluwe","doi":"10.1007/978-3-319-11245-9_17","DOIUrl":"https://doi.org/10.1007/978-3-319-11245-9_17","url":null,"abstract":"","PeriodicalId":310467,"journal":{"name":"Software Language Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130448173","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-09-15DOI: 10.1007/978-3-319-11245-9_16
Kevin Williams, E. V. Wyk
{"title":"Origin Tracking in Attribute Grammars","authors":"Kevin Williams, E. V. Wyk","doi":"10.1007/978-3-319-11245-9_16","DOIUrl":"https://doi.org/10.1007/978-3-319-11245-9_16","url":null,"abstract":"","PeriodicalId":310467,"journal":{"name":"Software Language Engineering","volume":"48 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127151696","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}