Next: , Up: File format   [Contents][Index]


3.1 File format grammar

The meta syntax in this section uses the following conventions: ‘|’ (U+7C) separates alternatives; ‘{’ (U+7B) and ‘}’ (U+7D) enclose optional phrases; ‘{’ and ‘}*’ (trailing U+2A) enclose phrases that can be repeated zero or more times; ‘{’ and ‘}+’ (trailing U+2B) enclose phrases that must appear at least once and can be repeated; terminal symbols are in ‘""’ (two U+22).

rcstext   ::=  admin {delta}* desc {deltatext}*

admin     ::=  "head"         {num} ";"
               { "branch"     {num} ";" }
               "access"       {id}* ";"
               "symbols"      { sym ":" num }* ";"
               "locks"        { id ":" num }* ";"
               { "strict" ";" }
               { "integrity " {intstring} ";" }
               { "comment"    {string} ";" }
               { "expand"     {string} ";" }

delta     ::=  num
               "date"       num ";"
               "author"     id ";"
               "state"      {id} ";"
               "branches"   {num}* ";"
               "next"       {num} ";"
               { "commitid" sym ";" }

desc      ::=  "desc"  string

deltatext ::=  num
               "log"   string
               "text"  string

num       ::=  { digit | "." }+

digit     ::=  "0" through "9"

id        ::=  { idchar | "." }+

sym       ::=  {idchar}+

idchar    ::=  any visible graphic character except special

special   ::=  "$" | "," | "." | ":" | ";" | "@"

string    ::=  "@" { any character, with @ doubled }* "@"

word      ::=  id | num | string | ":"

intchar   ::=  any character, except @

thirdp    ::=  "^L" {intchar}*

intstring ::= "@" {intchar}* {thirdp}* "@"