Exemple #1
0
Funs *parse() {
  current.kind = tNONE;
  int x = setjmp(escape);
  if (x == 0) {
    return funs();
  } else {
    return 0;
  }
}
 FunctionEntry(
     const char *name,
     void (*handler)(INTERNAL_FUNCTION_PARAMETERS),
     ArgInfoSequence argInfos,
     const FUNS&... funs
 )
 : argInfos_(std::move(argInfos))
 , functionEntry_{
       name,
       handler,
       argInfos_.argInfo(),
       static_cast<zend_uint>(argInfos_.size()),
       0
   }
 , doNothing_(funs(*this)...)
 {}
Exemple #3
0
/* <fun> <fun> <fun> ... */
static Funs *funs() {
  Funs *p = 0;
  Fun *first = fun();

  if (first) {
    p = NEW(Funs);
    p->first = first;
    p->rest = funs();
    if (p->rest) {
      p->n = p->rest->n + 1;
    } else {
      p->n = 1;
    }
  }

  if (!isEnd())
    error();

  return p;
}
Exemple #4
0
int var_eval(char *orig, int len, char *dest, int max_len)
{
	int nb = 0, i, j, off;
	char var[VAR_LENGTH + 1];
	memset(var, 0, sizeof(var));
	strncpy(var, orig + 1, len - 1);
	for (i = 0; sym[i] != NULL; i++)
		for (j = 0; sym[i][j].name; j++)
			if (!strncmp(sym[i][j].name, var, strlen(sym[i][j].name)))
			{
				switch (sym[i][j].type)
				{
				case VAR_UINT8:
					nb = snprintf(dest, max_len, "%d",
							(int) ((*(uint8_t *) sym[i][j].addr)
									* sym[i][j].multiplier));
					break;
				case VAR_INT8:
					nb = snprintf(dest, max_len, "%d",
							(int) ((*(int8_t *) sym[i][j].addr)
									* sym[i][j].multiplier));
					break;
				case VAR_UINT16:
					nb = snprintf(dest, max_len, "%d",
							(int) ((*(uint16_t *) sym[i][j].addr)
									* sym[i][j].multiplier));
					break;
				case VAR_INT16:
					nb = snprintf(dest, max_len, "%d",
							(int) ((*(int16_t *) sym[i][j].addr)
									* sym[i][j].multiplier));
					break;
				case VAR_INT:
					nb = snprintf(dest, max_len, "%d",
							(int) ((*(int *) sym[i][j].addr)
									* sym[i][j].multiplier));
					break;

				case VAR_STRING:
					nb = snprintf(dest, max_len, "%s", (char *) sym[i][j].addr);
					break;

				case VAR_PSTRING:
					nb = snprintf(dest, max_len, "%s",
							*(char **) sym[i][j].addr);
					break;

				case VAR_FLOAT:
					nb = snprintf(dest, max_len, "%f",
							(*(float *) sym[i][j].addr) * sym[i][j].multiplier);
					break;

				case VAR_HEX:
					nb = snprintf(dest, max_len, "0x%x",
							*(int *) sym[i][j].addr);
					break;

				case VAR_ARRAY_INT:
				case VAR_ARRAY_FLOAT:
				case VAR_ARRAY_HEX:
				case VAR_ARRAY_UINT16:
				case VAR_ARRAY_INT16:
				case VAR_ARRAY_UINT8:
				case VAR_ARRAY_INT8:
				case VAR_ARRAY_STRING:
				case VAR_ARRAY_PSTRING:
					off = map_intd(var + strlen(sym[i][j].name), NULL, 0);
					if (off >= 0 && off < sym[i][j].len)
					{
						char *p = (((char *) sym[i][j].addr)
								+ off * sym[i][j].skip);
						switch (sym[i][j].type)
						{
						case VAR_ARRAY_UINT8:
							nb =
									snprintf(dest, max_len, "%d",
											(int) (*(uint8_t *) p
													* sym[i][j].multiplier));
							break;
						case VAR_ARRAY_INT8:
							nb =
									snprintf(dest, max_len, "%d",
											(int) (*(int8_t *) p
													* sym[i][j].multiplier));
							break;
						case VAR_ARRAY_UINT16:
							nb = snprintf(dest, max_len, "%d",
									(int) (*(uint16_t *) p
											* sym[i][j].multiplier));
							break;
						case VAR_ARRAY_INT16:
							nb =
									snprintf(dest, max_len, "%d",
											(int) (*(int16_t *) p
													* sym[i][j].multiplier));
							break;
						case VAR_ARRAY_INT:
							nb = snprintf(dest, max_len, "%d",
									(int) (*(int *) p * sym[i][j].multiplier));
							break;
						case VAR_ARRAY_FLOAT:
							nb =
									snprintf(dest, max_len, "%f",
											(float) (*(float *) p
													* sym[i][j].multiplier));
							break;
						case VAR_ARRAY_HEX:
							nb = snprintf(dest, max_len, "0x%x",
									(int) (*(int *) p * sym[i][j].multiplier));
							break;
						case VAR_ARRAY_STRING:
							nb = snprintf(dest, max_len, "%s", p);
							break;
						case VAR_ARRAY_PSTRING:
							nb = snprintf(dest, max_len, "%s", *(char **) p);
							break;
						}
					}
					break;

				case VAR_FUNCTION_INT:
					off = map_intd(var + strlen(sym[i][j].name), NULL, 0);
					get_data_int funi = (get_data_int) sym[i][j].addr;
					nb = snprintf(dest, max_len, "%d", funi(off));
					break;

				case VAR_FUNCTION_STRING:
					off = map_intd(var + strlen(sym[i][j].name), NULL, 0);
					get_data_string funs = (get_data_string) sym[i][j].addr;
					funs(off, dest, max_len);
					nb = strlen(dest);
					if (nb > max_len)
						nb = max_len;
					break;

				}
				return nb;
			}
	return 0;
}
Exemple #5
0
void main()
{
int a[9],i,j,k=0,m,n=0,b[5]={0},l=0,c[5]={0},x=3,o;
char n1[15],n2[15];

void funs(int);
void funh(int);
int win(int,int b[],int,int c[],char n1[],char n2[],int);
clrscr();

	gotoxy(25,2);
	A;


	printf("Enter player 1");
	scanf("%s",n1);

	printf("\nEnter player 2");

	scanf("%s",n2);

	printf(" --- --- ---\n");
	printf("| 1 | 2 | 3 |\n");
	printf(" --- --- ---\n");
	printf("| 4 | 5 | 6 |\n");
	printf(" --- --- ---\n");
	printf("| 7 | 8 | 9 |\n");
	printf(" --- --- ---\n");

	printf("Take your move between 1 to 9\n");
	printf("Who wants 1st move ?\n");
	printf("press 1 for %s ",n1);
	printf("press 2 for %s ",n2);
	scanf("%d",&m);
	o=m;

	clrscr();
	A;

	printf(" --- --- ---\n");
	printf("|   |   |   |\n");
	printf(" --- --- ---\n");
	printf("|   |   |   |\n");
	printf(" --- --- ---\n");
	printf("|   |   |   |\n");
	printf(" --- --- ---\n");

	for(i=0;i<=9;i++)
	{
	     x =  win(5,b,5,c,n1,n2,m);
	      if((o==1 && (x==0 && m >=10)) || (o==2&& x==0 && m >=11))

			  {
			  gotoxy(25,12);
			  printf("GAME DRAW");

			  }


		if(x==1)
		 {
		  break;
		 }
		m++;
		if(m%2==0)
		{
			gotoxy(1,9);
			hi:

			printf("\n\n%s's Turn : ",n1);
			scanf("%d",&n);

			a[i]=n;
			b[l]=n;



				for(j=0;j<i;j++)
				{
					if(a[j]==n)
					{
				    printf("Invalid move\n");
					    goto hi;
					}
				}
				l++;

				funs(n);

		}
		else
		{
			gotoxy(1,8);
			hi1:
			printf("\n\n%s's Turn : ",n2);
			scanf("%d",&n);
			a[i]=n;
			c[k]=n;
				for(j=0;j<i;j++)
				{
					if(a[j]==n)
					{
					    printf("Invalid move\n");
					    goto hi1;
					}
				}
				k++;
				funh(n);

		}
	}


getch();

}