{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,27]],"date-time":"2025-10-27T20:47:05Z","timestamp":1761598025758},"reference-count":34,"publisher":"Elsevier BV","license":[{"start":{"date-parts":[[2019,2,1]],"date-time":"2019-02-01T00:00:00Z","timestamp":1548979200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.elsevier.com\/tdm\/userlicense\/1.0\/"}],"content-domain":{"domain":["elsevier.com","sciencedirect.com"],"crossmark-restriction":true},"short-container-title":["Journal of Computer Languages"],"published-print":{"date-parts":[[2019,2]]},"DOI":"10.1016\/j.jvlc.2018.11.001","type":"journal-article","created":{"date-parts":[[2018,12,13]],"date-time":"2018-12-13T09:42:39Z","timestamp":1544694159000},"page":"70-83","update-policy":"http:\/\/dx.doi.org\/10.1016\/elsevier_cm_policy","source":"Crossref","is-referenced-by-count":5,"special_numbering":"C","title":["Generating fluent embedded domain-specific languages with subchaining"],"prefix":"10.1016","volume":"50","author":[{"given":"Tomoki","family":"Nakamaru","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Kazuhiro","family":"Ichikawa","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Tetsuro","family":"Yamazaki","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Shigeru","family":"Chiba","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"78","reference":[{"key":"10.1016\/j.jvlc.2018.11.001_bib0001","unstructured":"M. Fowler, FluentInterface, 2005, https:\/\/www.martinfowler.com\/bliki\/FluentInterface.html."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0002","series-title":"Proceedings of the 32Nd ACM\/IEEE International Conference on Software Engineering","first-page":"5","article-title":"Efficient hybrid typestate analysis by determining continuation-equivalent states","volume":"1","author":"Bodden","year":"2010"},{"issue":"1","key":"10.1016\/j.jvlc.2018.11.001_bib0003","doi-asserted-by":"crossref","first-page":"157","DOI":"10.1109\/TSE.1986.6312929","article-title":"Typestate: a programming language concept for enhancing software reliability","volume":"SE-12","author":"Strom","year":"1986","journal-title":"IEEE Trans. Software Eng."},{"issue":"4","key":"10.1016\/j.jvlc.2018.11.001_bib0004","doi-asserted-by":"crossref","first-page":"333","DOI":"10.1137\/0201024","article-title":"Real-Time strict deterministic languages","volume":"1","author":"Harrison","year":"1972","journal-title":"SIAM J. Comput."},{"issue":"1","key":"10.1016\/j.jvlc.2018.11.001_bib0005","doi-asserted-by":"crossref","first-page":"57","DOI":"10.1016\/0304-3975(83)90138-X","article-title":"Constructing a realtime deterministic pushdown automaton from a grammar","volume":"22","author":"Pittl","year":"1983","journal-title":"Theor. Comput. Sci."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0006","first-page":"529","article-title":"Canonical regular expressions and minimal state graphs for definite events","author":"Brzozowski","year":"1962","journal-title":"Math. Theory Automata"},{"issue":"6","key":"10.1016\/j.jvlc.2018.11.001_bib0007","doi-asserted-by":"crossref","first-page":"419","DOI":"10.1145\/363347.363387","article-title":"Programming techniques: regular expression search algorithm","volume":"11","author":"Thompson","year":"1968","journal-title":"Commun. ACM"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0008","doi-asserted-by":"crossref","first-page":"114","DOI":"10.1109\/SWAT.1971.10","article-title":"Depth-first search and linear graph algorithms","author":"Tarjan","year":"1971","journal-title":"12th Annual Symposium on Switching and Automata Theory (swat 1971)"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0009","unstructured":"V. Romero, M. Cimadamore, JEP 215: Tiered Attribution for javac, 2016http:\/\/openjdk.java.net\/jeps\/215."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0010","series-title":"30th European Conference on Object-Oriented Programming (ECOOP 2016)","first-page":"10:1","article-title":"Formal language recognition with the java type checker","volume":"56","author":"Gil","year":"2016"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0011","series-title":"A Fluent API for Automatic Generation of Fluent APIs in Java","author":"Levy","year":"2017"},{"issue":"1","key":"10.1016\/j.jvlc.2018.11.001_bib0012","doi-asserted-by":"crossref","first-page":"87","DOI":"10.1007\/BF01768471","article-title":"On jump-deterministic pushdown automata","volume":"11","author":"Courcelle","year":"1977","journal-title":"Math.Syst. theory"},{"key":"10.1016\/j.jvlc.2018.11.001_sbref0011","series-title":"Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages","first-page":"73","article-title":"Java generics are turing complete","author":"Grigore","year":"2017"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0014","series-title":"Technical Report","article-title":"C++ Templates are Turing Complete","author":"Veldhuizen","year":"2003"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0015","series-title":"Programming languages and their compilers: Preliminary notes","author":"Cocke","year":"1969"},{"issue":"2","key":"10.1016\/j.jvlc.2018.11.001_bib0016","doi-asserted-by":"crossref","first-page":"189","DOI":"10.1016\/S0019-9958(67)80007-X","article-title":"Recognition and parsing of context-free languages in time n3","volume":"10","author":"Younger","year":"1967","journal-title":"Inf. Control"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0017","series-title":"Technical Report","article-title":"An Efficient Recognition and Syntax-Analysis Algorithm for Context-Free Languages","author":"Kasami","year":"1965"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0018","doi-asserted-by":"crossref","unstructured":"R. Grigore, Java Generics are Turing Complete, 2016, http:\/\/rgrig.appspot.com\/static\/papers\/javats.html.","DOI":"10.1145\/3009837.3009871"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0019","unstructured":"K. Ichikawa, phenan\/scalalr: ScaLALR : LALR parser generator for embedded DSLs in Scala, 2016, https:\/\/github.com\/phenan\/scalalr."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0020","series-title":"Erilex: An embedded domain specific language generator","author":"Xu","year":"2010"},{"issue":"1","key":"10.1016\/j.jvlc.2018.11.001_bib0021","doi-asserted-by":"crossref","first-page":"42","DOI":"10.1145\/321250.321254","article-title":"A new normal-Form theorem for context-Free phrase structure grammars","volume":"12","author":"Greibach","year":"1965","journal-title":"J. ACM"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0022","series-title":"Proceedings of the First Annual ACM Symposium on Theory of Computing","first-page":"165","article-title":"Properties of deterministic top down grammars","author":"Rosenkrantz","year":"1969"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0023","series-title":"Proceedings of the 3rd ACM SIGPLAN International Workshop on the State of the Art in Java Program Analysis","first-page":"1","article-title":"TS4J: a fluent interface for defining and computing typestate analyses","author":"Bodden","year":"2014"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0024","unstructured":"P. Verhas, verhas\/fluflu: Fluent Api Creator, 2014, https:\/\/github.com\/verhas\/fluflu."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0025","unstructured":"J. Costigliola, AssertJ \/ Fluent assertions for java, 2014, http:\/\/joel-costigliola.github.io\/assertj\/."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0026","unstructured":"D.G. GmbH, jOOQ: The easiest way to write SQL in Java, 2017, https:\/\/www.jooq.org\/."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0027","unstructured":"j2html, Fast and fluent Java HTML5 builder - Java HTML builder, 2017, https:\/\/j2html.com\/."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0028","unstructured":"A. Konermann, Emulating \u201dself types\u201d using Java Generics to simplify fluent API implementation, 2010, http:\/\/web.archive.org\/web\/20130721224442\/http:\/passion.forco.de\/content\/emulating-self-types-using-java-generics-simplifyfluent-api-implementation."},{"issue":"7","key":"10.1016\/j.jvlc.2018.11.001_sbref0020","doi-asserted-by":"crossref","first-page":"573","DOI":"10.1016\/j.scico.2010.01.004","article-title":"Simple and safe SQL queries with c++ templates","volume":"75","author":"Gil","year":"2010","journal-title":"Sci. Comput. Program."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0030","unstructured":"R. Bock, rbock\/sqlpp11: A type safe SQL template library for C++, https:\/\/github.com\/rbock\/sqlpp11."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0031","series-title":"Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications","first-page":"391","article-title":"SugarJ: library-based syntactic language extensibility","author":"Erdweg","year":"2011"},{"issue":"2","key":"10.1016\/j.jvlc.2018.11.001_bib0032","doi-asserted-by":"crossref","first-page":"15:1","DOI":"10.22152\/programming-journal.org\/2017\/1\/15","article-title":"User-Defined operators including name binding for new language constructs","volume":"1","author":"Ichikawa","year":"2017","journal-title":"Art Sci. Eng. Program."},{"key":"10.1016\/j.jvlc.2018.11.001_bib0033","series-title":"Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance","first-page":"9","article-title":"Wyvern: a simple, typed, and pure object-oriented language","author":"Nistor","year":"2013"},{"key":"10.1016\/j.jvlc.2018.11.001_bib0034","series-title":"Proceedings of the 11th International Conference on Generative Programming and Component Engineering","first-page":"122","article-title":"Honu: syntactic extension for algebraic notation through enforestation","author":"Rafkind","year":"2012"}],"container-title":["Journal of Computer Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S1045926X18301885?httpAccept=text\/xml","content-type":"text\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S1045926X18301885?httpAccept=text\/plain","content-type":"text\/plain","content-version":"vor","intended-application":"text-mining"}],"deposited":{"date-parts":[[2019,12,17]],"date-time":"2019-12-17T18:04:46Z","timestamp":1576605886000},"score":1,"resource":{"primary":{"URL":"https:\/\/linkinghub.elsevier.com\/retrieve\/pii\/S1045926X18301885"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,2]]},"references-count":34,"alternative-id":["S1045926X18301885"],"URL":"https:\/\/doi.org\/10.1016\/j.jvlc.2018.11.001","relation":{},"ISSN":["2590-1184"],"issn-type":[{"value":"2590-1184","type":"print"}],"subject":[],"published":{"date-parts":[[2019,2]]},"assertion":[{"value":"Elsevier","name":"publisher","label":"This article is maintained by"},{"value":"Generating fluent embedded domain-specific languages with subchaining","name":"articletitle","label":"Article Title"},{"value":"Journal of Computer Languages","name":"journaltitle","label":"Journal Title"},{"value":"https:\/\/doi.org\/10.1016\/j.jvlc.2018.11.001","name":"articlelink","label":"CrossRef DOI link to publisher maintained version"},{"value":"article","name":"content_type","label":"Content Type"},{"value":"\u00a9 2019 Elsevier Ltd. All rights reserved.","name":"copyright","label":"Copyright"}]}}