rcs: comma-v grammar
3.1.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}* "@"