Generating a fluent API with syntax checking from an LR grammar

Author:

Yamazaki Tetsuro1,Nakamaru Tomoki1,Ichikawa Kazuhiro1,Chiba Shigeru1

Affiliation:

1. University of Tokyo, Japan

Abstract

This paper proposes a fluent API generator for Scala, Haskell, and C++. It receives a grammar definition and generates a code skeleton of the library in the host programming language. The generated library is accessed through a chain of method calls; this style of API is called a fluent API. The library uses the host-language type checker to detect an invalid chain of method calls. Each method call is regarded as a lexical token in the embedded domain specific language implemented by that library. A sequence of the lexical tokens is checked and, if the sequence is not acceptable by the grammar, a type error is reported during compilation time. A contribution of this paper is to present an algorithm for generating the code-skeleton for a fluent API that reports a type error when a chain of method calls to the library does not match the given LR grammar. Our algorithm works in Scala, Haskell, and C++. To encode LR parsing, it uses the method/function overloading available in those languages. It does not need an advanced type system, or exponential compilation time or memory consumption. This paper also presents our implementation of the proposed generator.

Publisher

Association for Computing Machinery (ACM)

Subject

Safety, Risk, Reliability and Quality,Software

Reference30 articles.

1. Roland Bock. 2016. rbock/sqlpp11: A type safe SQL template library for C++. https://github.com/rbock/sqlpp11 . Roland Bock. 2016. rbock/sqlpp11: A type safe SQL template library for C++. https://github.com/rbock/sqlpp11 .

2. John Cocke. 1969. Programming Languages and Their Compilers: Preliminary Notes. John Cocke. 1969. Programming Languages and Their Compilers: Preliminary Notes.

3. Building and using pluggable type-checkers

4. Apache Software Foundation. 2014. Apache Phoenix. https://phoenix.apache.org/ . Apache Software Foundation. 2014. Apache Phoenix. https://phoenix.apache.org/ .

Cited by 7 articles. 订阅此论文施引文献 订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献

1. Type Automata;Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis;2023-07-12

2. Domain-Specific Language for Modeling Fluent API;2023 15th International Conference on Electronics, Computers and Artificial Intelligence (ECAI);2023-06-29

3. Fluent APIs in Functional Languages;Proceedings of the ACM on Programming Languages;2023-04-06

4. Yet Another Generating Method of Fluent Interfaces Supporting Flat- and Sub-chaining Styles;Proceedings of the 15th ACM SIGPLAN International Conference on Software Language Engineering;2022-11-29

5. Study of the subtyping machine of nominal subtyping with variance;Proceedings of the ACM on Programming Languages;2021-10-20

同舟云学术

1.学者识别学者识别

2.学术分析学术分析

3.人才评估人才评估

"同舟云学术"是以全球学者为主线,采集、加工和组织学术论文而形成的新型学术文献查询和分析系统,可以对全球学者进行文献检索和人才价值评估。用户可以通过关注某些学科领域的顶尖人物而持续追踪该领域的学科进展和研究前沿。经过近期的数据扩容,当前同舟云学术共收录了国内外主流学术期刊6万余种,收集的期刊论文及会议论文总量共计约1.5亿篇,并以每天添加12000余篇中外论文的速度递增。我们也可以为用户提供个性化、定制化的学者数据。欢迎来电咨询!咨询电话:010-8811{复制后删除}0370

www.globalauthorid.com

TOP

Copyright © 2019-2024 北京同舟云网络信息技术有限公司
京公网安备11010802033243号  京ICP备18003416号-3