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

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

?? tiny.y

?? C語言高級實例解析的配套光盤資料
?? 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;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香网亚洲国际| 亚洲一区二区三区四区五区黄 | 成人av电影在线| 精品一区二区免费| 久久精品国产久精国产| 蜜桃视频第一区免费观看| 欧美aaaaa成人免费观看视频| 亚洲国产视频一区二区| 亚洲第四色夜色| 日韩二区在线观看| 久久99精品一区二区三区| 精品一区二区三区免费毛片爱| 男人的j进女人的j一区| 久草这里只有精品视频| 国产成人超碰人人澡人人澡| 成人一区在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 不卡的av电影| 欧美性色aⅴ视频一区日韩精品| 色哟哟日韩精品| 91精品在线免费观看| 精品国产第一区二区三区观看体验 | 麻豆精品一区二区av白丝在线| 毛片不卡一区二区| 成人免费看视频| 欧美日韩中文字幕一区二区| 91精品国产色综合久久ai换脸 | 欧美mv日韩mv国产| 中文字幕乱码一区二区免费| 18涩涩午夜精品.www| 亚洲综合在线第一页| 九色综合狠狠综合久久| 成人国产在线观看| 制服丝袜亚洲精品中文字幕| 久久亚洲精品国产精品紫薇| 一区二区三区四区不卡视频| 日本aⅴ亚洲精品中文乱码| 国产传媒一区在线| 欧美艳星brazzers| 国产片一区二区| 午夜欧美一区二区三区在线播放 | 久久亚洲精精品中文字幕早川悠里| 国产精品久久久久久久久图文区| 亚洲第一久久影院| 岛国av在线一区| 日韩一区二区三区电影在线观看 | 亚洲视频在线观看一区| 婷婷久久综合九色综合伊人色| 国产乱理伦片在线观看夜一区| 欧洲精品在线观看| 国产婷婷精品av在线| 日韩精品高清不卡| 在线国产亚洲欧美| 中文字幕欧美一| 国产精品资源在线| 日韩一区和二区| 亚洲电影第三页| 色av成人天堂桃色av| 欧美激情一区二区在线| 美美哒免费高清在线观看视频一区二区 | 亚洲国产你懂的| 波多野结衣的一区二区三区| 精品国产青草久久久久福利| 亚洲成人自拍网| 欧美伊人久久久久久午夜久久久久| 国产欧美日韩在线看| 国产一二精品视频| 欧美sm极限捆绑bd| 黄色日韩三级电影| 26uuu亚洲| 国产在线播放一区二区三区| 日韩视频一区二区三区在线播放| 亚洲一区二区三区在线看| 91美女视频网站| 夜夜精品浪潮av一区二区三区| 99九九99九九九视频精品| 久久久精品一品道一区| 国产乱子轮精品视频| 久久久久久久一区| 国产69精品久久99不卡| 中文字幕欧美日本乱码一线二线| 成人sese在线| 中文字幕日韩一区| 在线观看视频一区二区| 洋洋av久久久久久久一区| 色久综合一二码| 亚洲电影一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲小说春色综合另类电影| 欧洲人成人精品| 日韩电影免费一区| 久久久综合视频| av中文字幕不卡| 亚洲高清不卡在线| 欧美精品一区二区三区一线天视频 | 国产伦精一区二区三区| 久久美女高清视频| 色哟哟一区二区在线观看| 亚洲成人一区二区| 亚洲精品在线免费观看视频| 国产99久久精品| 一区二区三区欧美视频| 91麻豆精品91久久久久久清纯| 国产在线视视频有精品| 中文字幕在线一区| 91超碰这里只有精品国产| 国产一区二区美女诱惑| 亚洲丝袜另类动漫二区| 欧美成人video| 99久久精品免费看国产免费软件| 亚洲gay无套男同| 国产日韩欧美一区二区三区乱码| 色久综合一二码| 狠狠色丁香婷综合久久| 一区二区三区精密机械公司| 欧美成人猛片aaaaaaa| 99re这里只有精品视频首页| 免费的国产精品| 一区二区三区在线免费观看| 日韩欧美三级在线| 色天天综合色天天久久| 国产一区二区三区不卡在线观看| 亚洲区小说区图片区qvod| 欧美成人在线直播| 欧美日韩在线观看一区二区 | 秋霞电影网一区二区| 中文字幕亚洲欧美在线不卡| 欧美电视剧免费观看| 欧美视频三区在线播放| www.欧美.com| 国产盗摄一区二区三区| 五月综合激情网| 一区二区三区国产豹纹内裤在线| 国产亲近乱来精品视频| 欧美不卡一区二区三区四区| 欧美午夜精品久久久久久超碰 | 亚洲国产一区在线观看| 亚洲国产精品国自产拍av| 日韩欧美中文字幕制服| 欧美日本免费一区二区三区| 91色乱码一区二区三区| 成人avav在线| 不卡一区在线观看| 成人妖精视频yjsp地址| 国产精品一区专区| 国产一区三区三区| 精品在线播放免费| 精品一区二区三区在线观看国产| 日韩精品一二三| 偷窥少妇高潮呻吟av久久免费 | 4438x成人网最大色成网站| 91电影在线观看| 在线一区二区三区做爰视频网站| 99久久99久久综合| eeuss鲁片一区二区三区在线看| 国产成人午夜视频| 东方aⅴ免费观看久久av| 国产成人8x视频一区二区 | 亚洲综合自拍偷拍| 亚洲一二三四区| 性做久久久久久久免费看| 视频一区在线播放| 男女男精品视频| 国产乱一区二区| av在线综合网| 欧美日韩一区二区三区不卡| 91麻豆精品国产自产在线| 日韩三级中文字幕| 国产欧美日韩不卡免费| 国产精品美女久久福利网站| 中文字幕一区二区三区蜜月| 亚洲柠檬福利资源导航| 亚洲国产成人porn| 紧缚捆绑精品一区二区| 成人高清伦理免费影院在线观看| 91香蕉视频污在线| 欧美日韩亚洲综合| 精品欧美一区二区在线观看| 国产日产欧产精品推荐色| 亚洲精品国产一区二区精华液| 亚洲第一综合色| 国产jizzjizz一区二区| 欧美在线一区二区| 日韩理论电影院| 青青青伊人色综合久久| 成人午夜视频免费看| 欧美性受xxxx黑人xyx性爽| 精品国产区一区| 一区二区在线观看免费视频播放| 日韩精品国产精品| 99riav久久精品riav| 日韩美女一区二区三区四区| 国产精品免费丝袜| 美女视频黄 久久| 99久久精品久久久久久清纯| 日韩小视频在线观看专区| 国产欧美综合在线观看第十页| 亚洲风情在线资源站| 成人ar影院免费观看视频| 欧美成人官网二区|