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

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

?? mfcalc.y

?? 和YACC一樣
?? Y
字號:
/* !declBegin! */%{#include <ctype.h>#include <math.h>#include <stdio.h>int yylex(void);void yyerror(const char *errMsg);/* Typedef typical unary <math.h> function. */typedef double (*MathFnP)(double input);/* Interface to symbol table. */static double getIDVal(const char *name);static MathFnP getIDFn(const char *name);static void setIDVal(const char *name, double val);static void setIDFn(const char *name, MathFnP fnP);%}%union {  double val;	  	/* For returning numbers. */  const char *id;  	/* For returning identifiers. */}%token <val>  NUM_TOK  	/* Double precision number */%token <id>   ID_TOK	/* Identifiers. */%type  <val>  exp%right '='%left '-' '+'%left '*' '/'%left NEG		/* Negation--unary minus */%right '^'    		/* Exponentiation *//* Grammar follows */%%/* !declEnd! *//* !gramBegin! */input  : /* empty */  | input line  ;line  : '\n'  | exp '\n'   		{ printf ("\t%.10g\n", $1); }  | error '\n' 		{ yyerrok; }  ;/* !gramXBegin! */exp  : ID_TOK 		{ $$= getIDVal($1); }  | ID_TOK '=' exp   	{ setIDVal($1, $3); $$= $3; }  | ID_TOK '(' exp ')' 	{ $$= (*(getIDFn($1)))($3); }/* !gramXEnd! */  | NUM_TOK  | exp '+' exp   	{ $$= $1 + $3; }  | exp '-' exp   	{ $$= $1 - $3; }  | exp '*' exp   	{ $$= $1 * $3; }  | exp '/' exp   	{ $$= $1 / $3; }  | '-' exp  %prec NEG 	{ $$= -$2; }  | exp '^' exp   	{ $$= pow($1, $3); }  | '(' exp ')'   	{ $$= $2; }  ;/* End of grammar */%%/* !gramEnd! *//* !strBegin! *//* String space ADT to map identifiers into IDNums. */typedef struct Ident {  const char *name;	/* NUL-terminated chars of identifier. */  struct Ident *succ;	/* Next entry in linear chain. */} Ident;/* The string space is a chain of Ident's. */static Ident *strSpace;static const char *getID(const char *name){  Ident *p;  for (p= strSpace; p != NULL; p= p->succ) {    if (strcmp(name, p->name) == 0) break;  }  if (!p) {    p= malloc(sizeof(Ident));    p->name= name;    p->succ= strSpace; strSpace= p;  }  return p->name;}/* !strEnd! *//* !symTypeBegin! *//* Symbol table ADT. *//* Possible types for symbols. */typedef enum { VAR_SYM, FN_SYM } SymType;typedef struct Sym {  const char *name;	/* Name of symbol. */  SymType type;		/* Type of symbol. */  union {    double var; 	/* Value of a VAR_SYM. */    MathFnP fn;		/* Value of a FN_SYM. */  } value;  struct Sym *succ;  	/* Link field. */} Sym;/* The symbol table: a chain of Sym's.*/static Sym *symTab;/* !symTypeEnd! *//* !getSymBegin! *//* Search symTab for name.  If doCreate, then create an entry for * it if it is not there.  Return pointer to Sym entry. */static Sym *getSym(const char *name, unsigned doCreate) {  Sym *p;  for (p= symTab; p != NULL && p->name != name; p= p->succ) ;  if (p == NULL && doCreate) {    p= malloc(sizeof(Sym));     p->name= name; p->succ= symTab; symTab= p;  }  return p;}/* !getSymEnd! *//* !getValBegin! *//* Get value associated with name; signal error if not ok. */static double getIDVal(const char *name){  const Sym *p= getSym(name, 0);  double val= 1.0; /* A default value. */  if (!p) fprintf(stderr, "No value for %s.\n", name);  else if (p->type != VAR_SYM)     fprintf(stderr, "%s is not a variable.\n", name);  else val= p->value.var;  return val;}/* Get function associated with name; signal error if not ok. */static MathFnP getIDFn(const char *name){  const Sym *p= getSym(name, 0);  MathFnP fn= sin; /* A default value. */  if (!p) fprintf(stderr, "No value for %s.\n", name);  else if (p->type != FN_SYM)     fprintf(stderr, "%s is not a function.\n", name);  else fn= p->value.fn;  return fn;}/* !getValBegin! *//* !setSymBegin! *//* Unconditionally set name to a VAR_SYM with value val. */static void setIDVal(const char *name, double val){  Sym *p= getSym(name, 1);  p->type= VAR_SYM; p->value.var= val;}/* Unconditionally set name to a FN_SYM with fn ptr fnP. */static void setIDFn(const char *name, MathFnP fnP){  Sym *p= getSym(name, 1);  p->type= FN_SYM; p->value.fn= fnP;}/* !setSymEnd! *//* !initSymBegin! *//* Initial functions. */struct {   const char *name; 	/* Name of function. */  MathFnP fn;		/* Corresponding <math.h> function. */} initFns[]= {  { "sin", sin },  { "cos", cos },  { "atan", atan },  { "ln", log },  { "exp", exp },  { "sqrt", sqrt }};static voidinitSyms(void){  const unsigned n= sizeof(initFns)/sizeof(initFns[0]);  unsigned i;  for (i= 0; i < n; i++) {    setIDFn(getID(initFns[i].name), initFns[i].fn);  }}/* !initSymEnd! *//* !readIDBegin! *//* Read alphanumerics from stdin into a buffer.  Check * if identical to previous ident: if so return pointer * to previous, else return pointer to new buffer. * Assumes char after ident is not an EOF. */static const char *readID(void){  enum { SIZE_INC= 40 };  unsigned size= SIZE_INC;  char *buf= malloc(size);  unsigned i= 0;  int c;	  const char *ident;      do { /* Accumulate stdin into strSpace. */    c= getchar();    if (i >= size) buf= realloc(buf, size*= 2);    buf[i++]= c;  } while (isalnum(c));  ungetc(c, stdin); buf[i - 1]= '\0'; /* Undo extra read. */  buf= realloc(buf, i); /* Resize buf to be only as big as needed. */  ident= getID(buf);	/* Search string-space. */  if (ident != buf) free(buf); /* Previously existed. */  return ident;}/* !readIDEnd! */intyylex(void){  int c;  /* Ignore whitespace, get first nonwhite character.  */  while ((c= getchar ()) == ' ' || c == '\t') ;  if (c == EOF)    return 0;  /* Char starts a number => parse the number.    */  if (c == '.' || isdigit (c)) {    ungetc (c, stdin);    scanf ("%lf", &yylval.val);    return NUM_TOK;  }/* !idLexBegin! */  /* Char starts an identifier => read the name.  */  if (isalpha(c)) {    ungetc(c, stdin);    yylval.id= readID();    return ID_TOK;  }/* !idLexEnd! */  /* Any other character is a token by itself.   */  return c;}/* Called by yyparse on error */voidyyerror(const char *s)  {  printf ("%s\n", s);}/* !mainBegin! */int main(){  initSyms();  return yyparse();}/* !mainEnd! */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色偷偷久久一区二区三区| 国产成人精品三级麻豆| 日韩中文字幕亚洲一区二区va在线| 日韩avvvv在线播放| 99久久久国产精品免费蜜臀| 欧美三级电影网| 国产精品久99| 国产精品一线二线三线精华| 欧美日本国产视频| 亚洲激情第一区| 国产91对白在线观看九色| 日韩欧美国产麻豆| 午夜久久久影院| 色妹子一区二区| av在线播放一区二区三区| 日韩福利电影在线| 97精品视频在线观看自产线路二| 欧美一二三在线| 亚洲国产另类精品专区| 91在线视频免费91| 亚洲国产电影在线观看| 国产乱一区二区| 精品成人在线观看| 国内精品嫩模私拍在线| 日韩午夜激情视频| 日本欧美大码aⅴ在线播放| 欧美色视频在线| 亚洲午夜私人影院| 欧美色视频一区| 亚洲成人精品一区| 欧美日韩不卡在线| 亚洲香肠在线观看| 欧美二区乱c少妇| 午夜一区二区三区在线观看| 欧美日韩一级视频| 国产精品福利影院| 国产亚洲成年网址在线观看| 毛片不卡一区二区| 日韩三级视频在线看| 蜜桃av一区二区| 日韩欧美一二三| 精品亚洲国内自在自线福利| 亚洲精品一区二区三区香蕉| 狠狠色综合日日| 亚洲国产电影在线观看| 成人黄色电影在线 | 色狠狠综合天天综合综合| 亚洲欧美日韩一区二区| 欧美中文字幕一区| 午夜精品123| 精品国内片67194| 国产**成人网毛片九色 | 亚洲精品福利视频网站| 色婷婷综合久久久久中文一区二区| 亚洲精品中文在线观看| 91免费国产在线观看| 亚洲一区二区中文在线| 911精品产国品一二三产区| 老司机午夜精品| 欧美激情一区在线| 欧美影视一区在线| 蜜臀av一区二区| 国产精品天干天干在线综合| 日本韩国欧美一区二区三区| 日本vs亚洲vs韩国一区三区二区| 久久色视频免费观看| 91在线播放网址| 日韩一区精品字幕| 久久久欧美精品sm网站| 在线这里只有精品| 激情五月激情综合网| 亚洲精品视频免费看| 欧美精品一区二区精品网| 色婷婷一区二区三区四区| 麻豆精品一区二区综合av| 亚洲特黄一级片| 欧美本精品男人aⅴ天堂| 色吧成人激情小说| 国产精品一区二区久久不卡| 精品在线免费观看| 亚洲美女在线国产| 久久久久久久久蜜桃| 欧美日韩精品免费观看视频| 成人午夜激情视频| 久久成人免费网| 亚洲成人精品一区二区| 国产精品久久久久久久久快鸭| 欧美一级xxx| 欧美影视一区在线| 91免费视频网址| 国产成人综合亚洲91猫咪| 日本中文字幕一区二区有限公司| 日韩理论电影院| 欧美激情一区二区在线| 欧美精品一区二区三区高清aⅴ| 欧美影院精品一区| 色综合久久久网| 国内久久精品视频| 3atv在线一区二区三区| 岛国精品在线播放| 偷拍一区二区三区| 亚洲美女视频一区| 亚洲国产精品黑人久久久| 精品国产电影一区二区| 欧美一区二区三区在线电影| 欧美日韩第一区日日骚| 色久综合一二码| 日本精品一区二区三区高清| 成人av先锋影音| 成人app在线| 国产mv日韩mv欧美| 国产91色综合久久免费分享| 国内国产精品久久| 国产另类ts人妖一区二区| 美女视频黄 久久| 蜜桃精品视频在线观看| 老司机精品视频一区二区三区| 视频在线观看91| 日韩经典中文字幕一区| 亚洲观看高清完整版在线观看 | 日本一区二区电影| 欧美激情一区在线观看| 国产免费观看久久| 国产精品国产自产拍高清av王其| 国产精品区一区二区三| 国产精品日日摸夜夜摸av| 中文字幕制服丝袜一区二区三区| 亚洲欧洲av在线| 一区二区三区在线视频观看58 | 91麻豆福利精品推荐| 一本到不卡免费一区二区| 欧洲一区二区av| 7777精品伊人久久久大香线蕉经典版下载 | 日韩视频一区在线观看| 精品少妇一区二区| 国产片一区二区| 亚洲精品免费在线观看| 亚洲一二三四在线| 久久机这里只有精品| 国产成人精品www牛牛影视| 99久久伊人久久99| 欧美日韩国产精选| 久久综合狠狠综合久久激情| 国产精品久久久一本精品| 亚洲午夜精品网| 国产精品综合网| 日本精品视频一区二区三区| 日韩一级黄色片| 国产精品不卡一区二区三区| 亚洲成av人影院| 国产91丝袜在线观看| 欧美三级中文字幕在线观看| 久久婷婷国产综合国色天香 | 久久美女高清视频| 亚洲激情五月婷婷| 韩国视频一区二区| 91成人看片片| 久久精品人人做| 亚洲二区在线观看| 国产成人福利片| 欧美顶级少妇做爰| 亚洲欧洲日韩一区二区三区| 日本人妖一区二区| 91丨国产丨九色丨pron| 精品久久久久久最新网址| 亚洲色图欧洲色图婷婷| 美女网站在线免费欧美精品| 91免费观看在线| 久久欧美中文字幕| 婷婷国产v国产偷v亚洲高清| eeuss鲁片一区二区三区| 精品乱码亚洲一区二区不卡| 黑人巨大精品欧美黑白配亚洲| 国产三级精品视频| 日韩**一区毛片| 在线精品视频一区二区三四| 国产欧美日韩综合| 精品亚洲免费视频| 欧美一级免费大片| 亚洲图片有声小说| 色婷婷综合久久久久中文| 国产精品青草综合久久久久99| 老汉av免费一区二区三区| 欧美日韩不卡一区二区| 一区二区三区成人在线视频| av电影一区二区| 国产精品毛片久久久久久久| 国产一区二区成人久久免费影院 | 老司机精品视频在线| 欧美日韩国产经典色站一区二区三区| 中文字幕一区二区三区不卡在线| 国产一区欧美一区| 精品免费国产一区二区三区四区| 视频一区二区欧美| 欧美理论电影在线| 午夜婷婷国产麻豆精品| 欧美日韩和欧美的一区二区| 亚洲综合在线视频| 欧美伊人久久久久久午夜久久久久| 亚洲欧洲综合另类|