⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cr0.atg

📁 一个Modula-2语言分析器
💻 ATG
字号:
$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 ")" .

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.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -