亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? taste.atg

?? cocorj09-一個Java語言分析器
?? ATG
字號:
COMPILER Taste

/*----------------------------------------------------------------------------*/

CHARACTERS
  letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".
  digit  = "0123456789".
  eol    = CHR(13).
  lf     = CHR(10).
  tab    = CHR(9).

TOKENS
  ident  = letter {letter | digit}.
  number = digit {digit}.

IGNORE eol + lf + tab

COMMENTS FROM "(*" TO "*)" NESTED

PRODUCTIONS

/*----------------------------------------------------------------------------*/

Taste                    (. String name, progName; Obj obj; .)
= "PROGRAM"              (. TC.Init(); TL.Init(); .)
  Ident<^progName>
  ";"                    (. TC.progStart = TC.pc; .)
  Body
  Ident<^name>
                         (. if (!name.equals(progName)) SemError(3);
                            TC.Emit(TC.HALTc); .)
  ".".

/*----------------------------------------------------------------------------*/

Body                     (. int fix, type; String name, name1; Obj obj; .)
=                        (. TL.EnterScope(); fix = TC.pc + 1; TC.Emit2(TC.JMP, 0); .)
  { "VAR"
    { Ident<^name>
      ":"                (. obj = TL.NewObj(name, TL.vars); .)
      TypeId<^obj.type>
      ";"             
    }

  | "PROCEDURE"
    Ident<^name>
    ";"                  (. obj = TL.NewObj(name, TL.procs); obj.adr = TC.pc; .)
    Body
    Ident<^name1>        (. TC.Emit(TC.RET);
                            if (!name.equals(name1)) SemError(3); .)
    ";"
  }
  "BEGIN"                (. TC.Fixup(fix); TC.Emit2(TC.RES, TL.DataSpace()); .)
  StatSeq
  "END"                  (. TL.LeaveScope(); .).

/*----------------------------------------------------------------------------*/

TypeId<^int type>
=                        (. type = TL.undef; .)
 ( "INTEGER"             (. type = TL.integer; .)
 | "BOOLEAN"             (. type = TL.bool; .)
 ).

/*----------------------------------------------------------------------------*/

Ident<^String name>
= ident                  (. name = token.val; .).

/*----------------------------------------------------------------------------*/

StatSeq = Stat {";" Stat}.

/*----------------------------------------------------------------------------*/

Stat                     (. int type;
                            String name;
                            Obj obj;
                            int fix, fix2, loopstart; .)
= [ Ident<^name>         (. obj = TL.This(name); .)
    ( ":" "="            (. if (obj.kind != TL.vars) SemError(7); .)
      Expression<^type>
                         (. if (type != obj.type) SemError(5);
                            TC.Emit3(TC.STO, TL.curLevel-obj.level, obj.adr); .)
  |                      (. if (obj.kind != TL.procs) SemError(8);
                            TC.Emit3(TC.CALL, TL.curLevel-obj.level, obj.adr); .)
    )
  | "IF"
    Expression<^type>
                         (. if (type != TL.bool) SemError(6);
                            fix = TC.pc + 1; TC.Emit2(TC.FJMP, 0); .)
    "THEN" StatSeq
    [ "ELSE"             (. fix2 = TC.pc + 1; TC.Emit2(TC.JMP, 0);
                            TC.Fixup(fix); fix = fix2; .)
      StatSeq
    ]
    "END"                (. TC.Fixup(fix); .)
  | "WHILE"              (. loopstart = TC.pc; .)
    Expression<^type>
                         (. if (type != TL.bool) SemError(6);
                            fix = TC.pc + 1; TC.Emit2(TC.FJMP, 0); .)
    "DO" StatSeq         (. TC.Emit2(TC.JMP, loopstart); TC.Fixup(fix); .)
    "END"
  | "READ"
    Ident<^name>         (. obj = TL.This(name);
                            if (obj.type != TL.integer) SemError(4);
                            TC.Emit3(TC.READ, TL.curLevel-obj.level, obj.adr); .)
  | "WRITE"
    Expression<^type>
                         (. if (type != TL.integer) SemError(4);
                            TC.Emit(TC.WRITE); .)
  ].

/*----------------------------------------------------------------------------*/

Expression<^int type>    (. int type1, op; .)
= SimExpr<^type>
  [ RelOp<^op>
    SimExpr<^type1>      (. if (type != type1) SemError(5);
                            TC.Emit(op); type = TL.bool; .)
  ].

/*----------------------------------------------------------------------------*/

SimExpr<^int type>       (. int type1, op; .)
= Term<^type>
  { AddOp<^op>
    Term<^type1>         (. if (type != TL.integer || type1 != TL.integer) SemError(4);
                            TC.Emit(op); .)
  }.

/*----------------------------------------------------------------------------*/

Term<^int type>          (. int type1, op; .)
= Factor<^type>
  { MulOp<^op>
    Factor<^type1>       (. if (type != TL.integer || type1 != TL.integer) SemError(4);
                            TC.Emit(op); .)
  }.

/*----------------------------------------------------------------------------*/

Factor<^int type>        (. int val, n; Obj obj; String name; .)
=                        (. type = TL.undef; .)
  ( Ident<^name>         (. obj = TL.This(name); type = obj.type;
                            if (obj.kind == TL.vars)
                              TC.Emit3(TC.LOAD, TL.curLevel-obj.level, obj.adr);
                            else SemError(7); .)
  | "TRUE"               (. TC.Emit2(TC.LIT, 1); type = TL.bool; .)
  | "FALSE"              (. TC.Emit2(TC.LIT, 0); type = TL.bool; .)
  | number               (. n = Integer.parseInt(token.val);
                            TC.Emit2(TC.LIT, n); type = TL.integer; .)
  | "-"
    Factor<^type>        (. if (type != TL.integer) {SemError(4); type = TL.integer;}
                            TC.Emit(TC.NEG); .)
  ).

/*----------------------------------------------------------------------------*/

MulOp<^int op>
=                        (. op = -1; .)
  ( "*"                  (. op = TC.MUL; .)
  | "/"                  (. op = TC.DIVI; .)
  ).

/*----------------------------------------------------------------------------*/

AddOp<^int op>
=                        (. op = -1; .)
  ( "+"                  (. op = TC.ADD; .)
  | "-"                  (. op = TC.SUB; .)
  ).

/*----------------------------------------------------------------------------*/

RelOp<^int op>
=                        (. op = -1; .)
  ( "="                  (. op = TC.EQU; .)
  | "<"                  (. op = TC.LSS; .)
  | ">"                  (. op = TC.GTR; .)
  ).

END Taste.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美变态口味重另类| 99精品欧美一区二区三区小说 | 蜜桃视频在线一区| 欧美日韩电影在线播放| 午夜精品一区在线观看| 欧美一区二区三区不卡| 韩国v欧美v日本v亚洲v| 国产精品网曝门| 在线观看三级视频欧美| 青青草国产精品97视觉盛宴| 久久久久久久久久看片| 91在线一区二区| 视频在线观看一区| 久久一区二区视频| 91首页免费视频| 日精品一区二区| 久久午夜羞羞影院免费观看| 91丨九色丨国产丨porny| 天天色 色综合| 欧美激情一区在线| 色婷婷精品久久二区二区蜜臂av| 日韩精品91亚洲二区在线观看| 日韩免费一区二区| 9色porny自拍视频一区二区| 丝袜脚交一区二区| 国产精品三级电影| 欧美高清hd18日本| 风间由美性色一区二区三区| 亚洲妇熟xx妇色黄| 国产人成亚洲第一网站在线播放| 色视频成人在线观看免| 韩国一区二区在线观看| 亚洲卡通动漫在线| 欧美成人r级一区二区三区| 91在线精品秘密一区二区| 免费在线一区观看| 亚洲视频小说图片| 久久综合九色综合欧美就去吻| 色域天天综合网| 国产福利一区在线| 奇米一区二区三区av| 亚洲男人天堂一区| 国产亚洲精久久久久久| 在线播放亚洲一区| 91免费版pro下载短视频| 国产一区二区三区四区五区美女| 亚洲一区二区三区视频在线 | 国产人成一区二区三区影院| 欧美精品777| 欧美在线三级电影| 99热国产精品| 国产成人a级片| 精品制服美女久久| 亚洲国产欧美在线| 中文字幕一区二区三区视频| 26uuu亚洲综合色| 日韩一卡二卡三卡国产欧美| 欧美日韩国产首页| 欧美综合视频在线观看| 不卡一区二区三区四区| 国产综合成人久久大片91| 奇米影视一区二区三区| 丝瓜av网站精品一区二区| 亚洲国产aⅴ天堂久久| 亚洲自拍欧美精品| 中文字幕一区日韩精品欧美| 国产精品天美传媒| 中文字幕欧美三区| 国产农村妇女精品| 久久99国产精品免费网站| 欧美国产日韩在线观看| www精品美女久久久tv| 日韩精品一区二区三区蜜臀| 91精品国产一区二区三区| 欧美精品在线一区二区| 51精品秘密在线观看| 欧美高清www午色夜在线视频| 老司机精品视频线观看86| 国产色综合一区| 偷拍一区二区三区四区| 亚洲综合无码一区二区| 午夜精品福利一区二区三区av| 亚洲国产精品久久人人爱蜜臀| 亚洲国产cao| 六月丁香婷婷色狠狠久久| 另类人妖一区二区av| 国产一二三精品| 成人av网站免费观看| 99久久久国产精品免费蜜臀| 色爱区综合激月婷婷| 欧美日韩一区高清| 欧美一卡二卡三卡| 久久久久久久久久美女| 综合分类小说区另类春色亚洲小说欧美| 亚洲图片你懂的| 亚洲777理论| 国产精选一区二区三区| 99re这里只有精品首页| 在线视频一区二区免费| 制服丝袜亚洲精品中文字幕| 精品国产亚洲在线| 国产精品国产三级国产三级人妇 | 日本韩国欧美在线| 欧美一区二区在线免费观看| 国产日韩影视精品| 亚洲欧美激情在线| 日韩和欧美一区二区三区| 国产乱子伦一区二区三区国色天香| 国产成人精品在线看| 在线一区二区三区| wwwwxxxxx欧美| 亚洲综合在线第一页| 美女免费视频一区| 日本韩国欧美一区二区三区| 精品嫩草影院久久| 曰韩精品一区二区| 国产美女av一区二区三区| 色哟哟国产精品免费观看| 精品国产一区二区三区av性色| 亚洲免费观看高清完整| 精品综合久久久久久8888| 欧美最猛性xxxxx直播| 久久久久久久久久美女| 视频一区欧美精品| 成人免费三级在线| 欧美一级欧美一级在线播放| 国产精品国产a级| 蜜臀av亚洲一区中文字幕| 91日韩一区二区三区| 久久久久9999亚洲精品| 日韩精品一级中文字幕精品视频免费观看 | 午夜视频一区二区| 不卡欧美aaaaa| 日韩美一区二区三区| 亚洲激情图片小说视频| 国产精品一二三在| 6080亚洲精品一区二区| 亚洲日本一区二区| 成人午夜大片免费观看| 欧美成人精品3d动漫h| 亚洲一区二区欧美| 91视视频在线观看入口直接观看www| 精品少妇一区二区三区视频免付费 | 在线观看成人免费视频| 国产精品免费观看视频| 国产在线观看一区二区| 日韩一区二区三区在线视频| 亚洲国产精品一区二区久久恐怖片| 成人av影视在线观看| 国产欧美一区二区三区在线看蜜臀 | 捆绑调教一区二区三区| 欧美日韩一区二区三区免费看| 中文字幕一区二区三中文字幕 | 91蜜桃免费观看视频| 国产欧美一区视频| 国产福利一区二区| 久久综合视频网| 激情小说亚洲一区| 日韩精品一区二| 激情五月激情综合网| 日韩亚洲欧美中文三级| 日本在线观看不卡视频| 欧美挠脚心视频网站| 午夜欧美电影在线观看| 欧美美女网站色| 免费成人美女在线观看.| 911精品产国品一二三产区| 香蕉成人伊视频在线观看| 欧美日韩成人激情| 日本欧美在线观看| 精品国产不卡一区二区三区| 韩国一区二区视频| 国产欧美一区二区精品婷婷| 成人av综合在线| 亚洲色图都市小说| 欧美天堂亚洲电影院在线播放| 亚洲午夜日本在线观看| 欧美精品丝袜久久久中文字幕| 日韩精品午夜视频| 欧美成人性战久久| 国产激情91久久精品导航| 18涩涩午夜精品.www| 欧美性高清videossexo| 青青草国产精品97视觉盛宴| 亚洲精品一区二区三区福利 | 欧美老肥妇做.爰bbww| 日韩综合一区二区| 欧美精品一区二区不卡| 国产成a人亚洲| 亚洲影院久久精品| 精品久久久久久久久久久院品网 | 久久日韩粉嫩一区二区三区| 粉嫩av亚洲一区二区图片| 一区二区三区四区高清精品免费观看 | 精品欧美一区二区在线观看| 成人精品国产福利| 调教+趴+乳夹+国产+精品| 欧美精品一区二区三| av一二三不卡影片| 亚洲午夜国产一区99re久久|