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

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

?? expr.c

?? Outputs messages to a 2line LCD
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* 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)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一二三区| 91丨九色丨国产丨porny| 在线不卡a资源高清| 亚洲一区欧美一区| 欧美精品一二三| 美女在线观看视频一区二区| 欧美电影免费观看高清完整版在线 | 国产成人免费在线视频| 亚洲欧美日韩中文字幕一区二区三区| 欧美一级夜夜爽| 日本韩国一区二区| 精品一区二区三区视频在线观看 | 欧美色图免费看| 风间由美一区二区三区在线观看| 日本视频中文字幕一区二区三区| 自拍偷拍国产亚洲| 国产午夜精品一区二区三区嫩草| 91传媒视频在线播放| 国产精品99久久久久久似苏梦涵| 日韩二区在线观看| 亚洲超碰97人人做人人爱| 综合婷婷亚洲小说| 中文字幕不卡三区| 久久日韩精品一区二区五区| 884aa四虎影成人精品一区| av电影天堂一区二区在线| 国产成人在线视频免费播放| 国内精品在线播放| 国内精品久久久久影院薰衣草 | 亚洲一区在线观看视频| 一区二区中文字幕在线| 久久青草欧美一区二区三区| 日韩一区二区三区视频在线观看| 91精品国产综合久久精品图片 | 亚洲国产日韩a在线播放| 亚洲日本va在线观看| ...av二区三区久久精品| 国产精品久久久久久久裸模| 国产欧美一区二区三区网站| 久久精品网站免费观看| 久久精品夜色噜噜亚洲a∨| 久久久精品中文字幕麻豆发布| 精品成人免费观看| 欧美一级欧美一级在线播放| 91精品国产一区二区| 在线播放国产精品二区一二区四区 | 国内精品写真在线观看| 国产在线一区二区| 精品在线播放午夜| 国产盗摄一区二区三区| 成人免费三级在线| 色综合天天性综合| 在线观看区一区二| 欧美久久一二三四区| 91精品国产综合久久精品性色| 日韩欧美一区二区视频| 久久一区二区视频| 国产精品电影院| 一区二区三区日韩精品视频| 亚洲成人激情av| 久久精品国产一区二区| 国产成人在线网站| 91黄色在线观看| 欧美一三区三区四区免费在线看 | 国产精品的网站| 一个色综合av| 麻豆久久久久久久| 成人v精品蜜桃久久一区| 色婷婷久久久综合中文字幕| 欧美精品日日鲁夜夜添| 久久精品视频在线看| 亚洲激情中文1区| 奇米亚洲午夜久久精品| 国产ts人妖一区二区| 在线中文字幕一区二区| 91精品午夜视频| 欧美激情资源网| 亚洲欧美国产高清| 麻豆精品久久精品色综合| 成人国产一区二区三区精品| 欧美午夜一区二区| 久久久.com| 午夜久久福利影院| 国产福利精品一区二区| 欧美日韩国产区一| 国产精品网站一区| 午夜成人免费视频| 成人国产免费视频| 欧美一区二区三区在线电影| 国产精品久久夜| 美日韩一级片在线观看| 色狠狠色狠狠综合| 久久女同精品一区二区| 亚洲第一会所有码转帖| 懂色av一区二区三区免费观看| 欧美日韩一区三区四区| 国产精品少妇自拍| 毛片不卡一区二区| 在线一区二区视频| 国产丝袜在线精品| 亚洲h动漫在线| 色综合久久综合中文综合网| 久久精品一区八戒影视| 日韩激情中文字幕| 色婷婷综合久久久久中文一区二区| 日韩免费福利电影在线观看| 亚洲精品五月天| 粉嫩久久99精品久久久久久夜 | 日韩一区日韩二区| 国产自产视频一区二区三区| 欧美日韩第一区日日骚| 国产精品三级久久久久三级| 国产一区二区三区久久久| 欧美猛男超大videosgay| 亚洲视频一区二区在线观看| 国产美女久久久久| 日韩一本二本av| 午夜日韩在线电影| 欧美午夜理伦三级在线观看| 综合久久久久久| 成年人网站91| 国产区在线观看成人精品| 久久97超碰国产精品超碰| 欧美福利电影网| 天天综合网天天综合色| 欧美影院精品一区| 玉足女爽爽91| 99精品在线免费| 国产精品传媒在线| 欧美一区二区三区小说| 亚洲福利视频三区| 在线观看日韩精品| 亚洲一区二区视频在线| 一本大道久久a久久综合婷婷| 中文在线一区二区| 不卡免费追剧大全电视剧网站| 久久精品一区蜜桃臀影院| 狠狠色丁香久久婷婷综| 久久久久国产成人精品亚洲午夜| 国产一区二区在线电影| 精品国产91乱码一区二区三区| 奇米色一区二区三区四区| 日韩免费看的电影| 国产毛片精品一区| 久久奇米777| www.久久精品| 亚洲精品亚洲人成人网| 欧美日韩久久久| 亚洲一区二区三区四区在线观看 | 国产欧美日韩另类一区| 国产一区二区91| 国产日产欧美一区| 99久久精品免费| 亚洲第一激情av| 欧美一级xxx| 国产传媒一区在线| 国产精品色噜噜| 欧美亚洲自拍偷拍| 免费在线观看视频一区| 337p粉嫩大胆噜噜噜噜噜91av| 国产一区二区调教| 亚洲免费av高清| 777亚洲妇女| 国产盗摄一区二区| 综合在线观看色| 7777精品伊人久久久大香线蕉的 | 午夜精品国产更新| 日韩欧美国产综合一区| 国产精品一二三区在线| 亚洲精选免费视频| 欧美一级理论片| 成人午夜视频网站| 亚洲专区一二三| 精品欧美一区二区在线观看| va亚洲va日韩不卡在线观看| 亚洲成人777| 国产欧美日韩亚州综合| 在线观看网站黄不卡| 久久er精品视频| 亚洲人成网站在线| 日韩精品中文字幕一区| 99在线视频精品| 久久国产婷婷国产香蕉| 中文字幕在线不卡国产视频| 欧美一区午夜精品| 99re免费视频精品全部| 天堂蜜桃一区二区三区| 国产欧美日韩麻豆91| 51午夜精品国产| 不卡的av在线| 久国产精品韩国三级视频| 亚洲黄色性网站| 久久久91精品国产一区二区精品| 在线观看欧美日本| 丁香五精品蜜臀久久久久99网站| 午夜影院久久久| 亚洲免费观看高清完整版在线观看| 日韩视频永久免费| 欧美综合亚洲图片综合区| 国产成人在线电影|