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

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

?? 復件 parse.y

?? 完成一個簡化的C語言編譯程序
?? Y
?? 第 1 頁 / 共 2 頁
字號:
%{
#include "stdlib.h"
#include "globals.h"
#include "util.h"
#include "scaner.h"
#include "parser.h"   
#define YYSTYPE TreeNode* 
static char* savedName;
static int savedLineNo;
static TreeNode* savedTree; 
static ExpType current_type;
int   array_size;
char* current_name;
%}
  
%token INT CHAR FLOAT VOID
%token NUM FLOATNUM CONSTCHAR
%token ID
%token IF ELSE WHILE BREAK RETURN
%token LBRACKET RBRACKET LPAREN RPAREN LBC RBC SEMI COMMA
%token ASSIGN EQ LT LE GT GE NE 
%token AND OR NOT
%token PLUS MINUS TIMES OVER 
%token ERROR   


%%

program  :   declaration_list
             { savedTree=$1;}
             ;
             
declaration_list  : declaration_list declaration
                    {
                      YYSTYPE t=$1;
                      if(t!=NULL)
                      {
                         while(t->sibling!=NULL)
                               t=t->sibling;
                         t->sibling=$2;
                         $$=$1;      
                      }
                      else 
                          $$=$2;                  
                    }
                   | declaration {$$=$1;}
                   ;
                    
declaration  : var_declaration
              {$$=$1;}
             | fun_declaration
              {$$=$1;}
             ;
             
var_declaration : type_specifier id SEMI
                {
                 $$=newDeclNode(SingleVarK);
                 $$->type=current_type;
                 $$->attr.name=$2->attr.name;
                }  
                | type_specifier id LBRACKET NUM 
                {array_size=atoi(tokenString);} RBRACKET SEMI
                {
                 $$ = newDeclNode(ArrayVarK);
                 $$->type=current_type;
                 $$->attr.name=$2->attr.name;
                 $$->array_size=array_size;
                } 
                ;      
                    
type_specifier  : INT
                 {current_type=Integer;} 
                 |CHAR
                 {current_type=Char;}
                 |FLOAT
                 {current_type=Float;}
                 |VOID
                 {current_type=Void;} 
                 ;

id              : ID
                 {
				  $$=newExpNode(IdK);
				  $$->attr.name=copyString(tokenString);
				 }
				 ;

fun_declaration : type_specifier id LPAREN params RPAREN compound_stmt
                { 
                  $$=newDeclNode(FuncVarK);
                  $$->type=current_type;
                  $$->attr.name=$2->attr.name;
                  $$->child[0]=$4;
                  $$->child[1]=$6;
                  
                } 
                ;
                
params          : param_list
                {$$=$1;}
                |VOID
                {$$=NULL;}
                |
                ;
                
param_list      :param_list COMMA param
                 {
                   YYSTYPE t=$1;
                   if(t!=NULL)
                   {
                        while(t->sibling!=NULL)
                          t=t->sibling;
                        t->sibling=$3;
                        $$=$1;
                   }
                   else
                         $$=$3;
                 }
                 |param
                 {$$=$1;} 
                 ;

param             : type_specifier id
                  {
                  $$=newDeclNode(SingleVarK);
                  $$->attr.name=$2->attr.name;
                  $$->type=current_type;
                  } 
                  | type_specifier id LBRACKET RBRACKET 
                  {
                  $$=newDeclNode(ArrayVarK);
                  $$->attr.name=$2->attr.name;
                  $$->type=current_type;
                  $$->array_size=0;
                  }
                  ; 
                  
compound_stmt       : LBC local_declarations RBC
                      {
                        $$ = newStmtNode(CompoundK);
                        $$->child[0] = $2;
                      }
                    | LBC local_declarations statement_list RBC
                      {
                        YYSTYPE t = $2;
                        if (t != NULL)
                        { 
                          while (t->sibling != NULL)
                            t = t->sibling;
                          t->sibling = $3;
                          $$ = newStmtNode(CompoundK);
                          $$->child[0] = $2;
                        }
                        else 
                        {
                          $$ = newStmtNode(CompoundK);
                          $$->child[0] = $3;
                        }
                      }
                    | LBC RBC
                      {
                        $$ = NULL;
                      }
                    | LBC statement_list RBC
                      {
                        $$ = newStmtNode(CompoundK);
                        $$->child[0] = $2;
                      }
                    ;
                  
local_declarations : local_declarations var_declaration
                      { 
                        YYSTYPE t = $1;
                        if (t != NULL)
                        { 
                          while (t->sibling != NULL)
                            t = t->sibling;
                          t->sibling = $2;
                          $$ = $1; 
                        }
                        else 
                          $$ = $2;
                      }
                    | var_declaration
                      { $$ = $1; }
                    ;

statement_list      : statement_list statement
                      { 
                        YYSTYPE t = $1;
                        if (t != NULL)
                        { 
                          while (t->sibling != NULL)
                            t = t->sibling;
                          t->sibling = $2;
                          $$ = $1; 
                        }
                        else 
                          $$ = $2;
                      }
                    | statement
                      { $$ = $1; }
                    ;
                  
statement         : expression_stmt
                  {
                    $$=$1;
                  }
                  |compound_stmt
                  {
                    $$=$1;
                  }
                  |if_stmt
                  {
                    $$=$1;
                  }
                  |while_stmt
                  {
                    $$=$1;
                  }              
                  |return_stmt
                  {
                    $$=$1;
                  }
                  |assign_stmt
                  {
                    $$=$1;
                  }
                  |break_stmt
                  {
                    $$=$1;
                  }  
                  ;

expression_stmt    : expression SEMI
                  {
                      $$=newStmtNode(ExpStmtK);
                      $$->child[0]=$1;
                  }
                  |SEMI
                  ;
                  
if_stmt            : IF LPAREN expression  RPAREN statement SEMI
                   {
                      $$=newStmtNode(IfK);
                      $$->child[0]=$3;
                      $$->child[1]=$5;
                      $$->child[2]=NULL;                     
                   }
                   | IF LPAREN expression RPAREN statement ELSE statement SEMI
                   {
                      $$=newStmtNode(IfK);
                      $$->child[0]=$3;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱国产乱300精品| 粗大黑人巨茎大战欧美成人| 久久精品国产精品亚洲综合| 国产不卡在线播放| 欧美日韩午夜精品| 亚洲欧美日韩国产手机在线| 国产曰批免费观看久久久| 91久久国产综合久久| 中文字幕va一区二区三区| 午夜电影一区二区三区| 99免费精品视频| 国产亚洲欧美色| 美女视频网站黄色亚洲| 欧美亚洲国产一区二区三区| 中文字幕av一区二区三区| 久久97超碰国产精品超碰| 欧美日韩一区二区欧美激情| 亚洲欧美日韩国产一区二区三区| 国产成人av一区二区三区在线| 日韩一级在线观看| 午夜精品一区二区三区免费视频| 色呦呦网站一区| 国产精品夫妻自拍| 99这里只有精品| 国产精品污污网站在线观看| 国产九九视频一区二区三区| 久久综合九色欧美综合狠狠| 久久精品国产精品青草| 欧美xxxxxxxx| 精品一区二区三区视频| 精品日本一线二线三线不卡| 日本伊人精品一区二区三区观看方式| 欧美区一区二区三区| 亚洲成人av在线电影| 欧美日韩一二区| 午夜久久久影院| 91精品综合久久久久久| 日韩av一级电影| 91精品婷婷国产综合久久竹菊| 午夜免费欧美电影| 欧美一级在线视频| 精品一二三四区| 精品国产1区二区| 国产伦精品一区二区三区免费迷| 2021中文字幕一区亚洲| 国产高清一区日本| 亚洲欧美自拍偷拍色图| 欧美午夜电影网| 日韩高清电影一区| 久久久精品黄色| 99riav一区二区三区| 亚洲综合久久久| 欧美精品一二三区| 国产自产2019最新不卡| 国产精品久久久久毛片软件| 欧美网站一区二区| 九九视频精品免费| 国产女人18水真多18精品一级做| 色综合网色综合| 蜜臀av一级做a爰片久久| 2023国产精品视频| 色综合视频在线观看| 青青草原综合久久大伊人精品 | 亚洲精品ww久久久久久p站| 欧洲一区二区三区在线| 久久99精品国产| 亚洲人成人一区二区在线观看| 欧美精品乱人伦久久久久久| 国产精品综合一区二区| 一区二区三区精品在线| 欧美精品一区二| 欧美在线观看视频在线| 国产中文字幕精品| 亚洲午夜视频在线观看| 久久免费国产精品| 欧美三级韩国三级日本一级| 国产精品一区一区三区| 午夜精品一区在线观看| 中文字幕欧美一| 日韩精品一区二| 色94色欧美sute亚洲线路二| 国产一区中文字幕| 亚洲国产成人tv| 亚洲视频在线一区观看| 久久天堂av综合合色蜜桃网 | 国产一区二区三区av电影| 亚洲影视在线观看| 国产日韩精品久久久| 日韩欧美中文字幕一区| 欧美三区免费完整视频在线观看| 国产91精品欧美| 国内精品国产三级国产a久久 | √…a在线天堂一区| 日韩欧美不卡在线观看视频| 欧美性色黄大片手机版| 99精品久久久久久| 懂色av一区二区三区蜜臀| 美女免费视频一区二区| 亚洲午夜在线电影| 亚洲欧美另类在线| 国产精品乱人伦中文| 国产日韩欧美高清在线| 久久亚洲私人国产精品va媚药| 911精品国产一区二区在线| 91麻豆精品在线观看| 成人av免费在线播放| 国内精品不卡在线| 九色综合国产一区二区三区| 美女视频网站黄色亚洲| 日韩vs国产vs欧美| 蜜桃一区二区三区在线| 美女在线观看视频一区二区| 日韩电影免费一区| 男人的天堂亚洲一区| 免费在线观看不卡| 老司机精品视频一区二区三区| 久久精品国产亚洲a| 国产一区二区三区四| 国产乱码精品一区二区三区五月婷 | 亚洲成av人片| 丝瓜av网站精品一区二区| 日韩福利视频导航| 理论片日本一区| 国产一区二区免费看| 国产99久久久国产精品| 99久久婷婷国产| 欧美性欧美巨大黑白大战| 精品视频1区2区3区| 欧美精品日韩一本| 欧美mv日韩mv| 亚洲国产高清在线观看视频| 国产精品美女www爽爽爽| 亚洲另类一区二区| 午夜精品福利一区二区三区蜜桃| 日本vs亚洲vs韩国一区三区二区| 精品亚洲国内自在自线福利| 国产伦精品一区二区三区免费迷 | 视频一区二区三区中文字幕| 日本vs亚洲vs韩国一区三区| 国产一区二区三区免费在线观看| 国产大陆亚洲精品国产| 日本韩国欧美一区二区三区| 欧美精品免费视频| 国产欧美视频一区二区| 亚洲激情校园春色| 理论电影国产精品| 91年精品国产| 久久众筹精品私拍模特| 亚洲精品欧美综合四区| 男女性色大片免费观看一区二区| 国产精品911| 欧美肥妇毛茸茸| 国产拍揄自揄精品视频麻豆| 一区2区3区在线看| 韩国视频一区二区| 欧美视频一区在线| 国产女人aaa级久久久级| 亚洲一级不卡视频| 国产麻豆视频一区二区| 欧美日韩免费高清一区色橹橹| 精品国产一区二区亚洲人成毛片| 中文字幕一区二区三区四区不卡 | 91精品国产欧美一区二区18 | 久久久777精品电影网影网| 一区二区三区中文字幕精品精品| 精品一区二区在线看| 欧美在线视频你懂得| 国产色91在线| 另类人妖一区二区av| 欧美日韩视频在线第一区| 欧美激情在线一区二区| 久久精品国产999大香线蕉| 一本一本久久a久久精品综合麻豆| 欧美mv日韩mv| 日韩福利视频导航| 色狠狠色狠狠综合| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲国产成人高清精品| 97se亚洲国产综合自在线| 欧美精品一区二区三区蜜臀| 午夜视频久久久久久| 91国产福利在线| 综合色中文字幕| www.成人在线| 欧美精彩视频一区二区三区| 欧美aaaaaa午夜精品| 7777精品伊人久久久大香线蕉经典版下载| 国产精品久久久久久久浪潮网站| 经典三级视频一区| 日韩午夜激情视频| 日日夜夜免费精品| 666欧美在线视频| 午夜视黄欧洲亚洲| 欧美精品丝袜中出| 亚洲18色成人| 欧美理论片在线| 丝袜美腿高跟呻吟高潮一区| 欧美老人xxxx18| 人人精品人人爱| 日韩欧美成人午夜|