Universal Binary Format 2.2 and Augmented Backus-Naur Form
Erlang Makefile
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Universal Binary Format and ABNF

Copyright (c) 2011-2016 by Joseph Wayne Norton

Authors: Joseph Wayne Norton (norton@alum.mit.edu).

This is UBF-ABNF, a framework for integrating UBF and ABNF. This repository depends on the UBF and ABNFC open source repositories.

This repository is experimental in nature and not intended for production usage.

Quick Start Recipe

To download, build, and test the ubf_abnf application in one shot, please follow this recipe:

$ mkdir working-directory-name
$ cd working-directory-name
$ git clone https://github.com/ubf/ubf-abnf.git ubf_abnf
$ cd ubf_abnf
$ make deps clean compile test


Where should I start?

This README is a good first step.

The UBF User's Guide is the best next step. Check out http://ubf.github.com/ubf/ubf-user-guide.en.html for further detailed information.

ABNF samples and eunit tests can be found in the test/eunit directory. directory.

What is UBF?

UBF is the "Universal Binary Format", designed and implemented by Joe Armstrong. UBF is a language for transporting and describing complex data structures across a network. It has three components:

  • UBF(a) is a "language neutral" data transport format, roughly equivalent to well-formed XML.

  • UBF(b) is a programming language for describing types in UBF(a) and protocols between clients and servers. This layer is typically called the "protocol contract". UBF(b) is roughly equivalent to Verified XML, XML-schemas, SOAP and WDSL.

  • UBF(c) is a meta-level protocol used between a UBF client and a UBF server.

See http://ubf.github.com/ubf for further details.

What is ABNF?

Augmented Backus-Naur Form (ABNF) is a metalanguage based on Backus-Naur Form (BNF), but consisting of its own syntax and derivation rules.

  • The motive principle for ABNF is to describe a formal system of a language to be used as a bidirectional communications protocol.

  • It is defined by Internet Standard 68 (STD 68), which as of May 2008 is RFC 5234, and it often serves as the definition language for IETF communication protocols.


For further information and help for related tools, please refer to the following links:


Many, many thanks to Joe Armstrong, UBF's designer and original implementer.

Thanks to Anders Nygren, ABNFC's designer and implementor. ABNFC is a parser generator for Erlang. UBF-ABNF relies on the ABNFC application for parsing ABNF into a symbolic form.

Gemini Mobile Technologies, Inc. has approved the release of this repository under an MIT license.