I have posted a grammar in
https://lists.oasis-open.org/archives/odata/201208/msg00081.html
This grammar corrects the syntax errors and specifies "
{TODOn}
" for the undefined terms, where n ranges from 1 to 55. This grammar also includes the grammar rules specified in cited RFCs.
The following are the modifications I made to the core grammar in OData ABNF.markdown:
concreteSpatialTypeName ends with a trailing slash. The trailing slash was deleted.
collectionPropertyInVJSON ends with a trailing slash. The trailing slash was deleted. In addition, the parentheses were not balanced. A guess was made about where to place the missing parentheses.
collectionNavigationExpr is missing a final parenthesis.
firstMemberExpr has two unmatched right parentheses. I was unable to guess what the correct rule should be so I deleted the right parentheses for now.
memberExpr has two unmatched right parentheses. I was unable to guess what the correct rule should be so I deleted the right parentheses for now.
primitiveColServiceOp = odataIdentitier was obviously misspelled. Presumably, it should be odataIdentifier
primitiveColFunction = odataIdentitier was obviously misspelled. Presumably, it should be odataIdentifier.
qualifiedActionName = fullActionName uses an undefined term. I replaced the rule with a rule analogous to qualifiedFunctionName.
time = time SQUOTE sign "P" [ 1*DIGIT "Y" ] [ 1*DIGIT "M" ] [ 1*DIGIT "D" ] [ "T" [ 1*DIGIT "H" ] [ 1*DIGIT "M" ] [ 1*DIGIT "S" ] ] SQUOTE
This defines time recursively in terms of time. This results in a grammar that is unparsable. It was replaced by this rule:
time = SQUOTE sign "P" [ 1*DIGIT "Y" ] [ 1*DIGIT "M" ] [ 1*DIGIT "D" ] [ "T" [ 1*DIGIT "H" ] [ 1*DIGIT "M" ] [ 1*DIGIT "S" ] ] SQUOTE
I could not track down the citation to [IANA-MMT], so I left the rule referencing it undefined.