-- OneCasabaFormat.OneCasaba: February 28, 1986 5:08:25 pm PST
-- Sturgis, May 6, 1986 10:53:07 am PDT
AllowConflicts
Begin
{ "{" "}" ":" "←" "." ";" "=" }: SimpleTokens;
{ "Begin" "End" "SimpleTokens" "GenericToken" "NonTerminal" }: SimpleTokens;
Identifier: GenericToken = "tokenID";
Rope: GenericToken = "tokenROPE";
MainGoal: NonTerminal;
MainGoal ← Block;
Block: NonTerminal;
Block.a ← "Begin" ItemSeq "End" "." ;
Block.b ← "Begin" ItemSeq ";" "End" "." ;
Block.c ← "Begin" ItemSeq ";" "End" "." ;
ItemSeq: NonTerminal;
ItemSeq.one ← Item ;
ItemSeq.more ← ItemSeq ";" Item ;
Item: NonTerminal;
Item.simpleTkns ← "{" RopeSeq "}" ":" "SimpleTokens" ;
Item.genericTkn ← Identifier ":" "GenericToken" "=" Rope ;
Item.nonTerminal ← Identifier ":" "NonTerminal" ;
Item.prod ← ProdName "←" RightSideSeq ;
RopeSeq: NonTerminal;
RopeSeq.one ← Rope ;
RopeSeq.many ← RopeSeq Rope ;
ProdName: NonTerminal;
ProdName.one ← Identifier ;
ProdName.two ← Identifier "." Identifier ;
RightSideSeq: NonTerminal;
RightSideSeq.emtpy ← ;
RightSideSeq.nonEmpty ← RightSideSeq RightSideItem ;
RightSideItem: NonTerminal;
RightSideItem.simpleToken ← Rope ;
RightSideItem.identifier ← Identifier ;
End.