Lerche: Generating data file processors in Julia from EBNF grammars Article Swipe
YOU?
·
· 2021
· Open Access
·
· DOI: https://doi.org/10.21105/joss.03497
In a scientific context, structured text is commonly encountered in data files and domainspecific languages (DSLs) for handling data.Extended Backhaus-Naur Format (EBNF) (ISO Central Secretary, 1996) is a well-established standard for describing the syntax of such structured text.A useful subset of such grammars is known as LALR(1), meaning that the grammars describe text that can be unambiguously parsed based only on the tokens already seen and the next token of input (DeRemer, 1969).LALR(1) stands out for being able to parse most programming languages, while guaranteeing O(n) run-time complexity and very light memory use.The Lerche Julia package automatically generates a parser that processes any data file or domain-specific language that can be described using a LALR(1) EBNF.The parse tree can be immediately transformed into application-specific data structures using usersupplied rules.This parser generator fills a gap in standards-based scientific work for the Julia ecosystem.Other native parser tools available for Julia projects include ParserCombinator (Cooke, 2021), Pegparser (Schneider, 2020), and the built-in Julia macro system.None of these
Related Topics
- Type
- article
- Language
- en
- Landing Page
- https://doi.org/10.21105/joss.03497
- https://joss.theoj.org/papers/10.21105/joss.03497.pdf
- OA Status
- diamond
- Cited By
- 5
- References
- 4
- Related Works
- 10
- OpenAlex ID
- https://openalex.org/W3195665985
Raw OpenAlex JSON
- OpenAlex ID
-
https://openalex.org/W3195665985Canonical identifier for this work in OpenAlex
- DOI
-
https://doi.org/10.21105/joss.03497Digital Object Identifier
- Title
-
Lerche: Generating data file processors in Julia from EBNF grammarsWork title
- Type
-
articleOpenAlex work type
- Language
-
enPrimary language
- Publication year
-
2021Year of publication
- Publication date
-
2021-08-24Full publication date if available
- Authors
-
James Hester, Erez ShinanList of authors in order
- Landing page
-
https://doi.org/10.21105/joss.03497Publisher landing page
- PDF URL
-
https://joss.theoj.org/papers/10.21105/joss.03497.pdfDirect link to full text PDF
- Open access
-
YesWhether a free full text is available
- OA status
-
diamondOpen access status per OpenAlex
- OA URL
-
https://joss.theoj.org/papers/10.21105/joss.03497.pdfDirect OA link when available
- Concepts
-
Computer science, Programming language, Rule-based machine translation, Parallel computing, Artificial intelligenceTop concepts (fields/topics) attached by OpenAlex
- Cited by
-
5Total citation count in OpenAlex
- Citations by year (recent)
-
2024: 1, 2023: 4Per-year citation counts (last 5 years)
- References (count)
-
4Number of works referenced by this work
- Related works (count)
-
10Other works algorithmically related by OpenAlex
Full payload
| id | https://openalex.org/W3195665985 |
|---|---|
| doi | https://doi.org/10.21105/joss.03497 |
| ids.doi | https://doi.org/10.21105/joss.03497 |
| ids.mag | 3195665985 |
| ids.openalex | https://openalex.org/W3195665985 |
| fwci | 0.82815878 |
| type | article |
| title | Lerche: Generating data file processors in Julia from EBNF grammars |
| biblio.issue | 64 |
| biblio.volume | 6 |
| biblio.last_page | 3497 |
| biblio.first_page | 3497 |
| topics[0].id | https://openalex.org/T11181 |
| topics[0].field.id | https://openalex.org/fields/17 |
| topics[0].field.display_name | Computer Science |
| topics[0].score | 0.9990000128746033 |
| topics[0].domain.id | https://openalex.org/domains/3 |
| topics[0].domain.display_name | Physical Sciences |
| topics[0].subfield.id | https://openalex.org/subfields/1705 |
| topics[0].subfield.display_name | Computer Networks and Communications |
| topics[0].display_name | Advanced Data Storage Technologies |
| topics[1].id | https://openalex.org/T10054 |
| topics[1].field.id | https://openalex.org/fields/17 |
| topics[1].field.display_name | Computer Science |
| topics[1].score | 0.9984999895095825 |
| topics[1].domain.id | https://openalex.org/domains/3 |
| topics[1].domain.display_name | Physical Sciences |
| topics[1].subfield.id | https://openalex.org/subfields/1708 |
| topics[1].subfield.display_name | Hardware and Architecture |
| topics[1].display_name | Parallel Computing and Optimization Techniques |
| topics[2].id | https://openalex.org/T10715 |
| topics[2].field.id | https://openalex.org/fields/17 |
| topics[2].field.display_name | Computer Science |
| topics[2].score | 0.9972000122070312 |
| topics[2].domain.id | https://openalex.org/domains/3 |
| topics[2].domain.display_name | Physical Sciences |
| topics[2].subfield.id | https://openalex.org/subfields/1705 |
| topics[2].subfield.display_name | Computer Networks and Communications |
| topics[2].display_name | Distributed and Parallel Computing Systems |
| is_xpac | False |
| apc_list | |
| apc_paid | |
| concepts[0].id | https://openalex.org/C41008148 |
| concepts[0].level | 0 |
| concepts[0].score | 0.69627845287323 |
| concepts[0].wikidata | https://www.wikidata.org/wiki/Q21198 |
| concepts[0].display_name | Computer science |
| concepts[1].id | https://openalex.org/C199360897 |
| concepts[1].level | 1 |
| concepts[1].score | 0.6305491924285889 |
| concepts[1].wikidata | https://www.wikidata.org/wiki/Q9143 |
| concepts[1].display_name | Programming language |
| concepts[2].id | https://openalex.org/C53893814 |
| concepts[2].level | 2 |
| concepts[2].score | 0.6102695465087891 |
| concepts[2].wikidata | https://www.wikidata.org/wiki/Q7378909 |
| concepts[2].display_name | Rule-based machine translation |
| concepts[3].id | https://openalex.org/C173608175 |
| concepts[3].level | 1 |
| concepts[3].score | 0.46856218576431274 |
| concepts[3].wikidata | https://www.wikidata.org/wiki/Q232661 |
| concepts[3].display_name | Parallel computing |
| concepts[4].id | https://openalex.org/C154945302 |
| concepts[4].level | 1 |
| concepts[4].score | 0.24721017479896545 |
| concepts[4].wikidata | https://www.wikidata.org/wiki/Q11660 |
| concepts[4].display_name | Artificial intelligence |
| keywords[0].id | https://openalex.org/keywords/computer-science |
| keywords[0].score | 0.69627845287323 |
| keywords[0].display_name | Computer science |
| keywords[1].id | https://openalex.org/keywords/programming-language |
| keywords[1].score | 0.6305491924285889 |
| keywords[1].display_name | Programming language |
| keywords[2].id | https://openalex.org/keywords/rule-based-machine-translation |
| keywords[2].score | 0.6102695465087891 |
| keywords[2].display_name | Rule-based machine translation |
| keywords[3].id | https://openalex.org/keywords/parallel-computing |
| keywords[3].score | 0.46856218576431274 |
| keywords[3].display_name | Parallel computing |
| keywords[4].id | https://openalex.org/keywords/artificial-intelligence |
| keywords[4].score | 0.24721017479896545 |
| keywords[4].display_name | Artificial intelligence |
| language | en |
| locations[0].id | doi:10.21105/joss.03497 |
| locations[0].is_oa | True |
| locations[0].source.id | https://openalex.org/S4210214273 |
| locations[0].source.issn | 2475-9066 |
| locations[0].source.type | journal |
| locations[0].source.is_oa | True |
| locations[0].source.issn_l | 2475-9066 |
| locations[0].source.is_core | True |
| locations[0].source.is_in_doaj | True |
| locations[0].source.display_name | The Journal of Open Source Software |
| locations[0].source.host_organization | https://openalex.org/P4310315853 |
| locations[0].source.host_organization_name | Open Journals |
| locations[0].source.host_organization_lineage | https://openalex.org/P4310315853 |
| locations[0].source.host_organization_lineage_names | Open Journals |
| locations[0].license | cc-by |
| locations[0].pdf_url | https://joss.theoj.org/papers/10.21105/joss.03497.pdf |
| locations[0].version | publishedVersion |
| locations[0].raw_type | journal-article |
| locations[0].license_id | https://openalex.org/licenses/cc-by |
| locations[0].is_accepted | True |
| locations[0].is_published | True |
| locations[0].raw_source_name | Journal of Open Source Software |
| locations[0].landing_page_url | https://doi.org/10.21105/joss.03497 |
| indexed_in | crossref, doaj |
| authorships[0].author.id | https://openalex.org/A5087867648 |
| authorships[0].author.orcid | https://orcid.org/0000-0002-2004-8672 |
| authorships[0].author.display_name | James Hester |
| authorships[0].countries | AU |
| authorships[0].affiliations[0].institution_ids | https://openalex.org/I1334950195 |
| authorships[0].affiliations[0].raw_affiliation_string | Australian Nuclear Science and Technology Organisation, Sydney, Australia |
| authorships[0].institutions[0].id | https://openalex.org/I1334950195 |
| authorships[0].institutions[0].ror | https://ror.org/05j7fep28 |
| authorships[0].institutions[0].type | government |
| authorships[0].institutions[0].lineage | https://openalex.org/I1334950195, https://openalex.org/I2801453606, https://openalex.org/I4387156119 |
| authorships[0].institutions[0].country_code | AU |
| authorships[0].institutions[0].display_name | Australian Nuclear Science and Technology Organisation |
| authorships[0].author_position | first |
| authorships[0].raw_author_name | James Hester |
| authorships[0].is_corresponding | False |
| authorships[0].raw_affiliation_strings | Australian Nuclear Science and Technology Organisation, Sydney, Australia |
| authorships[1].author.id | https://openalex.org/A5057014392 |
| authorships[1].author.orcid | |
| authorships[1].author.display_name | Erez Shinan |
| authorships[1].countries | AU |
| authorships[1].affiliations[0].institution_ids | https://openalex.org/I1334950195 |
| authorships[1].affiliations[0].raw_affiliation_string | Australian Nuclear Science and Technology Organisation, Sydney, Australia |
| authorships[1].institutions[0].id | https://openalex.org/I1334950195 |
| authorships[1].institutions[0].ror | https://ror.org/05j7fep28 |
| authorships[1].institutions[0].type | government |
| authorships[1].institutions[0].lineage | https://openalex.org/I1334950195, https://openalex.org/I2801453606, https://openalex.org/I4387156119 |
| authorships[1].institutions[0].country_code | AU |
| authorships[1].institutions[0].display_name | Australian Nuclear Science and Technology Organisation |
| authorships[1].author_position | last |
| authorships[1].raw_author_name | Erez Shinan |
| authorships[1].is_corresponding | False |
| authorships[1].raw_affiliation_strings | Australian Nuclear Science and Technology Organisation, Sydney, Australia |
| has_content.pdf | True |
| has_content.grobid_xml | True |
| is_paratext | False |
| open_access.is_oa | True |
| open_access.oa_url | https://joss.theoj.org/papers/10.21105/joss.03497.pdf |
| open_access.oa_status | diamond |
| open_access.any_repository_has_fulltext | False |
| created_date | 2025-10-10T00:00:00 |
| display_name | Lerche: Generating data file processors in Julia from EBNF grammars |
| has_fulltext | True |
| is_retracted | False |
| updated_date | 2025-11-06T03:46:38.306776 |
| primary_topic.id | https://openalex.org/T11181 |
| primary_topic.field.id | https://openalex.org/fields/17 |
| primary_topic.field.display_name | Computer Science |
| primary_topic.score | 0.9990000128746033 |
| primary_topic.domain.id | https://openalex.org/domains/3 |
| primary_topic.domain.display_name | Physical Sciences |
| primary_topic.subfield.id | https://openalex.org/subfields/1705 |
| primary_topic.subfield.display_name | Computer Networks and Communications |
| primary_topic.display_name | Advanced Data Storage Technologies |
| related_works | https://openalex.org/W2748952813, https://openalex.org/W2390279801, https://openalex.org/W2358668433, https://openalex.org/W2376932109, https://openalex.org/W2001405890, https://openalex.org/W2382290278, https://openalex.org/W2478288626, https://openalex.org/W2350741829, https://openalex.org/W2530322880, https://openalex.org/W1596801655 |
| cited_by_count | 5 |
| counts_by_year[0].year | 2024 |
| counts_by_year[0].cited_by_count | 1 |
| counts_by_year[1].year | 2023 |
| counts_by_year[1].cited_by_count | 4 |
| locations_count | 1 |
| best_oa_location.id | doi:10.21105/joss.03497 |
| best_oa_location.is_oa | True |
| best_oa_location.source.id | https://openalex.org/S4210214273 |
| best_oa_location.source.issn | 2475-9066 |
| best_oa_location.source.type | journal |
| best_oa_location.source.is_oa | True |
| best_oa_location.source.issn_l | 2475-9066 |
| best_oa_location.source.is_core | True |
| best_oa_location.source.is_in_doaj | True |
| best_oa_location.source.display_name | The Journal of Open Source Software |
| best_oa_location.source.host_organization | https://openalex.org/P4310315853 |
| best_oa_location.source.host_organization_name | Open Journals |
| best_oa_location.source.host_organization_lineage | https://openalex.org/P4310315853 |
| best_oa_location.source.host_organization_lineage_names | Open Journals |
| best_oa_location.license | cc-by |
| best_oa_location.pdf_url | https://joss.theoj.org/papers/10.21105/joss.03497.pdf |
| best_oa_location.version | publishedVersion |
| best_oa_location.raw_type | journal-article |
| best_oa_location.license_id | https://openalex.org/licenses/cc-by |
| best_oa_location.is_accepted | True |
| best_oa_location.is_published | True |
| best_oa_location.raw_source_name | Journal of Open Source Software |
| best_oa_location.landing_page_url | https://doi.org/10.21105/joss.03497 |
| primary_location.id | doi:10.21105/joss.03497 |
| primary_location.is_oa | True |
| primary_location.source.id | https://openalex.org/S4210214273 |
| primary_location.source.issn | 2475-9066 |
| primary_location.source.type | journal |
| primary_location.source.is_oa | True |
| primary_location.source.issn_l | 2475-9066 |
| primary_location.source.is_core | True |
| primary_location.source.is_in_doaj | True |
| primary_location.source.display_name | The Journal of Open Source Software |
| primary_location.source.host_organization | https://openalex.org/P4310315853 |
| primary_location.source.host_organization_name | Open Journals |
| primary_location.source.host_organization_lineage | https://openalex.org/P4310315853 |
| primary_location.source.host_organization_lineage_names | Open Journals |
| primary_location.license | cc-by |
| primary_location.pdf_url | https://joss.theoj.org/papers/10.21105/joss.03497.pdf |
| primary_location.version | publishedVersion |
| primary_location.raw_type | journal-article |
| primary_location.license_id | https://openalex.org/licenses/cc-by |
| primary_location.is_accepted | True |
| primary_location.is_published | True |
| primary_location.raw_source_name | Journal of Open Source Software |
| primary_location.landing_page_url | https://doi.org/10.21105/joss.03497 |
| publication_date | 2021-08-24 |
| publication_year | 2021 |
| referenced_works | https://openalex.org/W2315318154, https://openalex.org/W1996066177, https://openalex.org/W1995808589, https://openalex.org/W1495776297 |
| referenced_works_count | 4 |
| abstract_inverted_index.a | 1, 27, 98, 113, 132 |
| abstract_inverted_index.In | 0 |
| abstract_inverted_index.as | 45 |
| abstract_inverted_index.be | 55, 110, 119 |
| abstract_inverted_index.in | 9, 134 |
| abstract_inverted_index.is | 6, 26, 43 |
| abstract_inverted_index.of | 34, 40, 69, 162 |
| abstract_inverted_index.on | 60 |
| abstract_inverted_index.or | 105 |
| abstract_inverted_index.to | 78 |
| abstract_inverted_index.and | 12, 65, 88, 156 |
| abstract_inverted_index.any | 102 |
| abstract_inverted_index.can | 54, 109, 118 |
| abstract_inverted_index.for | 16, 30, 75, 138, 146 |
| abstract_inverted_index.gap | 133 |
| abstract_inverted_index.out | 74 |
| abstract_inverted_index.the | 32, 49, 61, 66, 139, 157 |
| abstract_inverted_index.(ISO | 22 |
| abstract_inverted_index.O(n) | 85 |
| abstract_inverted_index.able | 77 |
| abstract_inverted_index.data | 10, 103, 124 |
| abstract_inverted_index.file | 104 |
| abstract_inverted_index.into | 122 |
| abstract_inverted_index.most | 80 |
| abstract_inverted_index.next | 67 |
| abstract_inverted_index.only | 59 |
| abstract_inverted_index.seen | 64 |
| abstract_inverted_index.such | 35, 41 |
| abstract_inverted_index.text | 5, 52 |
| abstract_inverted_index.that | 48, 53, 100, 108 |
| abstract_inverted_index.tree | 117 |
| abstract_inverted_index.very | 89 |
| abstract_inverted_index.work | 137 |
| abstract_inverted_index.1996) | 25 |
| abstract_inverted_index.Julia | 94, 140, 147, 159 |
| abstract_inverted_index.based | 58 |
| abstract_inverted_index.being | 76 |
| abstract_inverted_index.files | 11 |
| abstract_inverted_index.fills | 131 |
| abstract_inverted_index.input | 70 |
| abstract_inverted_index.known | 44 |
| abstract_inverted_index.light | 90 |
| abstract_inverted_index.macro | 160 |
| abstract_inverted_index.parse | 79, 116 |
| abstract_inverted_index.these | 163 |
| abstract_inverted_index.token | 68 |
| abstract_inverted_index.tools | 144 |
| abstract_inverted_index.using | 112, 126 |
| abstract_inverted_index.while | 83 |
| abstract_inverted_index.(DSLs) | 15 |
| abstract_inverted_index.(EBNF) | 21 |
| abstract_inverted_index.2020), | 155 |
| abstract_inverted_index.2021), | 152 |
| abstract_inverted_index.Format | 20 |
| abstract_inverted_index.Lerche | 93 |
| abstract_inverted_index.memory | 91 |
| abstract_inverted_index.native | 142 |
| abstract_inverted_index.parsed | 57 |
| abstract_inverted_index.parser | 99, 129, 143 |
| abstract_inverted_index.stands | 73 |
| abstract_inverted_index.subset | 39 |
| abstract_inverted_index.syntax | 33 |
| abstract_inverted_index.text.A | 37 |
| abstract_inverted_index.tokens | 62 |
| abstract_inverted_index.useful | 38 |
| abstract_inverted_index.(Cooke, | 151 |
| abstract_inverted_index.Central | 23 |
| abstract_inverted_index.LALR(1) | 114 |
| abstract_inverted_index.already | 63 |
| abstract_inverted_index.include | 149 |
| abstract_inverted_index.meaning | 47 |
| abstract_inverted_index.package | 95 |
| abstract_inverted_index.use.The | 92 |
| abstract_inverted_index.EBNF.The | 115 |
| abstract_inverted_index.LALR(1), | 46 |
| abstract_inverted_index.built-in | 158 |
| abstract_inverted_index.commonly | 7 |
| abstract_inverted_index.context, | 3 |
| abstract_inverted_index.describe | 51 |
| abstract_inverted_index.grammars | 42, 50 |
| abstract_inverted_index.handling | 17 |
| abstract_inverted_index.language | 107 |
| abstract_inverted_index.projects | 148 |
| abstract_inverted_index.run-time | 86 |
| abstract_inverted_index.standard | 29 |
| abstract_inverted_index.(DeRemer, | 71 |
| abstract_inverted_index.Pegparser | 153 |
| abstract_inverted_index.available | 145 |
| abstract_inverted_index.described | 111 |
| abstract_inverted_index.generates | 97 |
| abstract_inverted_index.generator | 130 |
| abstract_inverted_index.languages | 14 |
| abstract_inverted_index.processes | 101 |
| abstract_inverted_index.Secretary, | 24 |
| abstract_inverted_index.complexity | 87 |
| abstract_inverted_index.describing | 31 |
| abstract_inverted_index.languages, | 82 |
| abstract_inverted_index.rules.This | 128 |
| abstract_inverted_index.scientific | 2, 136 |
| abstract_inverted_index.structured | 4, 36 |
| abstract_inverted_index.structures | 125 |
| abstract_inverted_index.(Schneider, | 154 |
| abstract_inverted_index.encountered | 8 |
| abstract_inverted_index.immediately | 120 |
| abstract_inverted_index.programming | 81 |
| abstract_inverted_index.system.None | 161 |
| abstract_inverted_index.transformed | 121 |
| abstract_inverted_index.guaranteeing | 84 |
| abstract_inverted_index.usersupplied | 127 |
| abstract_inverted_index.1969).LALR(1) | 72 |
| abstract_inverted_index.Backhaus-Naur | 19 |
| abstract_inverted_index.automatically | 96 |
| abstract_inverted_index.data.Extended | 18 |
| abstract_inverted_index.unambiguously | 56 |
| abstract_inverted_index.domainspecific | 13 |
| abstract_inverted_index.domain-specific | 106 |
| abstract_inverted_index.ecosystem.Other | 141 |
| abstract_inverted_index.standards-based | 135 |
| abstract_inverted_index.ParserCombinator | 150 |
| abstract_inverted_index.well-established | 28 |
| abstract_inverted_index.application-specific | 123 |
| cited_by_percentile_year.max | 97 |
| cited_by_percentile_year.min | 90 |
| countries_distinct_count | 1 |
| institutions_distinct_count | 2 |
| citation_normalized_percentile.value | 0.74024747 |
| citation_normalized_percentile.is_in_top_1_percent | False |
| citation_normalized_percentile.is_in_top_10_percent | False |