aboutsummaryrefslogtreecommitdiff
path: root/from.h
blob: 8a77629eac1ce3cfbf0bf70126ffb3ee6c76221f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef FROM_H
#define FROM_H

#include "cgen.h"
#include "lex.h"
#include "storage.h"
#include "prv.h"
#include <stddef.h>

struct from
{
    struct from_it
    {
        enum {FR_VAL, FR_VAR} type;

        union
        {
            const struct tk *tk;
            const struct stentry *e;
        } u;
    } start, end;

    size_t block_i;
    const struct stentry *var;
};

int from(const struct lex *l, struct prv *p);
int from_id(const struct lex *l, struct prv *p);
int from_by(const struct lex *l, struct prv *p);
int from_idby(const struct lex *l, struct prv *p);
int from_cgen(const struct from *m, struct cgen *c);
void from_free(struct from *fr);

#endif