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

📄 expr.atg

📁 一个Pascal语言分析器
💻 ATG
字号:
COMPILER Expr

  PROCEDURE GetNumber (VAR Int : INTEGER);
  (* Convert latest token to integer value Int *)
    VAR
      Error : INTEGER;
      S : STRING;
    BEGIN
      ExprS.GetString(ExprS.pos, ExprS.len, S);
      Int := 0;
      Val(S, Int, Error);
    END;

CHARACTERS
  digit =  "0123456789" .

TOKENS
  num = digit {digit} .

PRODUCTIONS
  Expr                              (. VAR r: INTEGER; .)
    = Expression <r> "="            (. WriteLn(r); .) .

  Expression <VAR e: INTEGER>       (. VAR t: INTEGER; .)
    = Term <e>
      {  '+' Term <t>               (. e := e + t .)
      |  '-' Term <t>               (. e := e - t .)
      }.

  Term <VAR t: INTEGER>             (. VAR f: INTEGER; .)
    = Factor <t>
      {  '*' Factor <f>             (. t := t * f .)
      |  '/' Factor <f>             (. t := t DIV f .)
      }.

  Factor <VAR f: INTEGER> =
         num                        (. GetNumber(f) .)
    | '(' Expression <f> ')'.

END Expr.

⌨️ 快捷键说明

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