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

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

?? cc.y

?? 一個用flex、bison和vc開發(fā)的堆棧機
?? Y
字號:
%{
#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
#include "symbol.h" 
#include "conio.h"
#include "stkmach.h"

jmp_buf begin;
char *progname;
char *infile;
FILE *yyin;
char **gargv;
int gargc;

extern yylex();
extern int lineno;
extern Inst progp, progbase;
extern indef;
/* 
%token GT GE LT LE EQ NE OR AND NOT
%token PLUS MINUS MUL DIV
%token AS
*/
#define code2(c1,c2)	code(c1); code(c2)
#define code3(c1,c2,c3)	code(c1); code(c2); code(c3)
%}
%union {
	Inst *inst;    /* 指令 */
	symrec *tptr;  /* 符號表指針 */
	int narg;      /* 參數(shù) */
	int delim;     /* 分界符(不存入符號表中) */
	int op;		   /* 操作符(不存入符號表中) */
	char *str;	   /* 字符串(不存入符號表中) */
}

%token <delim> NL COMMA
%token <delim> LP RP LB RB
%token <op> MINUSMINUS PLUSPLUS PLUSMINUS MINUSPLUS

%token <tptr> NUMBER CONST VAR BLTIN UNDEF PRINT WHILE IF ELSE
%token <tptr> FUNCTION PROCEDURE RETURN FUNC PROC READ 
%token <narg> ARG
%token <str> STRING
%type <inst> stmt asgn expr stmtlist cond while if begin end 
%type <inst> prlist
%type <narg> arglist
%type <tptr> procname

%right AS
%left OR
%left AND
%left GT GE LT LE EQ NE
%left PLUS MINUS
%left MUL DIV
%left NEG POS NOT
%right POW
%%
list:	
	| list NL
	| list defn NL
	| list asgn NL		{ code2(pop,STOP); return 1; }
	| list expr NL		{ code2(print,STOP); return 1; }
	| list stmt NL		{ code(STOP); return 1; }
	| list error NL		{ yyerrok; }
	;
asgn: VAR AS expr			{ $$ = $3; code3(varpush, (Inst)$1, assign); }
	| ARG AS expr			
		{ defnonly("$"); code2(argassign, (Inst)$1); $$ = $3; }
	;
stmt: expr				{ code(pop); }
	| RETURN { defnonly("return"); code(procret); }
	| RETURN expr
		{ defnonly("return"); $$ = $2; code(funcret); }
	| PROCEDURE begin LP arglist RP
		{ $$ = $2; code3(call, (Inst)$1, (Inst)$4); }
	| PRINT prlist		=
		{ $$ = $2; }
	| while cond stmt end	{
								($1)[1] = (Inst)$3;     /* body of loop */
								($1)[2] = (Inst)$4;		/* end, if cond fails */
							}						
	| if cond stmt end	{	/* else-less if */
							($1)[1] = (Inst)$3;		/* thenpart*/
							($1)[3] = (Inst)$4;		/* end, if cond fails */
						}
	| if cond stmt end	ELSE stmt end {	/* if with else */
							($1)[1] = (Inst)$3;		/* thenpart*/
							($1)[2] = (Inst)$6;		/* elsepart*/
							($1)[3] = (Inst)$7;		/* end, if cond fails */
						}
	| LB stmtlist RB	{ $$ = $2; }
	;
cond:	LP expr RP		{ code(STOP); $$ = $2; }
	;
while:	WHILE	{ $$ = code3(whilecode, STOP, STOP); }
	;
if:		IF		{ $$ = code(ifcode); code3(STOP,STOP,STOP); }
	;
begin: /*nothing*/	{ $$ = progp; }
	;
end:	/* nothing */	{ code(STOP); $$ = progp; }
	;
stmtlist: /* nothing */	{ $$ = progp; }
	| stmtlist NL
	| stmtlist stmt
	;
expr:NUMBER					{ $$ = code2(constpush, (Inst)$1); }
	| CONST					{ $$ = code2(constpush, (Inst)$1); }
	| VAR					{ $$ = code3(varpush, (Inst)$1, eval); }
	| ARG					{ defnonly("$"); $$ = code2(arg, (Inst)$1); } 
	| asgn
	| FUNCTION begin LP arglist RP
							{ $$ = $2, code3(call, (Inst)$1, (Inst)$4); }
	| READ LP VAR RP		{ $$ = code2(varread, (Inst)$3); }
	| BLTIN LP expr RP		{ $$ = $3; code2(bltin, (Inst)$1->value.fnctptr); } 
	| LP expr RP			{ $$ = $2; }
	| PLUS expr %prec POS	{ $$ = $2; }
	| expr PLUS expr		{ code(add); }
	| expr MINUS expr		{ code(sub); }
	| expr MUL expr			{ code(mul); }
	| expr DIV expr			{ code(divi); }
	| expr POW expr			{ code(power); }
	| MINUS expr %prec NEG	{ $$ = $2; code(neg); }
	| 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); }
	;
prlist: expr		{ code(prexpr); }
	| STRING		{ $$ = code2(prstr, (Inst)$1); }
	| prlist COMMA expr		{ code(prexpr); }
	| prlist COMMA STRING	{ code2(prstr, (Inst)$3); }
defn:	FUNC procname { $2->type = FUNCTION; indef = 1; }
		LP RP stmt { define($2); indef = 0; }  /*code(funcret);*/
	|	PROC procname { $2->type = PROCEDURE; indef = 1; }
		LP RP stmt { define($2); indef = 0; } /*code(procret);*/
	;
procname: VAR
	| FUNCTION
	| PROCEDURE
	;
arglist: /*nothing*/		{ $$ = 0; }
	| expr					{ $$ = 1; }
	| arglist COMMA expr	{ $$ = $1 + 1; }
	;
%%
enum TOK {
	$DIM=1,$IF
};
main(int argc, char *argv[])
{
	int fpecatch();
	progname = argv[0];

	if (argc == 1) 
	{
		static char *stdinonly[] = { "-" };
		gargv = stdinonly;
		gargc = 1; 
	} 
	else	
	{
		gargv = argv + 1;
		gargc = argc - 1;
	}
	init_table();
	while (moreinput())
		run();
	return 0;
}

moreinput()
{
	if (gargc-- <= 0)
		return 0;
	infile = *gargv++;
	lineno = 1;
	if (strcmp(infile, "-") == 0)
	{
		yyin = stdin;
		infile = 0;
	}
	else if ((yyin = fopen(infile, "r")) == NULL)
	{
		fprintf(stderr, "%s: cant't open %s\n", progname, infile);
		return moreinput();
	}
	return 1;
}

run()
{
	setjmp(begin);
	signal(SIGFPE, fpecatch);
	
	for (initcode(); yyparse(); initcode())
		excute(progbase);	
}
warning(char *s, char *t)
{
	fprintf(stderr, "%s: %s", progname, s);
	if (t)
		fprintf(stderr, " %s", t);
	fprintf(stderr, " near line %d\n", lineno);
}
yyerror(char *s)
{
	warning(s,(char*) 0);
}

execerror(char *s, char *t)
{
	warning(s, t);
	longjmp(begin, 0);
}

fpecatch()
{
	execerror("floating point exception", (char *) 0);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩在线播放一区二区| 欧美在线看片a免费观看| 99久久精品国产导航| 欧美一级理论片| 国产精品久久国产精麻豆99网站| 午夜不卡av在线| 色吊一区二区三区| 国产欧美一区二区在线| 精品一区二区三区免费视频| 欧美亚洲自拍偷拍| 自拍偷在线精品自拍偷无码专区| 狠狠色丁香久久婷婷综合丁香| 欧美日韩mp4| 夜夜嗨av一区二区三区四季av| 国产1区2区3区精品美女| 日韩视频一区在线观看| 国产精品一区二区三区99| 日韩三级视频中文字幕| 亚洲不卡一区二区三区| 色偷偷久久一区二区三区| 中文字幕一区二区在线播放| 大尺度一区二区| 国产亚洲欧美日韩在线一区| 久草这里只有精品视频| 日韩一级精品视频在线观看| 午夜一区二区三区视频| 欧美三级视频在线观看| 亚洲在线视频网站| 欧美三级电影在线看| 亚洲第四色夜色| 欧美性一二三区| 亚洲成a人v欧美综合天堂下载 | 欧美极品aⅴ影院| 激情综合五月婷婷| 欧美精品一区二区高清在线观看| 91免费看`日韩一区二区| 国产日韩亚洲欧美综合| 大桥未久av一区二区三区中文| 久久久久97国产精华液好用吗| 国产一区二区三区四区五区入口 | 欧美亚洲国产bt| 亚洲一区二区三区四区在线观看 | 国产欧美日韩在线观看| 成人免费视频视频在线观看免费| 国产精品五月天| 色婷婷综合中文久久一本| 亚洲人成网站精品片在线观看| 色婷婷av一区二区三区大白胸 | 在线观看日产精品| 亚洲第四色夜色| 精品乱人伦一区二区三区| 国产激情一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 在线观看91精品国产入口| 日韩精品电影在线| 久久精品在这里| 日本乱码高清不卡字幕| 青青草97国产精品免费观看| 久久久久高清精品| 欧美视频一区二区| 国产九九视频一区二区三区| 日韩一区有码在线| 8v天堂国产在线一区二区| 国产乱码精品一区二区三区av | 久久综合九色欧美综合狠狠| 国内精品写真在线观看| 最新成人av在线| 91麻豆精品国产综合久久久久久| 在线不卡一区二区| 国产成人综合精品三级| 亚洲国产精品一区二区www | 91精品福利在线一区二区三区| 国产麻豆精品久久一二三| 亚洲免费电影在线| 2021国产精品久久精品| 在线免费亚洲电影| 国产乱码精品一区二区三区av| 一区二区三区国产精品| 精品999在线播放| 在线免费观看日本欧美| 国产成人福利片| 同产精品九九九| 国产精品不卡一区| 精品国产麻豆免费人成网站| 欧美亚洲国产一区二区三区va | 日韩午夜在线观看| 日本精品一级二级| 国产成人鲁色资源国产91色综| 亚洲国产精品一区二区久久 | 色婷婷久久一区二区三区麻豆| 青草国产精品久久久久久| 亚洲美女精品一区| 中文字幕欧美激情一区| 日韩免费观看高清完整版| 欧美日韩一区久久| 国产精品原创巨作av| 美女一区二区视频| 日韩激情一区二区| 五月激情丁香一区二区三区| 亚洲黄网站在线观看| 国产精品国产成人国产三级| 久久天天做天天爱综合色| 欧美一区二区在线观看| 欧美猛男男办公室激情| 欧美午夜精品理论片a级按摩| 91网站在线观看视频| 99久久免费精品| 成人精品免费视频| av中文字幕在线不卡| 成人sese在线| 99久久国产免费看| 色婷婷精品久久二区二区蜜臂av | 亚洲免费观看高清完整版在线| 国产精品久久久久久久第一福利 | 久久亚洲二区三区| 欧美mv日韩mv亚洲| 久久久五月婷婷| 久久久久久一级片| 欧美激情资源网| 综合中文字幕亚洲| 亚洲愉拍自拍另类高清精品| 亚洲精品少妇30p| 曰韩精品一区二区| 亚洲一卡二卡三卡四卡| 日韩精品三区四区| 国内成人自拍视频| 国产成人精品三级麻豆| 99视频精品在线| 欧美性大战久久| 欧美一级午夜免费电影| 久久久久久毛片| 日韩理论片一区二区| 伊人色综合久久天天| 日韩精品每日更新| 国产精品亚洲综合一区在线观看| 国产mv日韩mv欧美| 欧美在线视频日韩| 日韩欧美亚洲国产精品字幕久久久| 欧美精品一区二区三区在线 | 青椒成人免费视频| 国产成人在线观看| 在线免费不卡视频| 日韩亚洲欧美成人一区| 中文字幕av不卡| 亚洲成人免费视频| 夫妻av一区二区| 欧美精品一二三四| 中文av字幕一区| 日本aⅴ精品一区二区三区 | 亚洲欧洲色图综合| 免费在线欧美视频| 91色porny在线视频| 欧美一卡2卡3卡4卡| 亚洲欧美在线另类| 奇米色一区二区| 91免费看片在线观看| 精品久久99ma| 亚洲日本韩国一区| 免费的成人av| 欧美在线视频全部完| 国产欧美一区二区三区鸳鸯浴| 亚洲与欧洲av电影| hitomi一区二区三区精品| 日韩一级大片在线观看| 一级做a爱片久久| 日韩一级免费一区| 亚洲欧美日韩中文播放| 国产精品一区在线观看你懂的| 91久久精品国产91性色tv| 国产日本欧美一区二区| 免播放器亚洲一区| 欧美视频精品在线| 1区2区3区精品视频| 国产在线播放一区三区四| 6080日韩午夜伦伦午夜伦| 亚洲欧美国产毛片在线| 粉嫩aⅴ一区二区三区四区五区| 日韩一卡二卡三卡四卡| 亚洲国产cao| 欧美色区777第一页| 自拍偷拍亚洲综合| av一区二区三区在线| 国产视频一区在线播放| 紧缚奴在线一区二区三区| 91精品国产综合久久精品图片 | ㊣最新国产の精品bt伙计久久| 精品午夜久久福利影院 | 捆绑紧缚一区二区三区视频| 欧美丝袜自拍制服另类| 国产精品不卡一区二区三区| 国产伦精品一区二区三区在线观看| 日韩三级免费观看| 天天做天天摸天天爽国产一区 | 免费欧美在线视频| 欧美巨大另类极品videosbest | 奇米影视在线99精品| 日韩一级片网址| 激情国产一区二区| 久久亚洲精华国产精华液| 国产91丝袜在线18|