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

📄 clang1.atg

📁 COCO類似C的編譯器
💻 ATG
字号:
COMPILER Clang1
/* Simple CLANG level 1 parser.
   See "Programming Language Translation" by P.D. Terry (Addison Wesley 1986) 
   Adapted from Pat Terry's distribution
*/

IGNORE CASE

CHARACTERS
  eol      = CHR(10) .
  letter   = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" .
  digit    = "0123456789" .
  noquote1 = ANY - "'" - eol .
  noquote2 = ANY - '"' - eol .

IGNORE  CHR(9) .. CHR(13)

TOKENS
  identifier = letter {letter | digit} .
  number     = digit { digit} .
  string     =  "'" noquote1 {noquote1} "'" | '"' noquote2 {noquote2} '"' .

PRODUCTIONS
   Clang1             =  "PROGRAM" ProgIdentifier ";"
                            Block "." .

   Block              =  [ ConstDeclarations ] [ VarDeclarations ]
                         CompoundStatement .

   ConstDeclarations  =  "CONST"
                            ConstIdentifier "=" number ";" SYNC
                            { ConstIdentifier "=" number ";" SYNC } .

   VarDeclarations    =  "VAR"
                            VarIdentifier { WEAK "," VarIdentifier } ";" SYNC .

   CompoundStatement  =  "BEGIN"
                            Statement { WEAK ";" Statement }
                         "END" .

   Statement          =  SYNC [  CompoundStatement | Assignment
                               | IfStatement | WhileStatement
                               | WriteStatement | ReadStatement ] .
                       
   Assignment         =  VarDesignator ":=" Expression .
                          
   IfStatement        =  "IF" Condition "THEN" Statement .

   WhileStatement     =  "WHILE" Condition "DO" Statement .
                          
   WriteStatement     =  "WRITE" [ "(" WriteList ")" ] .
                          
   ReadStatement      =  "READ" "(" VarDesignator { "," VarDesignator } ")" .

   Condition          =    "ODD" "(" Expression ")"
                         | Expression RelOp Expression SYNC .

   WriteList          =  ( Expression | string ) { "," ( Expression | string ) }.
                          
   Expression         =  SYNC ( Term | "+" Term | "-" Term) { AddOp Term } .
                          
   Term               =  Factor { MulOp Factor } .
                          
   Factor             =  SYNC (identifier | number | "(" Expression ")" ) .

   VarDesignator      =  VarIdentifier .

   AddOp              =  "+" | "-" .

   MulOp              =  "*" | "/" .

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

   ProgIdentifier     =  identifier .

   VarIdentifier      =  identifier .

   ConstIdentifier    =  identifier .

END Clang1.




⌨️ 快捷键说明

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