summaryrefslogtreecommitdiff
path: root/jam-files/engine/parse.h
blob: e324972f7b18e71a2c75b76514112392f772779a (plain)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
 * Copyright 1993, 2000 Christopher Seiwald.
 *
 * This file is part of Jam - see jam.c for Copyright information.
 */

/* This file is ALSO:
 * Copyright 2001-2004 David Abrahams.
 * Distributed under the Boost Software License, Version 1.0.
 * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 */

#ifndef PARSE_DWA20011020_H
#define PARSE_DWA20011020_H

#include "frames.h"
#include "modules.h"
#include "lists.h"

/*
 * parse.h - make and destroy parse trees as driven by the parser.
 */

/*
 * Parse tree node.
 */

struct _PARSE {
    LIST   * (* func)( PARSE *, FRAME * );
    PARSE  * left;
    PARSE  * right;
    PARSE  * third;
    char   * string;
    char   * string1;
    int      num;
    int      refs;
/*  module * module; */
    char   * rulename;
    char   * file;
    int      line;
};

void    parse_file( char *, FRAME * );
void    parse_save( PARSE * );

PARSE * parse_make(
    LIST  * (* func)( PARSE *, FRAME * ),
    PARSE * left,
    PARSE * right,
    PARSE * third,
    char  * string,
    char  * string1,
    int     num );

void   parse_refer   ( PARSE * );
void   parse_free    ( PARSE * );
LIST * parse_evaluate( PARSE *, FRAME * );

#endif