PARSERS & TRANSPILERS · CUSTOM PARSER DEVELOPMENT

Custom parsers for the languages nobody else supports.

Proprietary languages, in-house dialects, column-positional file formats, configuration languages whose only specification is the program that reads them. We build the grammar, model the abstract syntax, and hand over a parser with the tests and the coverage measurements that show exactly what it handles.

Off-the-shelf parsers exist for the languages enough people share. We license fifteen of them ourselves. A custom parser is what you need when your input is not one of those: a language your company invented, a dialect that drifted away from the standard twenty years ago, or a format that was never a language at all until somebody started writing programs in it.

When a custom parser is the right answer

The language is yours alone

An in-house rule language, a report definition format, a scripting layer built on top of a product. Nobody outside the company has ever needed to read it mechanically, so nobody has.

The format is positional

Meaning carried by column number rather than by syntax. Standard lexers cannot express that: the tokenizer has no idea where it is on the line. It is solvable, and it is not solvable by a regular expression.

The specification is the code

There is no grammar document, or there is one and it stopped matching reality in 2004. The real definition is the set of files that currently exist, which is exactly what we build the parser against.

You need answers, not a rewrite

Impact analysis, dead-code detection, data lineage, documentation generated from the source. All of it needs a resolved model of the code. None of it needs you to migrate anything.

Languages we have built parsers for

Not the catalog of products — those are on the licensing page. This is the other kind of work: one-off parsers built for one organization, for languages and formats most parser vendors have never been asked about.

EXPRESSISO 10303 data modeling, for the European Space Agency: their ANTLR 2 parser carried forward to ANTLR 4.
GQLThe ISO graph query language, as a grammar and parser proof of concept for the standards body behind it.
ZPL, DPL, JPLLabel printer command languages, later made reentrant, for Brady Corporation.
IATA fare constructionThe text that encodes how an air fare was built, parsed into something queryable.
DSTVThe steel fabrication interchange format used by CNC machinery.
PowerBuilder / PowerScriptA 4GL with a long tail of installed applications and very little tooling.
XQueryAn existing ANTLR 2 parser corrected and extended rather than replaced.
Arlington PDF modelThe formal model of the PDF specification, parsed for validation work.
NextflowThe scientific workflow language, modeled as a Starlasu language module.
OCL, PSS, VerilogConstraint, portable-stimulus and hardware description languages.

Most custom parser work is done under an NDA, so the client is usually not nameable even when the language is. The organizations named above have agreed to be named or have said so themselves in a testimonial. If you want a reference in your own sector, ask and we will find out what we are allowed to tell you.

What you receive

A parser is not a deliverable on its own. What makes it usable six months later is everything around it, so that is what the engagement produces.

GRAMMARSource, yours, in the toolchain we agreed
MODELTyped AST classes, not maps of strings
TESTSA suite over your own example files
DOCUMENTATIONThe AST you will actually work against
MEASUREMENTCoverage per construct, not a percentage guess
CLIA command-line tool, so it runs without writing code
WARRANTYAgreed per project — 90 and 180 days are both normal

“The screen definitions I needed parsing had a few non modern constructs, such as special handling dependent on line column position and the delivered grammar handled that with aplomb. Delivery included a full suite of tests and extensive documentation including easy to understand comments.”

Graham Cunningham, MEA General Manager, Heirloom Computing Inc. — more on the clients page

How we know when it is finished

Parser projects have a reputation for running without end, and the reason is almost always that nobody agreed what finished meant. We fix that before development starts, using the Chisel Method: you and we choose a validation set of real example files, and the parser is complete when two checks pass on that set.

Both checks are mechanical, so progress is a number rather than an opinion, and the goal is fixed before anyone has an incentive to reinterpret it. When both pass, the first version ships and maintenance begins — and if you add files to the validation set later, that is a new goal, negotiated as one.

Read the Chisel Method in full →

Every parser we build arrives in the same shape

This is the concrete reason to have us build it rather than someone else, and it has nothing to do with enthusiasm for our own methodology.

Error tolerance is part of the deliverable

A parser that stops at the first file it dislikes is unusable on a real estate, because a real estate always contains something odd. Ours return a partial tree plus positioned issues, so a batch over twenty thousand files finishes and then tells you where it struggled.

Shape of a diagnostic

partial tree + positioned issues

ERROR  unknown attribute in field definition
  SCREENS/ORDENT.scr:118:31
    FLD ORDTOT  COL 42  LEN 11  EDIT ZZ?,ZZ9.99-
                                          ^
  parsing continued: node kept, attribute marked unresolved

RUN    19,842 files · 19,839 clean · 3 with issues · 0 aborted
What matters is the last line. The run completed and produced a work list, instead of failing and producing nothing. Illustration of the output shape, not a client artifact.

What we need from you, and what we will not promise

Tell us what you need to read.

Send us a description of the language or format, and a handful of real files if you can. We will tell you whether one of the parsers we already license covers it, what a custom parser would involve, and what we would need from you to put a price on it.

Tell us about your language

Scroll to Top