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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tiny.y

?? C_MINUS 編譯器 源代碼 《便宜原理及實(shí)踐》附錄B
?? Y
字號:
/****************************************************/
/* File: tiny.y                                     */
/* The TINY Yacc/Bison specification file           */
/* Compiler Construction: Principles and Practice   */
/* Kenneth C. Louden                                */
/****************************************************/
%{
#define YYPARSER /* distinguishes Yacc output from other code files */

#include "globals.h"
#include "util.h"
#include "scan.h"
#include "parse.h"

#define YYSTYPE TreeNode *
static char * savedName; /* for use in assignments */
static int savedLineNo;  /* ditto */
static TreeNode * savedTree; /* stores syntax tree for later return */

%}

%token IF THEN ELSE END REPEAT UNTIL READ WRITE
%token ID NUM 
%token ASSIGN EQ LT PLUS MINUS TIMES OVER LPAREN RPAREN SEMI
%token ERROR 

%% /* Grammar for TINY */

program     : stmt_seq
                 { savedTree = $1;} 
            ;
stmt_seq    : stmt_seq SEMI stmt
                 { YYSTYPE t = $1;
                   if (t != NULL)
                   { while (t->sibling != NULL)
                        t = t->sibling;
                     t->sibling = $3;
                     $$ = $1; }
                     else $$ = $3;
                 }
            | stmt  { $$ = $1; }
            ;
stmt        : if_stmt { $$ = $1; }
            | repeat_stmt { $$ = $1; }
            | assign_stmt { $$ = $1; }
            | read_stmt { $$ = $1; }
            | write_stmt { $$ = $1; }
            | error  { $$ = NULL; }
            ;
if_stmt     : IF exp THEN stmt_seq END
                 { $$ = newStmtNode(IfK);
                   $$->child[0] = $2;
                   $$->child[1] = $4;
                 }
            | IF exp THEN stmt_seq ELSE stmt_seq END
                 { $$ = newStmtNode(IfK);
                   $$->child[0] = $2;
                   $$->child[1] = $4;
                   $$->child[2] = $6;
                 }
            ;
repeat_stmt : REPEAT stmt_seq UNTIL exp
                 { $$ = newStmtNode(RepeatK);
                   $$->child[0] = $2;
                   $$->child[1] = $4;
                 }
            ;
assign_stmt : ID { savedName = copyString(tokenString);
                   savedLineNo = lineno; }
              ASSIGN exp
                 { $$ = newStmtNode(AssignK);
                   $$->child[0] = $4;
                   $$->attr.name = savedName;
                   $$->lineno = savedLineNo;
                 }
            ;
read_stmt   : READ ID
                 { $$ = newStmtNode(ReadK);
                   $$->attr.name =
                     copyString(tokenString);
                 }
            ;
write_stmt  : WRITE exp
                 { $$ = newStmtNode(WriteK);
                   $$->child[0] = $2;
                 }
            ;
exp         : simple_exp LT simple_exp 
                 { $$ = newExpNode(OpK);
                   $$->child[0] = $1;
                   $$->child[1] = $3;
                   $$->attr.op = LT;
                 }
            | simple_exp EQ simple_exp
                 { $$ = newExpNode(OpK);
                   $$->child[0] = $1;
                   $$->child[1] = $3;
                   $$->attr.op = EQ;
                 }
            | simple_exp { $$ = $1; }
            ;
simple_exp  : simple_exp PLUS term 
                 { $$ = newExpNode(OpK);
                   $$->child[0] = $1;
                   $$->child[1] = $3;
                   $$->attr.op = PLUS;
                 }
            | simple_exp MINUS term
                 { $$ = newExpNode(OpK);
                   $$->child[0] = $1;
                   $$->child[1] = $3;
                   $$->attr.op = MINUS;
                 } 
            | term { $$ = $1; }
            ;
term        : term TIMES factor 
                 { $$ = newExpNode(OpK);
                   $$->child[0] = $1;
                   $$->child[1] = $3;
                   $$->attr.op = TIMES;
                 }
            | term OVER factor
                 { $$ = newExpNode(OpK);
                   $$->child[0] = $1;
                   $$->child[1] = $3;
                   $$->attr.op = OVER;
                 }
            | factor { $$ = $1; }
            ;
factor      : LPAREN exp RPAREN
                 { $$ = $2; }
            | NUM
                 { $$ = newExpNode(ConstK);
                   $$->attr.val = atoi(tokenString);
                 }
            | ID { $$ = newExpNode(IdK);
                   $$->attr.name =
                         copyString(tokenString);
                 }
            | error { $$ = NULL; }
            ;

%%

int yyerror(char * message)
{ fprintf(listing,"Syntax error at line %d: %s\n",lineno,message);
  fprintf(listing,"Current token: ");
  printToken(yychar,tokenString);
  Error = TRUE;
  return 0;
}

/* yylex calls getToken to make Yacc/Bison output
 * compatible with ealier versions of the TINY scanner
 */
static int yylex(void)
{ return getToken(); }

TreeNode * parse(void)
{ yyparse();
  return savedTree;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品久久久蜜桃| 亚洲成人一区二区| 欧美蜜桃一区二区三区| 激情综合网av| 亚洲国产精品综合小说图片区| 久久综合九色综合久久久精品综合 | av资源网一区| 黑人精品欧美一区二区蜜桃| 亚洲电影视频在线| 国产精品高清亚洲| 国产亚洲欧美激情| 日韩免费观看2025年上映的电影| 91精品福利视频| 大胆欧美人体老妇| 国内成人免费视频| 蜜桃久久久久久久| 香蕉加勒比综合久久| 亚洲欧美日韩人成在线播放| 精品福利在线导航| 91精品福利在线一区二区三区| 91视频一区二区三区| 国产·精品毛片| 国产精品18久久久久久久网站| 麻豆一区二区三| 日韩电影网1区2区| 亚洲成av人片一区二区| 亚洲精品乱码久久久久久黑人 | 丁香婷婷综合色啪| 国产高清视频一区| 国产精品亚洲综合一区在线观看| 久久99这里只有精品| 琪琪久久久久日韩精品| 奇米色一区二区三区四区| 亚洲第一在线综合网站| 亚洲无线码一区二区三区| 亚洲综合精品久久| 亚洲高清免费视频| 亚洲风情在线资源站| 亚洲成人高清在线| 亚洲国产精品欧美一二99 | 激情成人午夜视频| 久久精品国产澳门| 久草中文综合在线| 国产在线视视频有精品| 国产在线视视频有精品| 国产成人一区二区精品非洲| 国产精品一品视频| 丁香激情综合国产| 99视频精品全部免费在线| 91在线精品一区二区三区| 91在线一区二区三区| 91成人在线观看喷潮| 欧美揉bbbbb揉bbbbb| 欧美精品一卡二卡| 日韩欧美的一区二区| 2024国产精品| 1区2区3区精品视频| 亚洲最大成人综合| 日韩av电影免费观看高清完整版在线观看| 日韩黄色免费电影| 国产一区二区精品久久99| 国产成人超碰人人澡人人澡| 91一区一区三区| 欧美乱熟臀69xxxxxx| 亚洲精品在线观看网站| 日本一区二区三区视频视频| 亚洲女人小视频在线观看| 亚洲在线视频免费观看| 另类专区欧美蜜桃臀第一页| 国产高清一区日本| 日本道精品一区二区三区| 欧美一区二区私人影院日本| 久久久av毛片精品| 一区二区三区中文字幕电影| 日韩av不卡一区二区| 成人免费看视频| 欧美日免费三级在线| 久久久国产综合精品女国产盗摄| 一区二区三区国产精品| 极品少妇xxxx精品少妇偷拍| 91亚洲大成网污www| 欧美一区二区三区四区视频| 国产精品乱码一区二三区小蝌蚪| 亚洲国产中文字幕在线视频综合| 国产一区二区按摩在线观看| 欧美图区在线视频| 久久久精品欧美丰满| 亚洲国产成人91porn| 国产精品一区二区你懂的| 欧美日韩在线直播| 国产精品午夜久久| 裸体歌舞表演一区二区| 91激情在线视频| 精品不卡在线视频| 亚洲国产你懂的| av一区二区三区| 2023国产精华国产精品| 亚洲一区二区高清| 成人黄色在线网站| 日韩欧美国产精品| 亚洲成人tv网| 99国产精品久| 欧美激情一区二区三区在线| 蜜臀av性久久久久蜜臀av麻豆| 色屁屁一区二区| 国产免费久久精品| 黑人巨大精品欧美黑白配亚洲| 欧美日韩一区精品| 国产精品成人一区二区艾草| 久久99国产精品尤物| 欧美欧美欧美欧美| 一区二区三区精品| 91社区在线播放| 亚洲国产精品t66y| 国产美女在线观看一区| 日韩精品一区二区三区视频播放| 一区二区三区精品在线| 粉嫩一区二区三区性色av| 日韩欧美在线综合网| 亚洲电影视频在线| 在线视频一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 成人黄动漫网站免费app| 久久久精品2019中文字幕之3| 久久精品国产亚洲高清剧情介绍| 欧美精品粉嫩高潮一区二区| 亚洲国产成人精品视频| 欧美影院精品一区| 亚洲国产综合91精品麻豆| 欧美综合天天夜夜久久| 亚洲精品国产一区二区三区四区在线| 成人激情av网| 成人欧美一区二区三区白人 | 日韩精品视频网| 67194成人在线观看| 丝瓜av网站精品一区二区| 欧美日韩二区三区| 天天操天天色综合| 555夜色666亚洲国产免| 日本伊人午夜精品| 日韩欧美的一区| 国产精品白丝av| 亚洲欧美自拍偷拍| 欧美亚洲综合色| 日本亚洲视频在线| 日韩欧美精品在线视频| 国产在线播放一区二区三区| 国产日韩欧美高清| 91美女片黄在线观看| 亚洲免费观看高清完整版在线观看 | 亚洲444eee在线观看| 3atv在线一区二区三区| 久久成人麻豆午夜电影| 久久久www成人免费无遮挡大片| 高清shemale亚洲人妖| 亚洲欧洲日韩女同| 欧美日韩在线播放三区| 麻豆精品在线播放| 国产欧美精品一区二区色综合| av男人天堂一区| 亚洲线精品一区二区三区| 日韩一卡二卡三卡| 风间由美中文字幕在线看视频国产欧美| 国产精品另类一区| 在线观看亚洲a| 久久99精品国产麻豆婷婷| 欧美激情自拍偷拍| 色菇凉天天综合网| 免费在线观看成人| 国产精品午夜春色av| 欧美日韩三级一区二区| 激情六月婷婷久久| 亚洲免费在线视频| 欧美videos大乳护士334| 成人v精品蜜桃久久一区| 亚洲成人资源网| 久久在线观看免费| 91国偷自产一区二区三区成为亚洲经典| 日本欧美一区二区| 中文字幕在线一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 国产一区二区视频在线播放| 夜夜精品浪潮av一区二区三区| 欧美变态口味重另类| 色综合天天综合色综合av | 亚洲第一成人在线| 国产欧美一区二区三区鸳鸯浴 | 成人av免费在线观看| 视频在线观看一区| ●精品国产综合乱码久久久久| 欧美一区二区三区人| 91蜜桃在线免费视频| 精久久久久久久久久久| 午夜欧美大尺度福利影院在线看 | 亚洲第一会所有码转帖| 久久久久久久久蜜桃| 欧美精品久久久久久久久老牛影院| 粉嫩av一区二区三区在线播放| 免费日韩伦理电影| 亚洲一区av在线|