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

📄 topsy0.atg

📁 一个Modula-2语言分析器
💻 ATG
字号:
COMPILER Topsy
(* Topsy++ level 1 grammar - no procedures, functions, parameters
   Grammar only - no code generation or constraint analysis
   See "Compilers and Compiler generators - an introduction with C++"
   ISBN 1-85032-298-8, International Thomson Computer Press
   P.D. Terry, Rhodes University, 1996 *)

PRAGMAS
  DebugOn    = "$D+" .

CHARACTERS
  cr         = CHR(13) .
  lf         = CHR(10) .
  letter     = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" .
  digit      = "0123456789" .
  graphic    = ANY - '"' - "'" - "\" - cr - lf - CHR(0) .

IGNORE CHR(9) .. CHR(13)
COMMENTS FROM "//" TO lf
COMMENTS FROM "/*" TO "*/"

TOKENS
  identifier = letter { letter | digit | "_" } .
  number     = digit { digit } .
  string     = '"' { graphic | "\" graphic | "\'" | "\\" | '\"' } '"' .
  character  = "'" ( graphic | "\" graphic | "\'" | "\\" | '\"' ) "'" .

PRODUCTIONS
  Topsy = "void" "main" "(" "void" ")" Block .

  Block = "{" { Declaration | Statement } "}" .

  Declaration = ConstDeclaration | VarDeclarations .

  Statement
  =    Block           | Assignment
     | IfStatement     | WhileStatement
     | ForStatement    | RepeatStatement
     | ReadStatement   | WriteStatement
     | ReturnStatement | EmptyStatement .

  ConstDeclaration
  =  "const" identifier "=" ( number | character | "true" | "false" ) ";" .

  VarDeclarations = ( "int" | "bool" | "char" ) OneVar { "," OneVar } ";" .

  OneVar = identifier [ ArraySize | "=" Expression ] .

  ArraySize = "[" number "]" .

  Assignment = Variable ( "=" Expression | "++" | "--" ) ";" .

  Variable = Designator .

  Designator = identifier [ "[" Expression "]" ] .

  IfStatement = "if" "(" Condition ")" Statement [ "else" Statement ] .

  WhileStatement = "while" "(" Condition ")" Statement .

  RepeatStatement = "do" { Statement } "until" "(" Condition ")" ";" .

  Condition = Expression .

  ForStatement
  =  "for" "(" identifier "=" Expression ";" Condition [ ";" Epilogue ] ")"
     Statement .

  Epilogue = identifier ( "=" Expression | "++" | "--" ) .

  ReadStatement = "cin" ">>" Variable { ">>" Variable } ";" .

  WriteStatement = "cout" "<<" WriteElement { "<<" WriteElement } ";" .

  WriteElement = string | Expression .

  ReturnStatement = "return" ";" .

  EmptyStatement = ";" .

  Expression = SimpleExpr [ RelOp SimpleExpr ] .

  SimpleExpr = ( "+" Term | "-" Term | Term ) { AddOp Term } .

  Term = Factor { MulOp Factor } .

  Factor =   Designator | number | character | "true" | "false"
           | "!" Factor | "(" Expression ")" .

  AddOp = "+" | "-" | "||" .

  MulOp = "*" | "/" | "%" | "&&" .

  RelOp = "==" | "!=" | "<" | "<=" | ">" | ">=" .

END Topsy.

⌨️ 快捷键说明

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