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

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

?? hoc.y

?? 這是一個同樣來自貝爾實驗室的和UNIX有著淵源的操作系統, 其簡潔的設計和實現易于我們學習和理解
?? Y
字號:
%{#include "hoc.h"#define	code2(c1,c2)	code(c1); code(c2)#define	code3(c1,c2,c3)	code(c1); code(c2); code(c3)%}%union {	Symbol	*sym;	/* symbol table pointer */	Inst	*inst;	/* machine instruction */	int	narg;	/* number of arguments */	Formal	*formals;	/* list of formal parameters */}%token	<sym>	NUMBER STRING PRINT VAR BLTIN UNDEF WHILE FOR IF ELSE%token	<sym>	FUNCTION PROCEDURE RETURN FUNC PROC READ%type	<formals>	formals%type	<inst>	expr stmt asgn prlist stmtlist%type	<inst>	cond while for if begin end %type	<sym>	procname%type	<narg>	arglist%right	'=' ADDEQ SUBEQ MULEQ DIVEQ MODEQ%left	OR%left	AND%left	GT GE LT LE EQ NE%left	'+' '-'%left	'*' '/' '%'%left	UNARYMINUS NOT INC DEC%right	'^'%%list:	  /* nothing */	| list '\n'	| list defn '\n'	| list asgn '\n'  { code2(xpop, STOP); return 1; }	| list stmt '\n'  { code(STOP); return 1; } 	| list expr '\n'  { code2(printtop, STOP); return 1; }	| list error '\n' { yyerrok; }	;asgn:	  VAR '=' expr { code3(varpush,(Inst)$1,assign); $$=$3; }	| VAR ADDEQ expr	{ code3(varpush,(Inst)$1,addeq); $$=$3; }	| VAR SUBEQ expr	{ code3(varpush,(Inst)$1,subeq); $$=$3; }	| VAR MULEQ expr	{ code3(varpush,(Inst)$1,muleq); $$=$3; }	| VAR DIVEQ expr	{ code3(varpush,(Inst)$1,diveq); $$=$3; }	| VAR MODEQ expr	{ code3(varpush,(Inst)$1,modeq); $$=$3; }	;stmt:	  expr	{ code(xpop); }	| RETURN { defnonly("return"); code(procret); }	| RETURN expr	        { defnonly("return"); $$=$2; code(funcret); }	| PROCEDURE begin '(' arglist ')'		{ $$ = $2; code3(call, (Inst)$1, (Inst)$4); }	| PRINT prlist	{ $$ = $2; }	| while '(' cond ')' stmt end {		($1)[1] = (Inst)$5;	/* body of loop */		($1)[2] = (Inst)$6; }	/* end, if cond fails */	| for '(' cond ';' cond ';' cond ')' stmt end {		($1)[1] = (Inst)$5;	/* condition */		($1)[2] = (Inst)$7;	/* post loop */		($1)[3] = (Inst)$9;	/* body of loop */		($1)[4] = (Inst)$10; }	/* end, if cond fails */	| if '(' cond ')' stmt end {	/* else-less if */		($1)[1] = (Inst)$5;	/* thenpart */		($1)[3] = (Inst)$6; }	/* end, if cond fails */	| if '(' cond ')' stmt end ELSE stmt end {	/* if with else */		($1)[1] = (Inst)$5;	/* thenpart */		($1)[2] = (Inst)$8;	/* elsepart */		($1)[3] = (Inst)$9; }	/* end, if cond fails */	| '{' stmtlist '}'	{ $$ = $2; }	;cond:	   expr 	{ code(STOP); }	;while:	  WHILE	{ $$ = code3(whilecode,STOP,STOP); }	;for:	  FOR	{ $$ = code(forcode); code3(STOP,STOP,STOP); code(STOP); }	;if:	  IF	{ $$ = code(ifcode); code3(STOP,STOP,STOP); }	;begin:	  /* nothing */		{ $$ = progp; }	;end:	  /* nothing */		{ code(STOP); $$ = progp; }	;stmtlist: /* nothing */		{ $$ = progp; }	| stmtlist '\n'	| stmtlist stmt	;expr:	  NUMBER { $$ = code2(constpush, (Inst)$1); }	| VAR	 { $$ = code3(varpush, (Inst)$1, eval); }	| asgn	| FUNCTION begin '(' arglist ')'		{ $$ = $2; code3(call,(Inst)$1,(Inst)$4); }	| READ '(' VAR ')' { $$ = code2(varread, (Inst)$3); }	| BLTIN '(' expr ')' { $$=$3; code2(bltin, (Inst)$1->u.ptr); }	| '(' expr ')'	{ $$ = $2; }	| expr '+' expr	{ code(add); }	| expr '-' expr	{ code(sub); }	| expr '*' expr	{ code(mul); }	| expr '/' expr	{ code(div); }	| expr '%' expr	{ code(mod); }	| expr '^' expr	{ code (power); }	| '-' expr   %prec UNARYMINUS   { $$=$2; code(negate); }	| expr GT expr	{ code(gt); }	| expr GE expr	{ code(ge); }	| expr LT expr	{ code(lt); }	| expr LE expr	{ code(le); }	| expr EQ expr	{ code(eq); }	| expr NE expr	{ code(ne); }	| expr AND expr	{ code(and); }	| expr OR expr	{ code(or); }	| NOT expr	{ $$ = $2; code(not); }	| INC VAR	{ $$ = code2(preinc,(Inst)$2); }	| DEC VAR	{ $$ = code2(predec,(Inst)$2); }	| VAR INC	{ $$ = code2(postinc,(Inst)$1); }	| VAR DEC	{ $$ = code2(postdec,(Inst)$1); }	;prlist:	  expr			{ code(prexpr); }	| STRING		{ $$ = code2(prstr, (Inst)$1); }	| prlist ',' expr	{ code(prexpr); }	| prlist ',' STRING	{ code2(prstr, (Inst)$3); }	;defn:	  FUNC procname { $2->type=FUNCTION; indef=1; }	    '(' formals ')' stmt { code(procret); define($2, $5); indef=0; }	| PROC procname { $2->type=PROCEDURE; indef=1; }	    '(' formals ')' stmt { code(procret); define($2, $5); indef=0; }	;formals:	{ $$ = 0; }	| VAR			{ $$ = formallist($1, 0); }	| VAR ',' formals	{ $$ = formallist($1, $3); }	;procname: VAR	| FUNCTION	| PROCEDURE	;arglist:  /* nothing */ 	{ $$ = 0; }	| expr			{ $$ = 1; }	| arglist ',' expr	{ $$ = $1 + 1; }	;%%	/* end of grammar */#include <u.h>#include <libc.h>#include <bio.h>#include <ctype.h>char	*progname;int	lineno = 1;jmp_buf	begin;int	indef;char	*infile;	/* input file name */Biobuf	*bin;		/* input file descriptor */Biobuf	binbuf;char	**gargv;	/* global argument list */int	gargc;int c = '\n';	/* global for use by warning() */int	backslash(int), follow(int, int, int);void	defnonly(char*), run(void);void	warning(char*, char*);yylex(void)		/* hoc6 */{	while ((c=Bgetc(bin)) == ' ' || c == '\t')		;	if (c < 0)		return 0;	if (c == '\\') {		c = Bgetc(bin);		if (c == '\n') {			lineno++;			return yylex();		}	}	if (c == '#') {		/* comment */		while ((c=Bgetc(bin)) != '\n' && c >= 0)			;		if (c == '\n')			lineno++;		return c;	}	if (c == '.' || isdigit(c)) {	/* number */		double d;		Bungetc(bin);		Bgetd(bin, &d);		yylval.sym = install("", NUMBER, d);		return NUMBER;	}	if (isalpha(c) || c == '_' || c >= 0x80) {		Symbol *s;		char sbuf[100], *p = sbuf;		do {			if (p >= sbuf + sizeof(sbuf) - 1) {				*p = '\0';				execerror("name too long", sbuf);			}			*p++ = c;		} while ((c=Bgetc(bin)) >= 0 && (isalnum(c) || c == '_' || c >= 0x80));		Bungetc(bin);		*p = '\0';		if ((s=lookup(sbuf)) == 0)			s = install(sbuf, UNDEF, 0.0);		yylval.sym = s;		return s->type == UNDEF ? VAR : s->type;	}	if (c == '"') {	/* quoted string */		char sbuf[100], *p;		for (p = sbuf; (c=Bgetc(bin)) != '"'; p++) {			if (c == '\n' || c == Beof)				execerror("missing quote", "");			if (p >= sbuf + sizeof(sbuf) - 1) {				*p = '\0';				execerror("string too long", sbuf);			}			*p = backslash(c);		}		*p = 0;		yylval.sym = (Symbol *)emalloc(strlen(sbuf)+1);		strcpy((char*)yylval.sym, sbuf);		return STRING;	}	switch (c) {	case '+':	return follow('+', INC, follow('=', ADDEQ, '+'));	case '-':	return follow('-', DEC, follow('=', SUBEQ, '-'));	case '*':	return follow('=', MULEQ, '*');	case '/':	return follow('=', DIVEQ, '/');	case '%':	return follow('=', MODEQ, '%');	case '>':	return follow('=', GE, GT);	case '<':	return follow('=', LE, LT);	case '=':	return follow('=', EQ, '=');	case '!':	return follow('=', NE, NOT);	case '|':	return follow('|', OR, '|');	case '&':	return follow('&', AND, '&');	case '\n':	lineno++; return '\n';	default:	return c;	}}backslash(int c)	/* get next char with \'s interpreted */{	static char transtab[] = "b\bf\fn\nr\rt\t";	if (c != '\\')		return c;	c = Bgetc(bin);	if (islower(c) && strchr(transtab, c))		return strchr(transtab, c)[1];	return c;}follow(int expect, int ifyes, int ifno)	/* look ahead for >=, etc. */{	int c = Bgetc(bin);	if (c == expect)		return ifyes;	Bungetc(bin);	return ifno;}voidyyerror(char* s)	/* report compile-time error */{/*rob	warning(s, (char *)0);	longjmp(begin, 0);rob*/	execerror(s, (char *)0);}voidexecerror(char* s, char* t)	/* recover from run-time error */{	warning(s, t);	Bseek(bin, 0L, 2);		/* flush rest of file */	restoreall();	longjmp(begin, 0);}voidfpecatch(void)	/* catch floating point exceptions */{	execerror("floating point exception", (char *) 0);}voidintcatch(void)	/* catch interrupts */{	execerror("interrupt", 0);}voidrun(void)	/* execute until EOF */{	setjmp(begin);	for (initcode(); yyparse(); initcode())		execute(progbase);}voidmain(int argc, char* argv[])	/* hoc6 */{	static int first = 1;#ifdef YYDEBUG	extern int yydebug;	yydebug=3;#endif	progname = argv[0];	init();	if (argc == 1) {	/* fake an argument list */		static char *stdinonly[] = { "-" };		gargv = stdinonly;		gargc = 1;	} else if (first) {	/* for interrupts */		first = 0;		gargv = argv+1;		gargc = argc-1;	}	Binit(&binbuf, 0, OREAD);	bin = &binbuf;	while (moreinput())		run();	exits(0);}moreinput(void){	char *expr;	static char buf[64];	int fd;	static Biobuf b;	if (gargc-- <= 0)		return 0;	if (bin && bin != &binbuf)		Bterm(bin);	infile = *gargv++;	lineno = 1;	if (strcmp(infile, "-") == 0) {		bin = &binbuf;		infile = 0;		return 1;	}	if(strncmp(infile, "-e", 2) == 0) {		if(infile[2]==0){			if(gargc == 0){				fprint(2, "%s: no argument for -e\n", progname);				return 0;			}			gargc--;			expr = *gargv++;		}else			expr = infile+2;		sprint(buf, "/tmp/hocXXXXXXX");		infile = mktemp(buf);		fd = create(infile, ORDWR|ORCLOSE, 0600);		if(fd < 0){			fprint(2, "%s: can't create temp. file: %r\n", progname);			return 0;		}		fprint(fd, "%s\n", expr);		/* leave fd around; file will be removed on exit */		/* the following looks weird but is required for unix version */		bin = &b;		seek(fd, 0, 0);		Binit(bin, fd, OREAD);	} else {		bin=Bopen(infile, OREAD);		if (bin == 0) {			fprint(2, "%s: can't open %s\n", progname, infile);			return moreinput();		}	}	return 1;}voidwarning(char* s, char* t)	/* print warning message */{	fprint(2, "%s: %s", progname, s);	if (t)		fprint(2, " %s", t);	if (infile)		fprint(2, " in %s", infile);	fprint(2, " near line %d\n", lineno);	while (c != '\n' && c != Beof)		if((c = Bgetc(bin)) == '\n')	/* flush rest of input line */			lineno++;}voiddefnonly(char *s)	/* warn if illegal definition */{	if (!indef)		execerror(s, "used outside definition");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产色一区| 欧美精品一区二区久久久| 国产精品久久久99| 成人免费高清在线观看| 国产精品久久看| 成人h动漫精品| 亚洲三级免费观看| 欧美日韩你懂的| 日韩国产高清在线| 精品国产露脸精彩对白| 成人午夜看片网址| 亚洲综合色自拍一区| 欧美猛男gaygay网站| 91丨porny丨中文| 国产精品拍天天在线| 日本精品视频一区二区三区| 亚洲一区在线观看免费| 欧美一级高清片在线观看| 国产乱码精品一区二区三区忘忧草 | 欧美a一区二区| 精品国产污污免费网站入口| 国产精品一区二区在线看| 国产精品的网站| 欧美狂野另类xxxxoooo| 国产做a爰片久久毛片| 亚洲色图视频免费播放| 欧美二区三区91| 国产精品原创巨作av| 亚洲精品成人精品456| 日韩一区二区在线播放| 国产高清不卡一区二区| 亚洲午夜免费视频| 精品国产乱码久久久久久蜜臀 | av在线不卡免费看| 日韩中文字幕一区二区三区| 国产色婷婷亚洲99精品小说| 在线视频国内自拍亚洲视频| 精品在线视频一区| 亚洲激情av在线| 精品动漫一区二区三区在线观看| 91亚洲午夜精品久久久久久| 开心九九激情九九欧美日韩精美视频电影| 欧洲一区二区三区免费视频| 极品美女销魂一区二区三区免费| 亚洲欧洲99久久| 日韩一区二区三区av| 99精品视频在线播放观看| 久久精品久久精品| 亚洲国产中文字幕在线视频综合 | 国产精品1024久久| 偷拍日韩校园综合在线| 国产精品三级在线观看| 日韩午夜激情av| 欧美影视一区在线| 成人黄色免费短视频| 精品在线观看视频| 婷婷中文字幕综合| 综合欧美亚洲日本| 国产精品网曝门| 久久精品日产第一区二区三区高清版 | 色呦呦国产精品| 国产真实精品久久二三区| 亚洲第一在线综合网站| 亚洲欧美国产三级| 日韩美女视频19| 国产精品国产精品国产专区不片 | 精品在线免费视频| 奇米影视一区二区三区| 香蕉av福利精品导航| 亚洲欧洲国产专区| 国产精品久久久久桃色tv| 欧美精品一区二区三区久久久| 欧美二区乱c少妇| 欧美色综合久久| 色婷婷av一区二区三区gif| 高清国产午夜精品久久久久久| 国产一区二区不卡在线| 国内精品免费**视频| 精品伊人久久久久7777人| 另类综合日韩欧美亚洲| 麻豆国产精品视频| 久久99精品久久久久久动态图| 久久精品免费看| 激情文学综合丁香| 国产精品综合久久| 国产成人在线视频免费播放| 国产精品一区在线观看你懂的| 日韩av不卡在线观看| 另类小说色综合网站| 久久国产尿小便嘘嘘| 加勒比av一区二区| 成人午夜av电影| av色综合久久天堂av综合| 91欧美激情一区二区三区成人| 色综合咪咪久久| 欧美在线你懂的| 5月丁香婷婷综合| 精品国产伦理网| 国产精品乱子久久久久| 国产精品久久久久一区二区三区| 国产精品久久久久久亚洲毛片| 亚洲免费观看高清完整版在线| 亚洲黄色小视频| 日韩高清不卡在线| 国产一区二区伦理片| 成人性色生活片免费看爆迷你毛片| 97超碰欧美中文字幕| 欧美视频一区在线| 日韩精品一区二区三区老鸭窝| 久久午夜羞羞影院免费观看| 国产精品天天看| 性感美女极品91精品| 韩国v欧美v日本v亚洲v| 99re热这里只有精品视频| 欧美在线影院一区二区| 精品免费视频一区二区| 最近中文字幕一区二区三区| 午夜精品久久久久影视| 国产一区二区三区美女| 在线亚洲免费视频| 久久综合九色综合97婷婷| 亚洲色欲色欲www| 久久成人免费电影| 99国产欧美久久久精品| 欧美一区二区啪啪| 中文字幕一区二区视频| 日韩午夜小视频| 51精品国自产在线| 国产欧美日韩精品在线| 依依成人精品视频| 国内精品国产成人国产三级粉色| 国产精品自在欧美一区| 制服丝袜中文字幕一区| 国产精品亲子伦对白| 国产一区二区中文字幕| 精品久久久久久久久久久院品网| 亚洲婷婷国产精品电影人久久| 国产精品一二三| 色94色欧美sute亚洲线路一ni| 精品少妇一区二区三区| 午夜精品福利一区二区三区av| 成人av在线资源网| 久久综合狠狠综合久久综合88| 一区二区三区精品视频在线| 国产v综合v亚洲欧| 精品va天堂亚洲国产| 午夜精品久久久久久久 | 欧美电影免费观看完整版| 亚洲精品日韩专区silk| 成人综合在线网站| 欧美精品一区二区在线播放| 午夜电影一区二区| 欧美影院午夜播放| 亚洲青青青在线视频| 成人性生交大合| 久久久久99精品一区| 蜜桃在线一区二区三区| 91精品国产一区二区人妖| 亚洲电影一级片| 91在线视频免费观看| 国产精品美女久久久久久2018| 久久99国产乱子伦精品免费| 日韩色在线观看| 免费看欧美美女黄的网站| 欧美人体做爰大胆视频| 一区二区三区在线免费观看| 色哟哟一区二区在线观看| 国产精品久久久久久久久久免费看 | 日韩中文字幕av电影| 欧美日韩精品免费| 亚洲国产一二三| 在线观看视频欧美| 亚洲愉拍自拍另类高清精品| 日本韩国欧美三级| 一区二区不卡在线播放| 欧美中文字幕亚洲一区二区va在线 | 欧美伦理影视网| 日韩精品国产精品| 欧美久久久久久久久中文字幕| 一区二区三区不卡视频| 欧美色爱综合网| 视频一区二区三区在线| 91精品国产综合久久福利软件| 日本视频在线一区| 欧美精品一区二区久久婷婷| 国产精品影视在线观看| 国产精品福利一区二区| 色噜噜狠狠色综合中国| 亚洲va韩国va欧美va精品| 5858s免费视频成人| 国产一区美女在线| 日本一二三不卡| 91丨porny丨蝌蚪视频| 亚洲国产wwwccc36天堂| 欧美一级一级性生活免费录像| 国产一区欧美日韩| 亚洲美女在线国产| 欧美一区二区视频观看视频| 国内外成人在线视频| 最新不卡av在线|