Ejemplo n.º 1
0
int
fgetc(FILE *f) {
#ifdef TRACEUART
	return (traceputchar(mygetchar()));
#else// TRACEUART
	return (mygetchar());
#endif// TRACEUART
}
Ejemplo n.º 2
0
static int get_i(){
	int c;
//	printf("entering get_i()");
	while ((c = mygetchar())< '0'){}
	int n = 0;
//	printf("n  = %d\n", n);
	while (c >= '0'){
		n = n*10 + (c - '0');
		c = mygetchar();
//		printf("inside n  = %d\n", n);
	}
	return n;
}
Ejemplo n.º 3
0
static int getop2(char *s)
{
    int c;

    /* skip the white space */
    while (isspace(c = *s = mygetchar()) && c != '\n')
        ;

    s[1] = '\0';

    if (!isdigit(c) && !issign(c) && c != '.') {
        return c;
    }

    /* scan the char after the sign */
    if (issign(c)) {
        if (isdigit(c = mygetchar())) {
            *++s = c;
        } else {
            myungetc(c);
            return *s;
        }
    }

    /* scan for the integral part */
    while (isdigit(c = mygetchar())) {
        *++s = c;
    }

    /* not a digit, is it a decimal point? */
    if (c == '.') {
        *++s = c;

        /* scan for the floating part */
        while (isdigit(c = mygetchar())) {
            *++s = c;
        }
    }

    if (c != EOF) {
        myungetc(c);
    }

    *++s = '\0';
    return NUMBER;
}
Ejemplo n.º 4
0
dem _read (memory pm)
{
int c;
dem sd0, sd1, d;
enum node node;
char buf[30];
int i;
dem used1;

debut:
	/* c = getchar (); */
	/* c = fgetc (stdin); */
	c = mygetchar ();
/*
	pm = &_memory;
	_memory.max_dems = MAX_DEMS;
*/
	switch (c)
	{
		case '.':
			exit (0);
		case '-':
			node = node_ap;
		read01:
			sd0 = _read (pm);
			sd1 = _read (pm);
			d = _mkdem (pm, node, 0, NULL, sd0, sd1);
			break;
		case '/':
			node = node_transym;
			goto read01;
		case '%':
			node = node_subst;
			goto read01;
		case '#':
			node = node_axiom;
			goto read01;
		case '\\':
			sd0 = _read (pm);
			d = _mkdem (pm, node_lambda, 0, NULL, sd0, NULL);
			break;
		case '^' :
			sd0 = _read (pm);
			sd1 = _read (pm);
			d = vlambda (sd0, sd1);
			break;
		case ' ' :
		case '\t' :
		case '\n' :
		case '\r' :
		case 0 :
			goto debut;
		case ':' :
			sd0 = _read (pm);
			sd1 = _read (pm);
			sd0->_value = sd1;
			sd1->_name = sd0->_name;
			d = sd1;
			break;
		case '<' :
			sd0 = _read (pm);
			d = lr (0, sd0);
			break;
		case '>' :
			sd0 = _read (pm);
			d = lr (1, sd0);
			break;
		case '$' :
			sd0 = _read (pm);
			d = red (sd0);
			break;
		case '@' :
			sd0 = _read (pm);
			d = reduc (sd0, 1);
			break;
		case '`':
		    used1 = used;
		    used = _read (pm);
		    d = _read (pm);
                    used = used1;
		    break;

		default :
			if ((c >= '0') && (c <= '9'))
				d = _mkdem (pm, node_var, c-'0', NULL, NULL, NULL);
			else
			{
				buf[0] = c;
				for (i=1; ; i++)
				{
					c = mygetchar ();
					if (c == ' ' || c == '\t' || c == '\n' || c == '\r')
					{
						buf[i] = 0;
						break;
					}
					buf[i] = c;
				}
				/*buf[1] = 0;*/
				d = _mkdem (pm, node_symbol, 0, buf, NULL, NULL);
				if (d->_value != NULL)
					d = d->_value;
			}
	}
	return d;
}