| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- $LS (*ACFGILMOSX*)
- (* COCO/R for MS-DOS grammar stripped of semantic attributes
- as adapted by P.D. Terry, January 1992 *)
- COMPILER CR
- CHARACTERS
- letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_".
- digit = "0123456789".
- ctrl = CHR(1) .. CHR(31).
- tab = CHR(9).
- eol = CHR(13).
- lf = CHR(10).
- noQuote1 = ANY - '"' - ctrl.
- noQuote2 = ANY - "'" - ctrl.
- IGNORE tab + eol + lf
- TOKENS
- ident = letter {letter | digit} .
- string = '"' {noQuote1} '"' | "'" {noQuote2} "'" .
- number = digit {digit} .
- PRAGMAS
- Options = "$" {letter} .
- COMMENTS FROM "(*" TO "*)" NESTED
- COMMENTS FROM "/*" TO "*/"
- PRODUCTIONS
- CR = "COMPILER" Ident { ANY } { Declaration }
- SYNC "PRODUCTIONS"
- { Ident ( Attribs | ) [ SemText ] WEAK "=" Expression WEAK "." }
- "END" Ident "." .
- Declaration =
- "CHARACTERS" { SetDecl }
- | "TOKENS" { TokenDecl }
- | "NAMES" { NameDecl }
- | "PRAGMAS" { TokenDecl }
- | "COMMENTS" "FROM" TokenExpr "TO" TokenExpr ( "NESTED" | )
- | "IGNORE" ( "CASE" | Set ) .
- SetDecl = Ident "=" Set "." .
- Set = SimSet { "+" SimSet | "-" SimSet } .
- SimSet = Ident | string | SingleChar [ ".." SingleChar ] | "ANY" .
- SingleChar = "CHR" "(" number | string ")" .
- TokenDecl = Symbol SYNC ( "=" TokenExpr "." | ) [ SemText ] .
- Expression = Term { WEAK "|" Term } .
- Term = ( Factor { Factor } | ) .
- Factor = ( [ "WEAK" ] Symbol ( Attribs | )
- | "(" Expression ")"
- | "[" Expression "]"
- | "{" Expression "}"
- | SemText | "ANY" | "SYNC" ) .
- TokenExpr = TokenTerm { WEAK "|" TokenTerm } .
- TokenTerm = TokenFactor { TokenFactor } [ "CONTEXT" "(" TokenExpr ")" ] .
- TokenFactor = ( Symbol | "(" TokenExpr ")" | "[" TokenExpr "]"
- | "{" TokenExpr "}" ) .
- Ident = ident .
- Symbol = ( Ident | string ) .
- Attribs = "<" { ANY } ">" .
- SemText = "(." { ANY } ".)" .
- NameDecl = Ident "=" ( ident | string ) "." .
- END CR.
|