decl.atg

来自「cocorj09-一个Java语言分析器」· ATG 代码 · 共 43 行

ATG
43
字号
COMPILER Decl
/* Translate simple C declarations into English
   Based on Kernighan and Ritchie: "C Programming language", page 122
   See also: Parr et.al. "PCCTS reference manual", page 53 in ACM SIGPLAN
   Notices 27(2), 88-165, 1992 */

CHARACTERS
  digit =  "0123456789" .
  letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyx_" .

IGNORE CHR(9) .. CHR(13)

TOKENS
  number = digit { digit } .
  name = letter { letter } .

PRODUCTIONS

  Decl       =
               { name                     (. String s = LexString(); .)
                 Dcl                      (. System.out.println(" " + s); .)
                 ";" } .

  Dcl        =   "*" Dcl                  (. System.out.print(" pointer to"); .)
               | DirectDcl .

  DirectDcl  =
                name                      (. System.out.print(LexString() + " is"); .)
                 Descriptor
               | "(" Dcl ")" Descriptor .

  Descriptor =
               [  "["                     (. System.out.print(" array "); .)
                  ( number                (. System.out.print("[" + LexString() + "] "); .)
                    | /* no dimension */
                  )
                  "]"                     (. System.out.print("of"); .)
                  Descriptor
                | "(" ")"                 (. System.out.print(" function returning"); .)
               ] .

END Decl.

⌨️ 快捷键说明

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