Schema definition

Structure of the BRCL code system

     brcl_code ::= brcl_set {extended_identity_tag} ;
     brcl_set ::= brcl_aaaa | brcl_aaax | brcl_aaxx | brcl_axxx  ;
     brcl_aaaa ::= alpha * 4 ;
     brcl_aaax ::= (alpha * 3) empty ;
     brcl_aaxx ::= (alpha * 2) empty empty ;
     brcl_axxx ::= alpha (empty * 3) ;
     
     extended_identity_tag ::= tag_separator eit_set ;
     eit_set ::= eit_aaa | eit_aax | eit_axx ;
     eit_aaa ::= alpha alpha alpha ;
     eit_aax ::= alpha alpha empty ;
     eit_axx ::= alpha empty empty ;
     
     tag_separator ::= "-" ;
     alpha ::= [a-z] | "'" ;
     empty ::= "*" ;
   

Macrolanguages

The BRCL encoding allows and encourages the inclusion of macrolanguages such as Celinese in its codification effort. Not only does it save on the code space, it also is just *so* cool.

Character space (28)

There are 28 possible characters allowed in codes. Of these, 27 are unrestricted and one is restricted in its use. No distinction can be done on the basis of capitalisation as all codes shall be in lowercase.

Unrestricted characters (27)

The ISO basic Latin alphabet is the basis for the codes and contains twenty-six letters. These are: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z. To this set the apostrophe ' is added bringing the total to twenty-seven permitted characters.

Restricted character (1)

The restricted character asterisk * shall only be used in accordance with the empty-position naming guidelines1.

Code space

A twenty-eight character, four-letter code gives 614 656 theoretical combinations (28 x 28 x 28 x 28 = 614 656). The combinations *AAA, **AA, ***A, **** are however disallowed. As such, the code space is decreased by 20440 combinations for a total of 594 216 valid codes.

Note that the vast majority of codes will probably be composed of the basic 26 characters of the Latin alphabet which only gives 456 976 available combinations. Compliance with the schema demands absolute support for the full 594 216 combinations.

Extended identity tag (EIT)

The extended identity tag (EIT) is an optionally-included, mandatorily-supported three-letter component which allows narrowing of the code to a specific variety or subset of the language in question. This effectively extends the range of unique language identifications by 19 683 possible non-hollow varieties for each language code. All conforming implementations must include support for this extension so that narrowed identity is preserved across system boundaries.

The EIT should be kept separate but adjunct to its main code. If present, it must be separated from its main code by a hyphen in running text following the schema. Visually, it may be presented separated by a stark or emphatic element or other such visual device.

The EIT behaves exactly as the main code itself with regard to the empty-position naming guidelines.

Empty-position naming guidelines

  1. In the event of a constructed language with a name having a Latin representation shorter than four characters where no alternate solution can be found, the empty-position(s) shall be indicated with an asterisk, filling the character gap from right-to-left. E.g. X language → x***, XX → xx**, XXX → xxx*.

  2. A language code created with empty position(s) shall be termed hollow.