{"id":"https://openalex.org/W2979716378","doi":"https://doi.org/10.1145/3360560","title":"Generating a fluent API with syntax checking from an LR grammar","display_name":"Generating a fluent API with syntax checking from an LR grammar","publication_year":2019,"publication_date":"2019-10-10","ids":{"openalex":"https://openalex.org/W2979716378","doi":"https://doi.org/10.1145/3360560","mag":"2979716378"},"language":"en","primary_location":{"id":"doi:10.1145/3360560","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3360560","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3360560","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3360560","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5059407520","display_name":"Tetsuro Yamazaki","orcid":"https://orcid.org/0000-0002-2065-5608"},"institutions":[{"id":"https://openalex.org/I74801974","display_name":"The University of Tokyo","ror":"https://ror.org/057zh3y96","country_code":"JP","type":"education","lineage":["https://openalex.org/I74801974"]}],"countries":["JP"],"is_corresponding":true,"raw_author_name":"Tetsuro Yamazaki","raw_affiliation_strings":["University of Tokyo, Japan"],"affiliations":[{"raw_affiliation_string":"University of Tokyo, Japan","institution_ids":["https://openalex.org/I74801974"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5083973204","display_name":"Tomoki Nakamaru","orcid":"https://orcid.org/0000-0002-9451-5595"},"institutions":[{"id":"https://openalex.org/I74801974","display_name":"The University of Tokyo","ror":"https://ror.org/057zh3y96","country_code":"JP","type":"education","lineage":["https://openalex.org/I74801974"]}],"countries":["JP"],"is_corresponding":false,"raw_author_name":"Tomoki Nakamaru","raw_affiliation_strings":["University of Tokyo, Japan"],"affiliations":[{"raw_affiliation_string":"University of Tokyo, Japan","institution_ids":["https://openalex.org/I74801974"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5104440907","display_name":"Kazuhiro Ichikawa","orcid":null},"institutions":[{"id":"https://openalex.org/I74801974","display_name":"The University of Tokyo","ror":"https://ror.org/057zh3y96","country_code":"JP","type":"education","lineage":["https://openalex.org/I74801974"]}],"countries":["JP"],"is_corresponding":false,"raw_author_name":"Kazuhiro Ichikawa","raw_affiliation_strings":["University of Tokyo, Japan"],"affiliations":[{"raw_affiliation_string":"University of Tokyo, Japan","institution_ids":["https://openalex.org/I74801974"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5026542200","display_name":"Shigeru Chiba","orcid":"https://orcid.org/0000-0001-9458-5713"},"institutions":[{"id":"https://openalex.org/I74801974","display_name":"The University of Tokyo","ror":"https://ror.org/057zh3y96","country_code":"JP","type":"education","lineage":["https://openalex.org/I74801974"]}],"countries":["JP"],"is_corresponding":false,"raw_author_name":"Shigeru Chiba","raw_affiliation_strings":["University of Tokyo, Japan"],"affiliations":[{"raw_affiliation_string":"University of Tokyo, Japan","institution_ids":["https://openalex.org/I74801974"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":4,"corresponding_author_ids":["https://openalex.org/A5059407520"],"corresponding_institution_ids":["https://openalex.org/I74801974"],"apc_list":null,"apc_paid":null,"fwci":1.0115,"has_fulltext":true,"cited_by_count":13,"citation_normalized_percentile":{"value":0.83133453,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":90,"max":98},"biblio":{"volume":"3","issue":"OOPSLA","first_page":"1","last_page":"24"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9994999766349792,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9994999766349792,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.996999979019165,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9873999953269958,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8964129090309143},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7638295888900757},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.5805763602256775},{"id":"https://openalex.org/keywords/generator","display_name":"Generator (circuit theory)","score":0.5143948197364807},{"id":"https://openalex.org/keywords/parsing","display_name":"Parsing","score":0.4637608528137207},{"id":"https://openalex.org/keywords/grammar","display_name":"Grammar","score":0.4625742733478546},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.44333750009536743},{"id":"https://openalex.org/keywords/attribute-grammar","display_name":"Attribute grammar","score":0.43649935722351074},{"id":"https://openalex.org/keywords/natural-language-processing","display_name":"Natural language processing","score":0.393776535987854},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.3417985439300537},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.3349834084510803},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.15951380133628845},{"id":"https://openalex.org/keywords/linguistics","display_name":"Linguistics","score":0.09725221991539001}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8964129090309143},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7638295888900757},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.5805763602256775},{"id":"https://openalex.org/C2780992000","wikidata":"https://www.wikidata.org/wiki/Q17016113","display_name":"Generator (circuit theory)","level":3,"score":0.5143948197364807},{"id":"https://openalex.org/C186644900","wikidata":"https://www.wikidata.org/wiki/Q194152","display_name":"Parsing","level":2,"score":0.4637608528137207},{"id":"https://openalex.org/C26022165","wikidata":"https://www.wikidata.org/wiki/Q8091","display_name":"Grammar","level":2,"score":0.4625742733478546},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.44333750009536743},{"id":"https://openalex.org/C164041254","wikidata":"https://www.wikidata.org/wiki/Q597455","display_name":"Attribute grammar","level":3,"score":0.43649935722351074},{"id":"https://openalex.org/C204321447","wikidata":"https://www.wikidata.org/wiki/Q30642","display_name":"Natural language processing","level":1,"score":0.393776535987854},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.3417985439300537},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.3349834084510803},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.15951380133628845},{"id":"https://openalex.org/C41895202","wikidata":"https://www.wikidata.org/wiki/Q8162","display_name":"Linguistics","level":1,"score":0.09725221991539001},{"id":"https://openalex.org/C62520636","wikidata":"https://www.wikidata.org/wiki/Q944","display_name":"Quantum mechanics","level":1,"score":0.0},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.0},{"id":"https://openalex.org/C121332964","wikidata":"https://www.wikidata.org/wiki/Q413","display_name":"Physics","level":0,"score":0.0},{"id":"https://openalex.org/C138885662","wikidata":"https://www.wikidata.org/wiki/Q5891","display_name":"Philosophy","level":0,"score":0.0},{"id":"https://openalex.org/C163258240","wikidata":"https://www.wikidata.org/wiki/Q25342","display_name":"Power (physics)","level":2,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3360560","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3360560","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3360560","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"}],"best_oa_location":{"id":"doi:10.1145/3360560","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3360560","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3360560","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[{"display_name":"Quality Education","score":0.75,"id":"https://metadata.un.org/sdg/4"}],"awards":[{"id":"https://openalex.org/G1069223013","display_name":null,"funder_award_id":"JSPS KAKENHI","funder_id":"https://openalex.org/F4320334764","funder_display_name":"Japan Society for the Promotion of Science"},{"id":"https://openalex.org/G193038087","display_name":null,"funder_award_id":"JST CREST","funder_id":"https://openalex.org/F4320334764","funder_display_name":"Japan Society for the Promotion of Science"},{"id":"https://openalex.org/G2608370796","display_name":"Implementation techniques for Domain Specific Languages","funder_award_id":"15H02682","funder_id":"https://openalex.org/F4320334764","funder_display_name":"Japan Society for the Promotion of Science"},{"id":"https://openalex.org/G2792802287","display_name":null,"funder_award_id":"KAKENHI","funder_id":"https://openalex.org/F4320338075","funder_display_name":"Core Research for Evolutional Science and Technology"},{"id":"https://openalex.org/G3459562248","display_name":null,"funder_award_id":"Grant","funder_id":"https://openalex.org/F4320334764","funder_display_name":"Japan Society for the Promotion of Science"},{"id":"https://openalex.org/G4227499671","display_name":null,"funder_award_id":"KAKENHI Grant","funder_id":"https://openalex.org/F4320334764","funder_display_name":"Japan Society for the Promotion of Science"},{"id":"https://openalex.org/G4636223006","display_name":null,"funder_award_id":"JSPS KAK","funder_id":"https://openalex.org/F4320334764","funder_display_name":"Japan Society for the Promotion of Science"},{"id":"https://openalex.org/G5786340949","display_name":null,"funder_award_id":"KAKENHI Grant Number","funder_id":"https://openalex.org/F4320334764","funder_display_name":"Japan Society for the Promotion of Science"},{"id":"https://openalex.org/G6718509927","display_name":null,"funder_award_id":"CREST","funder_id":"https://openalex.org/F4320334764","funder_display_name":"Japan Society for the Promotion of Science"},{"id":"https://openalex.org/G8430481527","display_name":null,"funder_award_id":"Number","funder_id":"https://openalex.org/F4320334764","funder_display_name":"Japan Society for the Promotion of Science"}],"funders":[{"id":"https://openalex.org/F4320334764","display_name":"Japan Society for the Promotion of Science","ror":"https://ror.org/00hhkn466"},{"id":"https://openalex.org/F4320338075","display_name":"Core Research for Evolutional Science and Technology","ror":"https://ror.org/00097mb19"}],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2979716378.pdf","grobid_xml":"https://content.openalex.org/works/W2979716378.grobid-xml"},"referenced_works_count":28,"referenced_works":["https://openalex.org/W64156013","https://openalex.org/W1487472891","https://openalex.org/W1502293651","https://openalex.org/W1941373452","https://openalex.org/W1970158213","https://openalex.org/W1970961429","https://openalex.org/W1995618084","https://openalex.org/W2001914359","https://openalex.org/W2019570031","https://openalex.org/W2026049208","https://openalex.org/W2073787041","https://openalex.org/W2080040283","https://openalex.org/W2085065991","https://openalex.org/W2094571689","https://openalex.org/W2094694891","https://openalex.org/W2152907450","https://openalex.org/W2162635569","https://openalex.org/W2202435499","https://openalex.org/W2427840161","https://openalex.org/W2508649175","https://openalex.org/W2539064697","https://openalex.org/W2762430574","https://openalex.org/W2766961549","https://openalex.org/W2796472165","https://openalex.org/W2914920698","https://openalex.org/W2966037109","https://openalex.org/W3100864431","https://openalex.org/W4234065310"],"related_works":["https://openalex.org/W2112263414","https://openalex.org/W1602185604","https://openalex.org/W3004782279","https://openalex.org/W2028779182","https://openalex.org/W4242678340","https://openalex.org/W2140654465","https://openalex.org/W2129253059","https://openalex.org/W4296274916","https://openalex.org/W1504459189","https://openalex.org/W1755575651"],"abstract_inverted_index":{"This":[0,185],"paper":[1,114,186],"proposes":[2],"a":[3,14,19,36,47,71,102,125,130,134],"fluent":[4,48,126],"API":[5,44,127],"generator":[6],"for":[7,120,124],"Scala,":[8,153],"Haskell,":[9,154],"and":[10,17,155],"C++.":[11,156],"It":[12,170],"receives":[13],"grammar":[15],"definition":[16],"generates":[18],"code":[20],"skeleton":[21],"of":[22,38,43,62,86,112,136,191],"the":[23,26,53,75,87,94,100,122,140,145,163,192],"library":[24,32,51,141],"in":[25,74,152,167],"host":[27],"programming":[28],"language.":[29],"The":[30,50],"generated":[31],"is":[33,45,68,90,96,105,115],"accessed":[34],"through":[35],"chain":[37,61,135],"method":[39,63,66,137],"calls;":[40],"this":[41,113],"style":[42],"called":[46],"API.":[49],"uses":[52,162],"host-language":[54],"type":[55,103,131,176],"checker":[56],"to":[57,116,139],"detect":[58],"an":[59,118,174],"invalid":[60],"calls.":[64],"Each":[65],"call":[67],"regarded":[69],"as":[70],"lexical":[72,88],"token":[73],"embedded":[76],"domain":[77],"specific":[78],"language":[79],"implemented":[80],"by":[81,99],"that":[82,128],"library.":[83],"A":[84,110],"sequence":[85,95],"tokens":[89],"checked":[91],"and,":[92],"if":[93],"not":[97,143,172],"acceptable":[98],"grammar,":[101],"error":[104,132],"reported":[106],"during":[107],"compilation":[108,180],"time.":[109],"contribution":[111],"present":[117],"algorithm":[119,150],"generating":[121],"code-skeleton":[123],"reports":[129],"when":[133],"calls":[138],"does":[142,171],"match":[144],"given":[146],"LR":[147,159],"grammar.":[148],"Our":[149],"works":[151],"To":[157],"encode":[158],"parsing,":[160],"it":[161],"method/function":[164],"overloading":[165],"available":[166],"those":[168],"languages.":[169],"need":[173],"advanced":[175],"system,":[177],"or":[178,182],"exponential":[179],"time":[181],"memory":[183],"consumption.":[184],"also":[187],"presents":[188],"our":[189],"implementation":[190],"proposed":[193],"generator.":[194]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":2},{"year":2023,"cited_by_count":3},{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":2},{"year":2020,"cited_by_count":3},{"year":2019,"cited_by_count":1}],"updated_date":"2026-04-10T15:06:20.359241","created_date":"2025-10-10T00:00:00"}
