{"id":"https://openalex.org/W2161406579","doi":"https://doi.org/10.1145/2814251.2814265","title":"Parsing expression grammars made practical","display_name":"Parsing expression grammars made practical","publication_year":2015,"publication_date":"2015-10-26","ids":{"openalex":"https://openalex.org/W2161406579","doi":"https://doi.org/10.1145/2814251.2814265","mag":"2161406579"},"language":"en","primary_location":{"id":"doi:10.1145/2814251.2814265","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2814251.2814265","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN International Conference on Software Language Engineering","raw_type":"proceedings-article"},"type":"conference-paper","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"https://arxiv.org/pdf/1509.02439","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"Nicolas Laurent","orcid":null},"institutions":[{"id":"https://openalex.org/I95674353","display_name":"UCLouvain","ror":"https://ror.org/02495e989","country_code":"BE","type":"education","lineage":["https://openalex.org/I95674353"]}],"countries":["BE"],"is_corresponding":false,"raw_author_name":"Nicolas Laurent","raw_affiliation_strings":["Universit\u00e9 Catholique de Louvain, Belgium"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Universit\u00e9 Catholique de Louvain, Belgium","institution_ids":["https://openalex.org/I95674353"]}]},{"author_position":"last","author":{"id":null,"display_name":"Kim Mens","orcid":null},"institutions":[{"id":"https://openalex.org/I95674353","display_name":"UCLouvain","ror":"https://ror.org/02495e989","country_code":"BE","type":"education","lineage":["https://openalex.org/I95674353"]}],"countries":["BE"],"is_corresponding":false,"raw_author_name":"Kim Mens","raw_affiliation_strings":["Universit\u00e9 Catholique de Louvain, Belgium"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Universit\u00e9 Catholique de Louvain, Belgium","institution_ids":["https://openalex.org/I95674353"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I95674353"],"apc_list":null,"apc_paid":null,"fwci":null,"has_fulltext":false,"cited_by_count":7,"citation_normalized_percentile":null,"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"167","last_page":"172"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T11424","display_name":"Security and Verification in Computing","score":0.9984999895095825,"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/T11424","display_name":"Security and Verification in Computing","score":0.9984999895095825,"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/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9973000288009644,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"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/T11241","display_name":"Advanced Malware Detection Techniques","score":0.9970999956130981,"subfield":{"id":"https://openalex.org/subfields/1711","display_name":"Signal Processing"},"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/parsing","display_name":"Parsing","score":0.8152999877929688},{"id":"https://openalex.org/keywords/top-down-parsing","display_name":"Top-down parsing","score":0.6401000022888184},{"id":"https://openalex.org/keywords/s-attributed-grammar","display_name":"S-attributed grammar","score":0.6154000163078308},{"id":"https://openalex.org/keywords/parser-combinator","display_name":"Parser combinator","score":0.5985999703407288},{"id":"https://openalex.org/keywords/memoization","display_name":"Memoization","score":0.573199987411499},{"id":"https://openalex.org/keywords/top-down-parsing-language","display_name":"Top-down parsing language","score":0.5321999788284302},{"id":"https://openalex.org/keywords/parsing-expression-grammar","display_name":"Parsing expression grammar","score":0.5113000273704529},{"id":"https://openalex.org/keywords/unification","display_name":"Unification","score":0.4950999915599823},{"id":"https://openalex.org/keywords/abstract-syntax-tree","display_name":"Abstract syntax tree","score":0.47540000081062317},{"id":"https://openalex.org/keywords/regular-expression","display_name":"Regular expression","score":0.47510001063346863}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8335000276565552},{"id":"https://openalex.org/C186644900","wikidata":"https://www.wikidata.org/wiki/Q194152","display_name":"Parsing","level":2,"score":0.8152999877929688},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.696399986743927},{"id":"https://openalex.org/C42560504","wikidata":"https://www.wikidata.org/wiki/Q15419395","display_name":"Top-down parsing","level":3,"score":0.6401000022888184},{"id":"https://openalex.org/C147547768","wikidata":"https://www.wikidata.org/wiki/Q3113342","display_name":"S-attributed grammar","level":3,"score":0.6154000163078308},{"id":"https://openalex.org/C118364021","wikidata":"https://www.wikidata.org/wiki/Q7139956","display_name":"Parser combinator","level":3,"score":0.5985999703407288},{"id":"https://openalex.org/C79516417","wikidata":"https://www.wikidata.org/wiki/Q1376168","display_name":"Memoization","level":4,"score":0.573199987411499},{"id":"https://openalex.org/C166651950","wikidata":"https://www.wikidata.org/wiki/Q7824365","display_name":"Top-down parsing language","level":5,"score":0.5321999788284302},{"id":"https://openalex.org/C204321447","wikidata":"https://www.wikidata.org/wiki/Q30642","display_name":"Natural language processing","level":1,"score":0.5210999846458435},{"id":"https://openalex.org/C146810361","wikidata":"https://www.wikidata.org/wiki/Q32271","display_name":"Parsing expression grammar","level":5,"score":0.5113000273704529},{"id":"https://openalex.org/C96146094","wikidata":"https://www.wikidata.org/wiki/Q609057","display_name":"Unification","level":2,"score":0.4950999915599823},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.47859999537467957},{"id":"https://openalex.org/C58646249","wikidata":"https://www.wikidata.org/wiki/Q127380","display_name":"Abstract syntax tree","level":3,"score":0.47540000081062317},{"id":"https://openalex.org/C121329065","wikidata":"https://www.wikidata.org/wiki/Q185612","display_name":"Regular expression","level":2,"score":0.47510001063346863},{"id":"https://openalex.org/C35164859","wikidata":"https://www.wikidata.org/wiki/Q1756442","display_name":"LR parser","level":4,"score":0.4611999988555908},{"id":"https://openalex.org/C53893814","wikidata":"https://www.wikidata.org/wiki/Q7378909","display_name":"Rule-based machine translation","level":2,"score":0.46000000834465027},{"id":"https://openalex.org/C73301696","wikidata":"https://www.wikidata.org/wiki/Q5469984","display_name":"Formalism (music)","level":3,"score":0.4343000054359436},{"id":"https://openalex.org/C2781466058","wikidata":"https://www.wikidata.org/wiki/Q627921","display_name":"Parse tree","level":3,"score":0.414000004529953},{"id":"https://openalex.org/C159423971","wikidata":"https://www.wikidata.org/wiki/Q177251","display_name":"Associative property","level":2,"score":0.3828999996185303},{"id":"https://openalex.org/C2778514511","wikidata":"https://www.wikidata.org/wiki/Q1374194","display_name":"Programmer","level":2,"score":0.37229999899864197},{"id":"https://openalex.org/C60690694","wikidata":"https://www.wikidata.org/wiki/Q894902","display_name":"Bottom-up parsing","level":4,"score":0.3716000020503998},{"id":"https://openalex.org/C29184939","wikidata":"https://www.wikidata.org/wiki/Q1134367","display_name":"Phrase structure grammar","level":4,"score":0.34549999237060547},{"id":"https://openalex.org/C67621940","wikidata":"https://www.wikidata.org/wiki/Q3113340","display_name":"L-attributed grammar","level":4,"score":0.3418000042438507},{"id":"https://openalex.org/C32833848","wikidata":"https://www.wikidata.org/wiki/Q4115054","display_name":"Extensibility","level":2,"score":0.3416999876499176},{"id":"https://openalex.org/C68859911","wikidata":"https://www.wikidata.org/wiki/Q1503724","display_name":"Pattern matching","level":2,"score":0.34049999713897705},{"id":"https://openalex.org/C26022165","wikidata":"https://www.wikidata.org/wiki/Q8091","display_name":"Grammar","level":2,"score":0.31520000100135803},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.3075000047683716},{"id":"https://openalex.org/C1807295","wikidata":"https://www.wikidata.org/wiki/Q7662657","display_name":"Syntactic predicate","level":3,"score":0.30660000443458557},{"id":"https://openalex.org/C130191384","wikidata":"https://www.wikidata.org/wiki/Q2996887","display_name":"Copycat","level":2,"score":0.30630001425743103},{"id":"https://openalex.org/C34736171","wikidata":"https://www.wikidata.org/wiki/Q918333","display_name":"Preprocessor","level":2,"score":0.3061999976634979},{"id":"https://openalex.org/C79678938","wikidata":"https://www.wikidata.org/wiki/Q1481571","display_name":"Combinatory logic","level":2,"score":0.29179999232292175},{"id":"https://openalex.org/C60048249","wikidata":"https://www.wikidata.org/wiki/Q37437","display_name":"Syntax","level":2,"score":0.28049999475479126},{"id":"https://openalex.org/C39890363","wikidata":"https://www.wikidata.org/wiki/Q36108","display_name":"Generative grammar","level":2,"score":0.2757999897003174},{"id":"https://openalex.org/C176982825","wikidata":"https://www.wikidata.org/wiki/Q835922","display_name":"Lexical analysis","level":2,"score":0.2669999897480011},{"id":"https://openalex.org/C134083981","wikidata":"https://www.wikidata.org/wiki/Q1754022","display_name":"Tree-adjoining grammar","level":4,"score":0.2529999911785126}],"mesh":[],"locations_count":3,"locations":[{"id":"doi:10.1145/2814251.2814265","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2814251.2814265","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN International Conference on Software Language Engineering","raw_type":"proceedings-article"},{"id":"pmh:oai:arXiv.org:1509.02439","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1509.02439","pdf_url":"https://arxiv.org/pdf/1509.02439","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},{"id":"pmh:oai:dial.uclouvain.be:boreal:162035","is_oa":false,"landing_page_url":"http://hdl.handle.net/2078.1/162035","pdf_url":null,"source":{"id":"https://openalex.org/S4306401902","display_name":"Digital Access to Libraries (Universit\u00e9 catholique de Louvain (UCL), l'Universit\u00e9 de Namur (UNamur) and the Universit\u00e9 Saint-Louis (USL-B))","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I95674353","host_organization_name":"UCLouvain","host_organization_lineage":["https://openalex.org/I95674353"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"info:eu-repo/semantics/conferenceObject"}],"best_oa_location":{"id":"pmh:oai:arXiv.org:1509.02439","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1509.02439","pdf_url":"https://arxiv.org/pdf/1509.02439","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G830718079","display_name":null,"funder_award_id":"FC4095","funder_id":"https://openalex.org/F4320321390","funder_display_name":"Fonds De La Recherche Scientifique - FNRS"}],"funders":[{"id":"https://openalex.org/F4320321390","display_name":"Fonds De La Recherche Scientifique - FNRS","ror":"https://ror.org/03q83t159"}],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":8,"referenced_works":["https://openalex.org/W98833579","https://openalex.org/W2006898115","https://openalex.org/W2009706943","https://openalex.org/W2018045485","https://openalex.org/W2091232155","https://openalex.org/W2110464036","https://openalex.org/W4237774781","https://openalex.org/W6684108455"],"related_works":[],"abstract_inverted_index":{"Parsing":[0],"Expression":[1],"Grammars":[2],"(PEGs)":[3],"define":[4],"languages":[5],"by":[6,54,138],"specifying":[7],"a":[8,86,113],"recursive-descent":[9],"parser":[10,151,162],"that":[11,91],"recognises":[12],"them.":[13],"The":[14],"PEG":[15,43,89,120,136,171],"formalism":[16,60],"exhibits":[17],"desirable":[18],"properties,":[19],"such":[20,175],"as":[21,112,176],"closure":[22],"under":[23,67],"composition,":[24],"built-in":[25],"disambiguation,":[26],"unification":[27],"of":[28,40,58,116,134,166],"syntactic":[29],"and":[30,33,61,74,95,98,101,109,122,148,155,169,172,179],"lexical":[31],"concerns,":[32],"closely":[34],"matching":[35],"programmer":[36],"intuition.":[37],"Unfortunately,":[38],"state":[39,165],"the":[41,55,59,132,135,167],"art":[42,168],"parsers":[44,121],"struggle":[45],"with":[46],"left-recursive":[47,119],"grammar":[48],"rules,":[49,100],"which":[50],"are":[51],"not":[52],"supported":[53],"original":[56],"definition":[57],"can":[62,142],"lead":[63],"to":[64,125,163],"infinite":[65],"recursion":[66],"naive":[68],"implementations.":[69],"Likewise,":[70],"support":[71],"for":[72],"associativity":[73,97],"explicit":[75],"precedence":[76,99],"is":[77],"spotty.":[78],"To":[79],"remedy":[80],"these":[81],"issues,":[82],"we":[83,106],"introduce":[84,144],"Autumn,":[85],"general":[87],"purpose":[88],"library":[90],"supports":[92],"left-recursion,":[93],"left":[94],"right":[96],"does":[102],"so":[103],"efficiently.":[104],"Furthermore,":[105],"identify":[107],"infix":[108],"postfix":[110],"operators":[111,147],"major":[114],"source":[115],"inefficiency":[117],"in":[118],"show":[123],"how":[124,140,149],"tackle":[126],"this":[127],"problem.":[128],"We":[129,159],"also":[130],"explore":[131],"extensibility":[133],"paradigm":[137],"showing":[139],"one":[141],"easily":[143],"new":[145],"parsing":[146],"our":[150,161],"accommodates":[152],"custom":[153],"memoization":[154],"error":[156],"handling":[157],"strategies.":[158],"compare":[160],"both":[164],"battle-tested":[170],"CFG":[173],"parsers,":[174],"Rats!,":[177],"Parboiled":[178],"ANTLR.":[180]},"counts_by_year":[{"year":2025,"cited_by_count":1},{"year":2023,"cited_by_count":2},{"year":2022,"cited_by_count":1},{"year":2017,"cited_by_count":2},{"year":2016,"cited_by_count":1}],"updated_date":"2026-07-15T18:14:33.161393","created_date":"2016-06-24T00:00:00"}
