Preview

Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS)

Advanced search

TQL: a Case Study of Integrating DSL in a Product

https://doi.org/10.15514/ISPRAS-2024-36(2)-2

Abstract

Domain-specific languages power numerous modern applications and libraries, including but not limited to: Wolfram Alpha, Microsoft Excel, Graphviz. This work aims to share the experience gathered from developing TQL (Talisman Query Language) – a domain-specific language used in Talisman platform. Talisman platform is a set of tools to automate data processing tasks, developed by Ivannikov Institute for System Programming of RAS. TQL implementation, discussed in this article, supports error-recovery, can be run directly inside a browser as well as on a server, and it also has an interactive playground that visualizes the parse tree while typing. This article describes several techniques and technologies that were used to make these qualities possible while keeping a single, maintainable codebase.

About the Author

Artyom Dmitrievich BELOUSOV
Institute for System Programming of the Russian Academy of Sciences, Higher School of Economics
Russian Federation

Senior laboratory assistant, student of Higher School of Economics. Research interests: compiler design and cloud computing.



References

1. M. Fowler and R. Parsons, Domain-Specific Languages. Boston, MA: Addison-Wesley Educational, 2009.

2. “TALISMAN – tracking and learning insights from social media analysis,” Ispras.ru. [Online]. Available: https://talisman.ispras.ru/. [Accessed: 13-May-2024].

3. M. Karpov, “megaparsec: Industrial-strength monadic parser combinator library.” [Online]. Available: https://github.com/mrkkrp/megaparsec. [Accessed: 31-Mar-2024].

4. J. Barretto, “chumsky: Write expressive, high-performance parsers with ease.” [Online]. Available: https://github.com/zesterer/chumsky. [Accessed: 31-Mar-2024].

5. “Language Server Protocol Specification,” Github.io. [Online]. Available: https://microsoft.github.io/language-serverprotocol/specifications/lsp/3.17/specification/. [Accessed: 31-Mar-2024].

6. C. Donnelly and R. Stallman, Bison. Samurai Media Limited, 2015.

7. A. Kladov, “Challenging LR parsing,” rustanalyzer, 16-Sep-2020. [Online]. Available: https://rustanalyzer.github.io/blog/2020/09/16/challeging-LR-parsing.html. [Accessed: 12-May-2024].

8. T. Parr, Definitive ANTLR 4 Reference, 2nd ed. Raleigh, NC: Pragmatic Programmers, 2013

9. S. Efftinge and M. Spoenemann, “Xtext - Language Engineering Made Easy!,” Eclipse.dev. [Online]. Available: https://eclipse.dev/Xtext/. [Accessed: 12-May-2024].

10. “GraphQL,” Graphql.org, 26-Oct-2021. [Online]. Available: https://spec.graphql.org/October2021/. [Accessed: 02-Jul-2024].

11. “rust-analyzer: A Rust compiler front-end for IDEs.” [Online]. Available: https://github.com/rust-lang/rust-analyzer. [Accessed: 31-Mar-2024].

12. “Introducing ungrammar,” Github.io, 24-Oct-2020. [Online]. Available: https://rust-analyzer.github.io//blog/2020/10/24/introducing-ungrammar.html. [Accessed: 02-Jul-2024].


Review

For citations:


BELOUSOV A.D. TQL: a Case Study of Integrating DSL in a Product. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2024;36(2):21-32. https://doi.org/10.15514/ISPRAS-2024-36(2)-2



Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)