| /* |
| * 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) |
| */ |
| |
| /* |
| * parse.h - make and destroy parse trees as driven by the parser. |
| */ |
| |
| #ifndef PARSE_DWA20011020_H |
| #define PARSE_DWA20011020_H |
| |
| #include "frames.h" |
| #include "lists.h" |
| #include "modules.h" |
| |
| |
| #define PARSE_APPEND 0 |
| #define PARSE_FOREACH 1 |
| #define PARSE_IF 2 |
| #define PARSE_EVAL 3 |
| #define PARSE_INCLUDE 4 |
| #define PARSE_LIST 5 |
| #define PARSE_LOCAL 6 |
| #define PARSE_MODULE 7 |
| #define PARSE_CLASS 8 |
| #define PARSE_NULL 9 |
| #define PARSE_ON 10 |
| #define PARSE_RULE 11 |
| #define PARSE_RULES 12 |
| #define PARSE_SET 13 |
| #define PARSE_SETCOMP 14 |
| #define PARSE_SETEXEC 15 |
| #define PARSE_SETTINGS 16 |
| #define PARSE_SWITCH 17 |
| #define PARSE_WHILE 18 |
| |
| |
| /* |
| * Parse tree node. |
| */ |
| |
| typedef struct _PARSE PARSE; |
| |
| struct _PARSE { |
| int type; |
| PARSE * left; |
| PARSE * right; |
| PARSE * third; |
| OBJECT * string; |
| OBJECT * string1; |
| int num; |
| int refs; |
| OBJECT * rulename; |
| OBJECT * file; |
| int line; |
| }; |
| |
| void parse_file( OBJECT *, FRAME * ); |
| void parse_save( PARSE * ); |
| |
| PARSE * parse_make( int type, PARSE * left, PARSE * right, PARSE * third, |
| OBJECT * string, OBJECT * string1, int num ); |
| |
| void parse_refer( PARSE * ); |
| void parse_free( PARSE * ); |
| LIST * parse_evaluate( PARSE *, FRAME * ); |
| |
| #endif |