Exemplo n.º 1
0
static int pexpi (int k) {
    int ei0, ei1, ei2, ptok;

    if (lextab[k][0] == 0)
        return pexp5 ();

    if ((ei0 = pexpi (k + 1)) == -1) {
        SUwarning (0, "pexpi", "cannot create first expression");
        return -1;
    }
    while ((ptok = getop (EEltok, k)) != -1) {
        if ((ei1 = EEcnew (ptok)) == -1) {
            SUwarning (0, "pexpi", "cannot create code");
            return -1;
        }
        EEcsetfp (ei1, ei0);
        EElgtok ();
        if ((ei2 = pexpi (k + 1)) == -1) {
            SUwarning (0, "pexpi", "cannot create next expression");
            return -1;
        }
        EEcsetnext (ei0, ei2);
        ei0 = ei1;
    }
    return ei0;
}
Exemplo n.º 2
0
static int pexp5 (void) {
    int ei0, ei1;

    if (Ltok == L_MINUS) {
        ei0 = Cnew (C_UMINUS);
        Lgtok ();
        ei1 = pexp5 ();
        Csetfp (ei0, ei1);
        return ei0;
    }
    return pexp6 ();
}
Exemplo n.º 3
0
static int pexpi (int k) {
    int ei0, ei1, ei2, ptok;

    if (lextab[k][0] == 0)
        return pexp5 ();

    ei0 = pexpi (k + 1);
    while ((ptok = getop (Ltok, k)) != -1) {
        ei1 = Cnew (ptok);
        Csetfp (ei1, ei0);
        Lgtok ();
        ei2 = pexpi (k + 1);
        Csetnext (ei0, ei2);
        ei0 = ei1;
    }
    return ei0;
}
Exemplo n.º 4
0
static int pexp5 (void) {
    int ei0, ei1;

    if (EEltok == L_MINUS) {
        if ((ei0 = EEcnew (C_UMINUS)) == -1) {
            SUwarning (0, "pexp5", "cannot create code");
            return -1;
        }
        EElgtok ();
        if ((ei1 = pexp5 ()) == -1) {
            SUwarning (0, "pexp5", "cannot create expression");
            return -1;
        }
        EEcsetfp (ei0, ei1);
        return ei0;
    }
    return pexp6 ();
}