Pristine Ack-5.5
[Ack-5.5.git] / lang / cem / cpp.ansi / macro.str
1 /*
2  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3  * See the copyright notice in the ACK home directory, in the file "Copyright".
4  */
5 /* $Id: macro.str,v 1.5 1994/06/24 11:37:40 ceriel Exp $ */
6 /* PREPROCESSOR: DEFINITION OF MACRO DESCRIPTOR */
7
8 /*      The flags of the mc_flag field of the macro structure. Note that
9         these flags can be set simultaneously.
10 */
11 #define NOFLAG          0               /* no special flags     */
12 #define FUNC            0x1             /* function attached    */
13 #define NOUNDEF         0x2             /* reserved macro       */
14 #define NOREPLACE       0x4             /* prevent recursion    */
15
16 #define FORMALP 0200    /* mask for creating macro formal parameter     */
17
18 /*      The macro descriptor is very simple, except the fact that the
19         mc_text, which points to the replacement text, contains the
20         non-ascii characters \201, \202, etc, indicating the position of a
21         formal parameter in this text.
22 */
23 struct macro    {
24         char *  mc_text;        /* the replacement text         */
25         int     mc_nps;         /* number of formal parameters  */
26         int     mc_length;      /* length of replacement text   */
27         char    mc_flag;        /* marking this macro           */
28 };
29
30 /* ALLOCDEF "macro" 20 */
31
32 /* `token' numbers of keywords of command-line processor
33 */
34 #define K_UNKNOWN       0
35 #define K_DEFINE        1
36 #define K_ELIF          2
37 #define K_ELSE          3
38 #define K_ENDIF         4
39 #define K_ERROR         5
40 #define K_IF            6
41 #define K_IFDEF         7
42 #define K_IFNDEF        8
43 #define K_INCLUDE       9
44 #define K_LINE          10
45 #define K_PRAGMA        11
46 #define K_UNDEF         12
47 #define K_FILE          100     /* for dependency generator */