CR0.atg 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. $LS (*ACFGILMOSX*)
  2. (* COCO/R for MS-DOS grammar stripped of semantic attributes
  3. as adapted by P.D. Terry, January 1992 *)
  4. COMPILER CR
  5. CHARACTERS
  6. letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_".
  7. digit = "0123456789".
  8. ctrl = CHR(1) .. CHR(31).
  9. tab = CHR(9).
  10. eol = CHR(13).
  11. lf = CHR(10).
  12. noQuote1 = ANY - '"' - ctrl.
  13. noQuote2 = ANY - "'" - ctrl.
  14. IGNORE tab + eol + lf
  15. TOKENS
  16. ident = letter {letter | digit} .
  17. string = '"' {noQuote1} '"' | "'" {noQuote2} "'" .
  18. number = digit {digit} .
  19. PRAGMAS
  20. Options = "$" {letter} .
  21. COMMENTS FROM "(*" TO "*)" NESTED
  22. COMMENTS FROM "/*" TO "*/"
  23. PRODUCTIONS
  24. CR = "COMPILER" Ident { ANY } { Declaration }
  25. SYNC "PRODUCTIONS"
  26. { Ident ( Attribs | ) [ SemText ] WEAK "=" Expression WEAK "." }
  27. "END" Ident "." .
  28. Declaration =
  29. "CHARACTERS" { SetDecl }
  30. | "TOKENS" { TokenDecl }
  31. | "NAMES" { NameDecl }
  32. | "PRAGMAS" { TokenDecl }
  33. | "COMMENTS" "FROM" TokenExpr "TO" TokenExpr ( "NESTED" | )
  34. | "IGNORE" ( "CASE" | Set ) .
  35. SetDecl = Ident "=" Set "." .
  36. Set = SimSet { "+" SimSet | "-" SimSet } .
  37. SimSet = Ident | string | SingleChar [ ".." SingleChar ] | "ANY" .
  38. SingleChar = "CHR" "(" number | string ")" .
  39. TokenDecl = Symbol SYNC ( "=" TokenExpr "." | ) [ SemText ] .
  40. Expression = Term { WEAK "|" Term } .
  41. Term = ( Factor { Factor } | ) .
  42. Factor = ( [ "WEAK" ] Symbol ( Attribs | )
  43. | "(" Expression ")"
  44. | "[" Expression "]"
  45. | "{" Expression "}"
  46. | SemText | "ANY" | "SYNC" ) .
  47. TokenExpr = TokenTerm { WEAK "|" TokenTerm } .
  48. TokenTerm = TokenFactor { TokenFactor } [ "CONTEXT" "(" TokenExpr ")" ] .
  49. TokenFactor = ( Symbol | "(" TokenExpr ")" | "[" TokenExpr "]"
  50. | "{" TokenExpr "}" ) .
  51. Ident = ident .
  52. Symbol = ( Ident | string ) .
  53. Attribs = "<" { ANY } ">" .
  54. SemText = "(." { ANY } ".)" .
  55. NameDecl = Ident "=" ( ident | string ) "." .
  56. END CR.