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

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

?? expr.c

?? Outputs messages to a 2line LCD
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/* File expr.c: 2.2 (83/06/21,11:24:26) */
/*% cc -O -c %
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "defs.h"
#include "data.h"
#include "headers.h"


static int heir1a(STATE *stpt);
static int heir1b(STATE *stpt);
static int heir1c(STATE *stpt);
static int heir2(STATE *stpt);
static int heir3(STATE *stpt);
static int heir4(STATE *stpt);
static int heir5(STATE *stpt);
static int heir6(STATE *stpt);
static int heir7(STATE *stpt);
static int heir8(STATE *stpt);
static int heir9(STATE *stpt);
static int heir11(STATE *stpt);
static void Check2Cast(STATE *st1pt, STATE *st2pt);
static void EvalRight(int (*eval)(), STATE *st1pt, STATE *st2pt);
static int GetStructItem(STATE *stpt, char *sname, int *t);
static int doIndexes(STATE *stpt);


/*
 * stpt->ptr   - symbol table address, else 0 for constant
 * stpt->type  - type indirect object to fetch, else 0 for static object
 * stpt->type2 - type pointer or array, else 0
 */

void expression(int comma) {
   STATE state;

	TheCast = 0;
	JustNumber = 0;
//   IncPending = DecPending = 0;
   TheType = CCHAR;			// assume will be CHAR
   state.cast = 0;   		// initially no casts
   state.pointing = 0;  	// or pointing
   NegFlag = 0;
   do {
      if (heir1(&state)) {
      	if (Returning && state.type != symtab[Returning].type)
         	state.cast = symtab[Returning].type;
         if (state.ident) {
         	rvalue(&state);
            }
         }
//      else {
//      	if (Returning)
//         	rvalue(&state);
//         }
      if (state.cast || Returning)
         Check1Cast(&state);
      if (!comma)
         return;
      } while (match(",") || testmatch("("));
}


int heir1(STATE *stpt) {
   STATE state2;
   int k, type, lhsptr;
   char fc;
//	int tstk;

   k = heir1a(stpt);    // evaluate left hand side
   state2.cast = state2.pointing = 0;
  	osymptr = lhsptr = stpt->ptr;
   Loaded = 0;
   if (match("=")) {    // if this is an equate
      if (k == 0) {
         needlval();
         return (0);
         }
      Indexing = FALSE;
   	rhs = 1;
   	Emitting = StructureOffset = 0;
      CINTpushPending = FALSE;
     	if (stkptr == 0 && stpt->storage != REGISTER) {
         gpush(CINT);
//         	tstk = stkptr;
//         	stkptr = 0;
       	}
//24/8      if (stpt->storage == REGISTER && stpt->pointing)
//24/8      	gpush(CINT);
      if (stpt->ident == POINTER)
      	symtab[stpt->ptr].reg &= ~CONSTANT;
      if (heir1(&state2)) {
         if (rhs && symtab[lhsptr].ident == POINTER && state2.ident == POINTER && !state2.pointing)
            symtab[lhsptr].pntrpntr = 1;
         rhs = 1;
         if (state2.ptr) {
//            if (state2.pointing && symtab[state2.ptr].pntrpntr) {
//               state2.pointing = 0;
//               rvalue(&state2);
//               state2.pointing = 1;
//               }
//            if (state2.storage != AUTO && !state2.pointing && !stpt->pointing && (stpt->ident == POINTER))
//               LoadBase(&state2);
//            else
				if (stkptr || !(stpt->ident == POINTER && !stpt->pointing)) {
            	rvalue(&state2);                 // evaluate right hand side
               }
            }
         }
      Check2Cast(stpt, &state2);
      if (stpt->pointing || stpt->storage != REGISTER) {
         if (state2.ident == 0)
            stpt->ident = 0;
         if (symtab[stpt->ptr].reg & CONSTANT)
            stpt->ident = POINTER;
//         stkptr = tstk;
        	if (stpt->ident == 0 && stpt->type == CLONG && ItemWasZero) {
	     		long_immed();
     			outstr("0\n");
            }
        	putstk(stpt, RHSisPntr);
         }
      else
         store(stpt);                        // store result
      return (0);
      } 
   else {
      fc = ch();
      if (  match("-=") ||
            match("+=") ||
            match("*=") ||
            match("/=") ||
            match("%=") ||
            match(">>=") ||
            match("<<=") ||
            match("&=") ||
            match("^=") ||
            match("|=")) {
         if (k == 0) {
            needlval();
            return (0);
            }
         Emitting = 0;
         if (stpt->storage != REGISTER) {
         	if (stpt->storage == AUTO) {
            	gpush(CINT);
               if (!PointerFlag)
               	InX = 1;
               }
           	}
     		rvalue(stpt);
        	gpush(stpt->type);
         type = stpt->type;
         if (heir1(&state2))
            rvalue(&state2);
         switch (fc) {
            case '-':
               gsub(type);
               break;
            case '+':
               gadd(type);
               break;
            case '*':
               gmult(type);
               InX = 0;
               break;
            case '/':
               gdiv(type);
               InX = 0;
               break;
            case '%':
               gmod(type);
               InX = 0;
               break;
            case '>':
               gasr(type);
               break;
            case '<':
               gasl(type);
               break;
            case '&':
               gand(type);
               break;
            case '^':
               gxor(type);
               break;
            case '|':
               gor(type);
               break;
            }
         Check2Cast(stpt, &state2);
         stpt->pointing = 1;
         store(stpt);
         return (0);
         } 
      else
         return (k);
      }
}


static int heir1a(STATE *stpt) {
   int k, lab1, lab2;
   STATE state2;

   k = heir1b(stpt);
   state2.cast = state2.pointing = 0;
   blanks();
   if (ch() != '?')
      return (k);
   if (k)
      rvalue(stpt);
   while (1) {
      if (match("?")) {
         testjump(lab1 = getlabel(), FALSE, stpt->type);
         EvalRight(heir1b, stpt, &state2);
         jump(lab2 = getlabel());
         printlabel(lab1);
         col();
         nl();
         blanks();
         if (!match(":")) {
            error("missing colon");
            return (0);
            }
         state2.cast = 0;
         if (heir1b(&state2)) {
            Check2Cast(stpt, &state2);
            rvalue(&state2);
            }
         printlabel(lab2);
         col();
         nl();
         } 
      else
         return (0);
      }
}


static int heir1b(STATE *stpt) {
   int k, lab;
   STATE state2;

   k = heir1c(stpt);
   state2.cast = state2.pointing = 0;
   blanks();
   if (!sstreq("||"))
      return (k);
   if (k)
      rvalue(stpt);
   while (1) {
      if (match("||")) {
         testjump(lab = getlabel(), TRUE, stpt->type);
         EvalRight(heir1c, stpt, &state2);
//         printlabel(lab);
//         col();
//         nl();
//         gbool(stpt->type);
         } 
      else
         return (0);
      }
}


static int heir1c(STATE *stpt) {
   int k;
   STATE state2;

   k = heir2(stpt);
   state2.cast = state2.pointing = 0;
   blanks();
   if (!sstreq("&&"))
      return (k);
   if (k)
      rvalue(stpt);
   while (1) {
      if (match("&&")) {
//         testjump(lab = getlabel(), FALSE, stpt->type);
			if (JumpPending) {
         	// if the previous item was a test, it will have written
            // a branch if true, with the false jump still to come.
            // The occurence of a && means any previous false answer
            // immediately satisfies the no case, and the jump can be to
            // the exit
				ot("rjmp\t");
				printlabel(JumpOutLabel);
				nl();
            JumpPending = 0;
            }
         else {
         	// Else we need to test the previous result
         	testjump(JumpOutLabel, FALSE, stpt->type);
				ot("rjmp\t");
				printlabel(JumpOutLabel);
				nl();
            }
       	EvalRight(heir2, stpt, &state2);
//            }
//         printlabel(lab);
//         col();
//         nl();
//         gbool(stpt->type);
         } 
      else
         return (0);
      }
}


static int heir2(STATE *stpt) {
   int k;
   STATE state2;

   k = heir3(stpt);
   state2.cast = state2.pointing = 0;
   blanks();
   if ((ch() != '|') | (nch() == '|') | (nch() == '='))
      return (k);
   if (k)
      rvalue(stpt);
   while (1) {
      if ((ch() == '|') & (nch() != '|') & (nch() != '=')) {
         inbyte();
         gpush(stpt->type);
         EvalRight(heir3, stpt, &state2);
         gor(stpt->type);
         blanks();
         } 
      else
         return (0);
      }
}


static int heir3(STATE *stpt) {
   int k;
   STATE state2;

   k = heir4(stpt);
   state2.cast = state2.pointing = 0;
   blanks();
   if ((ch () != '^') | (nch() == '='))
      return (k);
   if (k)
      rvalue(stpt);
   while (1) {
      if ((ch() == '^') & (nch() != '=')){
         inbyte();
         gpush(stpt->type);
         EvalRight(heir4, stpt, &state2);
         gxor(stpt->type);
         blanks();
         } 
      else
         return (0);
      }
}


static int heir4(STATE *stpt) {
   int k;
   STATE state2;

   k = heir5(stpt);
   state2.cast = state2.pointing = 0;
   blanks();
   if ((ch() != '&') | (nch() == '|') | (nch() == '='))
      return (k);
   if (k)
      rvalue(stpt);
   while (1) {
      if ((ch() == '&') & (nch() != '&') & (nch() != '=')) {
         inbyte();
         gpush(stpt->type);
         EvalRight(heir5, stpt, &state2);
         gand(stpt->type);
         blanks();
         } 
      else
         return (0);
      }
}


static int heir5(STATE *stpt) {
   int k;
   STATE state2;

   k = heir6(stpt);
   state2.cast = state2.pointing = 0;
   blanks();
   if (!sstreq("==") &
      !sstreq("!="))
      return (k);
   if (k)
      rvalue(stpt);
	SimplyTrue = FALSE;
   while (1) {
      if (match("==")) {
      	blanks();
      	if (ch() == '0' && !(nch() == 'x' || nch() == 'X')) {
         	match("0");
            NoJump = TRUE;
				testjump(JumpOutLabel, TRUE, stpt->type);
            }
         else {
         	gpush(stpt->type);
         	EvalRight(heir6, stpt, &state2);
         	geq(stpt->type);
            }
         } 
      else 
      if (match("!=")) {
      	blanks();
      	if (ch() == '0' && !(nch() == 'x' || nch() == 'X')) {
         	match("0");
            NoJump = TRUE;
				testjump(JumpOutLabel, FALSE, stpt->type);
            }
         else {
         	gpush(stpt->type);
         	EvalRight(heir6, stpt, &state2);
         	gne(stpt->type);
            }
         } 
      else {
      	JumpPending = 1;
         return (0);
         }
      }
}


static int heir6(STATE *stpt) {
   int k;
   STATE state2;

   k = heir7(stpt);
   state2.cast = state2.pointing = 0;
   blanks();
   if ( !sstreq("<") &&
         !sstreq("<=") &&
         !sstreq(">=") &&
         !sstreq(">"))
      return (k);
   if (sstreq("<<") || sstreq(">>"))
      return (k);
   if (k)
      rvalue(stpt);
	SimplyTrue = FALSE;
   while (1) {
      if (match("<=")) {
      	blanks();
      	if (ch() == '0' && !(nch() == 'x' || nch() == 'X')) {
         	match("0");
				if (stpt->type == UCCHAR || stpt->type == UCINT)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美一区二区三区国产精品 | 国产拍欧美日韩视频二区| 一二三四社区欧美黄| 粉嫩在线一区二区三区视频| 日韩欧美一二区| 自拍视频在线观看一区二区| 国产美女一区二区三区| 欧美xxxxx牲另类人与| 亚洲综合一区二区三区| 国产一区二区免费在线| 在线观看视频一区二区欧美日韩| 欧美一区日本一区韩国一区| 五月婷婷激情综合| 欧美丰满嫩嫩电影| 亚洲大片在线观看| 欧美精品vⅰdeose4hd| 秋霞av亚洲一区二区三| 欧美男人的天堂一二区| 亚洲国产成人精品视频| 欧美专区在线观看一区| 亚洲高清中文字幕| 欧美在线三级电影| 一区二区三区在线看| 91久久精品一区二区三区| 亚洲综合男人的天堂| 欧美日韩欧美一区二区| 精品免费日韩av| 国产裸体歌舞团一区二区| 国产亚洲一区二区三区| 自拍偷拍国产精品| 欧洲国内综合视频| 日韩不卡手机在线v区| 正在播放亚洲一区| 国产高清不卡一区二区| 亚洲欧美日韩国产综合在线| 在线观看成人免费视频| 天堂av在线一区| 日韩久久一区二区| 欧美精品粉嫩高潮一区二区| 日本一区二区视频在线| 91免费观看视频| 青青草精品视频| 精品国产精品网麻豆系列 | 精品一区二区免费在线观看| 久久综合久久鬼色| 成人精品在线视频观看| 亚洲最新在线观看| 日韩欧美久久一区| 色999日韩国产欧美一区二区| 亚洲国产欧美在线人成| 精品国产一区二区精华| 91在线高清观看| 蜜桃av噜噜一区| 国产精品18久久久久久久久| 日本一区二区三级电影在线观看 | 91国产福利在线| 久久成人免费电影| 亚洲欧美日本在线| 久久人人爽爽爽人久久久| 色综合中文字幕| 亚洲第一精品在线| 国产欧美日韩视频在线观看| 97精品国产97久久久久久久久久久久| 视频一区视频二区在线观看| 一区二区三区蜜桃网| 国产乱国产乱300精品| 亚洲3atv精品一区二区三区| 国产日韩欧美在线一区| 欧美人伦禁忌dvd放荡欲情| 国产99精品视频| 日韩国产一二三区| 亚洲欧美综合另类在线卡通| 日韩免费在线观看| 在线精品视频免费播放| 不卡区在线中文字幕| 青青草视频一区| 午夜精品免费在线| 亚洲视频一区二区在线| 国产欧美日韩亚州综合| 国产伦精品一区二区三区视频青涩 | 久久精品男人天堂av| 欧美曰成人黄网| 成人成人成人在线视频| 看片的网站亚洲| 亚洲电影激情视频网站| 亚洲影视资源网| 亚洲人成精品久久久久久| 日韩欧美国产不卡| 欧美一级片在线观看| 欧美人妖巨大在线| 亚洲视频一二三| 欧美在线观看视频一区二区三区| 成人av免费网站| 成人高清在线视频| 国产精品久久久久久久久久久免费看 | 97国产一区二区| 成人午夜精品在线| 国内成人免费视频| 国产一区二区视频在线| 国产在线精品一区在线观看麻豆| 美女爽到高潮91| 麻豆91免费看| 国产综合一区二区| 国产美女视频91| 国产夫妻精品视频| 亚洲日本乱码在线观看| 欧美视频中文一区二区三区在线观看| 一本一道久久a久久精品综合蜜臀| aaa欧美大片| 色噜噜夜夜夜综合网| 色婷婷综合久色| 欧美午夜精品理论片a级按摩| 欧美专区日韩专区| 欧美一区三区四区| 精品国产91亚洲一区二区三区婷婷| 精品久久久三级丝袜| 久久先锋影音av| 激情亚洲综合在线| 亚洲乱码国产乱码精品精的特点| 亚洲少妇30p| 日韩制服丝袜先锋影音| 337p日本欧洲亚洲大胆精品| 国产色91在线| 亚洲欧美国产毛片在线| 亚洲成av人综合在线观看| 国产成人在线色| 亚洲成a人片综合在线| 日韩和的一区二区| 韩国成人精品a∨在线观看| 不卡欧美aaaaa| 欧美精品日韩一区| 久久婷婷国产综合精品青草| 国产精品伦一区二区三级视频| 久久日一线二线三线suv| 亚洲欧美另类图片小说| 日本午夜精品一区二区三区电影| 国产一区二区视频在线| 91成人在线免费观看| 久久se这里有精品| 波多野结衣中文字幕一区二区三区| 色噜噜狠狠成人中文综合| 欧美xingq一区二区| 国产精品色婷婷| 视频在线观看一区二区三区| 成人夜色视频网站在线观看| 精品视频色一区| 国产午夜久久久久| 一区二区三区蜜桃网| 国产精品资源在线观看| 欧美精品国产精品| 日韩理论片网站| 国产一区二区电影| 日韩亚洲电影在线| 中文字幕在线观看一区| 久久99久久精品| 欧美无砖砖区免费| 欧美激情资源网| 老色鬼精品视频在线观看播放| 91毛片在线观看| 欧美激情综合网| 精品综合久久久久久8888| 成人ar影院免费观看视频| 捆绑调教美女网站视频一区| 日本不卡不码高清免费观看| 色综合夜色一区| 日韩精品影音先锋| 亚洲综合久久久| 国产成人免费在线观看不卡| 欧美日韩一级二级| 国产精品卡一卡二| 久久99精品久久久久久动态图| 欧美伊人久久久久久久久影院| 国产精品天美传媒沈樵| 欧美r级在线观看| 婷婷开心激情综合| 色婷婷国产精品| 中文字幕五月欧美| 国产超碰在线一区| 精品国产sm最大网站| 免费视频一区二区| 91精品国产一区二区| 亚洲国产精品久久久久婷婷884| 91免费看片在线观看| 中文字幕一区二区三| av一区二区不卡| 中文字幕欧美一区| caoporen国产精品视频| 欧美国产丝袜视频| 久久国产精品区| 久久综合色鬼综合色| 国产乱子伦视频一区二区三区| www亚洲一区| 国产乱国产乱300精品| 日韩视频免费观看高清完整版在线观看 | 精品99999| 美女视频网站久久| 久久亚洲欧美国产精品乐播 | 看片的网站亚洲| 精品久久久久久久久久久久包黑料 | 一区二区三区影院|