Fling - A Fluent API Generator

Authors Yossi Gil, Ori Roth

Thumbnail PDF


  • Filesize: 0.8 MB
  • 25 pages

Document Identifiers

Author Details

Yossi Gil
  • Technion I.I.T Computer Science Dept., Haifa, Israel
Ori Roth
  • Technion I.I.T Computer Science Dept., Haifa, Israel

Cite AsGet BibTex

Yossi Gil and Ori Roth. Fling - A Fluent API Generator. In 33rd European Conference on Object-Oriented Programming (ECOOP 2019). Leibniz International Proceedings in Informatics (LIPIcs), Volume 134, pp. 13:1-13:25, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2019)


We present the first general and practical solution of the fluent API problem - an algorithm, that given a deterministic language (equivalently, LR(k), k >= 0 language) encodes it in an unbounded parametric polymorphism type system employing only a polynomial number of types. The theoretical result is accompanied by an actual tool Fling - a fluent API compiler-compiler in the venue of YACC, tailored for embedding DSLs in Java.

Subject Classification

ACM Subject Classification
  • Software and its engineering → General programming languages
  • Software and its engineering → Domain specific languages
  • fluent API
  • type system
  • compilation
  • code generation


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Ken Arnold and James Gosling. The Java Programming Language. Addison Wesley, 1996. Google Scholar
  2. Stefano Ceri, Georg Gottlob, and Letizia Tanca. Logic programming and databases. SVNY, 1990. Google Scholar
  3. Bruno Courcelle. On jump-deterministic pushdown automata. Theory of Computing Systems, 11(1):87-109, 1977. Google Scholar
  4. Pierre Deransart, Laurent Cervoni, and AbdelAli Ed-Dbali. Prolog: The Standard: reference manual. Springer-Verlag, 1996. Google Scholar
  5. Yossi Gil and Tomer Levy. Formal language recognition with the Java type checker. In 30th European Conference on Object-Oriented Programming (ECOOP 2016). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2016. Google Scholar
  6. Yossi Gil and David H Lorenz. SOOP - A Synthesizer of an Object-Oriented Parser. TOOLS'95 Europe, pages 81-96, 1995. Google Scholar
  7. Yossi Gil and Yuri Tsoglin. JAMOOS - A Domain-Specific Language for Language Processing. Journal of Computing and Information Technology, 9(4):305-321, 2001. Google Scholar
  8. Radu Grigore. Java generics are Turing complete. In Andrew D. Gordon, editor, (POPL'17), pages 73-85, 2017. Google Scholar
  9. Zvi Gutterman. Symbolic Pre-computation for Numerical Applications. Master’s thesis, Technion, 2004. Google Scholar
  10. Matthew Harren, Mukund Raghavachari, Oded Shmueli, Michael G Burke, Rajesh Bordawekar, Igor Pechtchanski, and Vivek Sarkar. XJ: facilitating XML processing in Java. In Proceedings of the 14th international conference on World Wide Web, pages 278-287. ACM, 2005. Google Scholar
  11. Anders Hejlsberg, Scott Wiltamuth, Peter Golde, and Mads Torgersenby. The C# Programming Language. Addison-Wesley Publishing Company, \nth2 edition, 2003-10. Google Scholar
  12. ISE. ISE EIFFEL The Language Reference. ISE, 1997. Google Scholar
  13. Donald E Knuth. On the translation of languages from left to right. Information and control, 8(6):607-639, 1965. Google Scholar
  14. Tomer Levy. A Fluent API for Automatic Generation of Fluent APIs in Java. Master’s thesis, Technion, 2016. Google Scholar
  15. Erik Meijer and Brian Beckman. Xlinq: Xml programming refactored (the return of the monoids). In Proceedings of XML, volume 5, 2005. Google Scholar
  16. Erik Meijer, Wolfram Schulte, and Gavin Bierman. Unifying tables, objects, and documents. In Workshop on Declarative Programming in the Context of Object-Oriented Languages, pages 145-166. Citeseer, 2003. Google Scholar
  17. R. Milner and M. TofteD. MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997. Google Scholar
  18. Tomoki Nakamaru, Kazuhiro Ichikawa, Tetsuro Yamazaki, and Shigeru Chiba. Silverchain: a fluent API generator. Proceedings of the 16^th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences - GPCE 2017, pages 199-211, 2017. URL: http://dl.acm.org/citation.cfm?doid=3136040.3136041.
  19. Bjarne Stroustrup. The C++ programming language. Pearson Education India, 2000. Google Scholar
  20. Peter Thiemann. A typed representation for HTML and XML documents in Haskell. Journal of functional programming, 12(4-5):435-468, 2002. Google Scholar
  21. N. Wirth. The programming language Pascal. Acta informatica, 1:35-63, 1971. Google Scholar
  22. Hao Xu. EriLex: an embedded domain specific language generator. In International Conference on Modelling Techniques and Tools for Computer Performance Evaluation, pages 192-212. Springer, 2010. Google Scholar