Article 31

ISBN: 979-8-89480-841-3


Abstract: Language workbenches and product lines allow users to customize programming languages by providing a framework for the creation of Domain Specific Languages (DSLs). They allow for quicker language development, but still require some programming. The customization offered by workbenches and product lines is focused towards adapting to new domains. The purpose of this research is to introduce a new approach to language customization. This research proposes a language designed to be easily customized and configured for new users, rather than new domains, while still offering language extension. Users can simply select options to configure the syntax and semantics of their personal preferences. This offers a more approachable take to language customization than most language A Configurable Compiled Language With Integrated Transpilation Milan Lustig workbenches, especially for inexperienced developers. Developers may also be able to more smoothly adapt to new languages if user-oriented customization is applied similarly to gradual learning. User-oriented customization is also accompanied by an inter-configuration transpiler and standardized language form, ensuring that code written in custom configurations is still readable by all users. User-oriented customization was implemented in a general purpose compiled C-based language in which users are able to configure the syntax and semantics by editing a Tom’s Obvious Minimal Language (TOML) configuration file. From the creation of this language, it can be concluded that user-oriented customization can reasonably be implemented into large modern general-purpose compiled languages and, when accompanied by one-to-one syntax translation between 77 • NYCSEA Vol. 2 ISBN 979-8-89238-262-5 JSEA-Social Economics & Applied Science | NYCSEA - Vol. 2 forms, can be used by many people with many configurations with no added friction.

References

  1. Cazzola, W., & Olivares, D. M. Gradually Learning Programming Supported by a Growable Programming Language, 4(3), 404–415.
  2. Hermans, F. (2020). Hedy: A Gradual Language for Programming Education. In Proceedings of the 2020 ACM Conference on International Computing Education Research (pp. 259–270). ACM. https://doi.org/10.1145/3372782.3406262
  3. Aycock, J. A Brief History of Just-in-Time Compilation, 35(2), 97–113.
  4. Cooper, K. Engineering a Compiler. Elsevier. https://doi.org/10.1016/C2014-0-01395-5
  5. Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. Compilers: Principles, Techniques, & Tools.
  6. Lattner, C. (2008). Introduction to the LLVM Compiler System. ACAT 2008.
  7. Lattner, C. LLVM and Clang: Next Generation Compiler Technology. BSD Conference.
  8. Lattner, C., & Adve, V. (2004). LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In International Symposium on Code Generation and Optimization (CGO 2004) (pp. 75–86). IEEE.
  9. Harper, R. Practical Foundations for Programming Languages (2nd ed.). Cambridge University Press.
  10. Grune, D., & Jacobs, C. J. H. Parsing Techniques. Monographs in Computer Science. Springer. https://doi.org/10.1007/978-0-387-68954-8
  11. Wang, B., Kolluri, A., Nikolić, I., Baluta, T., & Saxena, P. User-Customizable Transpilation of Scripting Languages, 7, 201–229. https://doi.org/10.1145/3586034